tUpdate to latest versions of automake, autoconf, gettext, and libtool. - vacci… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 70508bc27e69f00021e898a68ce3c7db2a5ac540 | |
parent 1edff0de84a71af1c637e1cfc1558eba47abc94a | |
Author: Ben Webb <[email protected]> | |
Date: Wed, 10 Jul 2013 06:27:17 +0000 | |
Update to latest versions of automake, autoconf, gettext, and libtool. | |
Diffstat: | |
M ABOUT-NLS | 1368 ++++++++++++++++++++++++++---… | |
M Makefile.am | 2 +- | |
M config.guess | 1099 ++++++++++++++++++-----------… | |
A config.rpath | 690 +++++++++++++++++++++++++++++… | |
M config.sub | 526 ++++++++++++++++++++++++-----… | |
A configure.ac | 421 +++++++++++++++++++++++++++++… | |
D configure.in | 416 -----------------------------… | |
M depcomp | 810 +++++++++++++++++++++++------… | |
M install-sh | 682 ++++++++++++++++++++++-------… | |
D intl/.cvsignore | 2 -- | |
D intl/ChangeLog | 4 ---- | |
D intl/Makefile.in | 659 -----------------------------… | |
D intl/VERSION | 1 - | |
D intl/bindtextdom.c | 340 -----------------------------… | |
D intl/config.charset | 684 -----------------------------… | |
D intl/dcgettext.c | 56 -----------------------------… | |
D intl/dcigettext.c | 1705 -----------------------------… | |
D intl/dcngettext.c | 57 -----------------------------… | |
D intl/dgettext.c | 58 ------------------------------ | |
D intl/dngettext.c | 59 -----------------------------… | |
D intl/explodename.c | 135 -----------------------------… | |
D intl/finddomain.c | 212 ------------------------------ | |
D intl/gettext.c | 63 -----------------------------… | |
D intl/gettext.h | 101 -----------------------------… | |
D intl/gettextP.h | 311 -----------------------------… | |
D intl/hash-string.h | 36 -----------------------------… | |
D intl/intl-compat.c | 133 -----------------------------… | |
D intl/l10nflist.c | 400 -----------------------------… | |
D intl/libgettext.h | 48 -----------------------------… | |
D intl/libgnuintl.h | 127 -----------------------------… | |
D intl/loadinfo.h | 132 -----------------------------… | |
D intl/loadmsgcat.c | 1333 -----------------------------… | |
D intl/localcharset.c | 549 -----------------------------… | |
D intl/locale.alias | 77 -----------------------------… | |
D intl/localealias.c | 439 ------------------------------ | |
D intl/ngettext.c | 65 -----------------------------… | |
D intl/plural.c | 1961 -----------------------------… | |
D intl/plural.y | 385 -----------------------------… | |
D intl/ref-add.sin | 31 -----------------------------… | |
D intl/ref-del.sin | 26 -------------------------- | |
D intl/textdomain.c | 127 -----------------------------… | |
M ltmain.sh | 14425 +++++++++++++++++++----------… | |
M m4/gettext.m4 | 58 ++++++++++++++++++++---------… | |
M m4/iconv.m4 | 110 +++++++++++++++++++++++------… | |
A m4/lib-ld.m4 | 119 +++++++++++++++++++++++++++++… | |
A m4/lib-link.m4 | 777 +++++++++++++++++++++++++++++… | |
A m4/lib-prefix.m4 | 224 +++++++++++++++++++++++++++++… | |
M m4/libtool.m4 | 61 ++++++++++++++++-------------… | |
A m4/ltoptions.m4 | 384 +++++++++++++++++++++++++++++… | |
A m4/ltsugar.m4 | 123 +++++++++++++++++++++++++++++… | |
A m4/ltversion.m4 | 23 +++++++++++++++++++++++ | |
A m4/lt~obsolete.m4 | 98 +++++++++++++++++++++++++++++… | |
A m4/nls.m4 | 32 +++++++++++++++++++++++++++++… | |
A m4/po.m4 | 452 +++++++++++++++++++++++++++++… | |
M m4/progtest.m4 | 21 ++++++++++----------- | |
M missing | 431 ++++++++++++-----------------… | |
M mkinstalldirs | 168 ++++++++++++++++++++++++++---… | |
M po/ChangeLog | 11 +++++++++++ | |
M po/Makefile.in.in | 19 ++++++++++++++----- | |
A po/Makevars | 53 ++++++++++++++++++++++++++++++ | |
A po/Rules-quot | 47 +++++++++++++++++++++++++++++… | |
A po/boldquot.sed | 10 ++++++++++ | |
A po/dopewars.pot | 3900 +++++++++++++++++++++++++++++… | |
A po/[email protected] | 25 +++++++++++++++++++++++++ | |
A po/[email protected] | 22 ++++++++++++++++++++++ | |
A po/insert-header.sin | 23 +++++++++++++++++++++++ | |
A po/quot.sed | 6 ++++++ | |
A po/remove-potcdate.sed | 11 +++++++++++ | |
A po/remove-potcdate.sin | 19 +++++++++++++++++++ | |
M src/Makefile.am | 2 +- | |
M src/curses_client/Makefile.am | 2 +- | |
M src/cursesport/Makefile.am | 2 +- | |
M src/gtkport/Makefile.am | 2 +- | |
M src/gui_client/Makefile.am | 2 +- | |
M src/plugins/Makefile.am | 2 +- | |
75 files changed, 20038 insertions(+), 17956 deletions(-) | |
--- | |
diff --git a/ABOUT-NLS b/ABOUT-NLS | |
t@@ -1,10 +1,11 @@ | |
-Notes on the Free Translation Project | |
-************************************* | |
+1 Notes on the Free Translation Project | |
+*************************************** | |
- Free software is going international! The Free Translation Project | |
-is a way to get maintainers of free software, translators, and users all | |
-together, so that will gradually become able to speak many languages. | |
-A few packages already provide translations for their messages. | |
+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, | |
t@@ -15,78 +16,33 @@ this package with messages translated. | |
Installers will find here some useful hints. These notes also | |
explain how users should proceed for getting the programs to use the | |
available translations. They tell how people wanting to contribute and | |
-work at translations should contact the appropriate team. | |
+work on translations can contact the appropriate team. | |
- When reporting bugs in the `intl/' directory or bugs which may be | |
-related to internationalization, you should tell about the version of | |
-`gettext' which is used. The information can be found in the | |
-`intl/VERSION' file, in internationalized packages. | |
+1.1 INSTALL Matters | |
+=================== | |
-Quick configuration advice | |
-========================== | |
- | |
- If you want to exploit the full power of internationalization, you | |
-should configure it using | |
- | |
- ./configure --with-included-gettext | |
- | |
-to force usage of internationalizing routines provided within this | |
-package, despite the existence of internationalizing capabilities in the | |
-operating system where this package is being installed. So far, only | |
-the `gettext' implementation in the GNU C library version 2 provides as | |
-many features (such as locale alias, message inheritance, automatic | |
-charset conversion or plural form handling) as the implementation here. | |
-It is also not possible to offer this additional functionality on top | |
-of a `catgets' implementation. Future versions of GNU `gettext' will | |
-very likely convey even more functionality. So it might be a good idea | |
-to change to GNU `gettext' as soon as possible. | |
- | |
- So you need _not_ provide this option if you are using GNU libc 2 or | |
-you have installed a recent copy of the GNU gettext package with the | |
-included `libintl'. | |
- | |
-INSTALL Matters | |
-=============== | |
- | |
- 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'. | |
+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. If not, the GNU `gettext' own | |
-library will be used. This library is wholly contained within this | |
-package, usually in the `intl/' subdirectory, so prior installation of | |
-the GNU `gettext' package is _not_ required. Installers may use | |
-special options at configuration time for changing the default | |
-behaviour. The commands: | |
- | |
- ./configure --with-included-gettext | |
+provides the GNU `gettext' functions. Installers may use special | |
+options at configuration time for changing the default behaviour. The | |
+command: | |
+ | |
./configure --disable-nls | |
-will respectively bypass any pre-existing `gettext' to use the | |
-internationalizing routines provided within this package, or else, | |
-_totally_ disable translation of messages. | |
+will _totally_ disable translation of messages. | |
When you already have GNU `gettext' installed on your system and run | |
configure without an option for your new package, `configure' will | |
-probably detect the previously built and installed `libintl.a' file and | |
-will decide to use this. This might be not what is desirable. You | |
-should use the more recent version of the GNU `gettext' library. I.e. | |
-if the file `intl/VERSION' shows that the library which comes with this | |
-package is more recent, you should use | |
- | |
- ./configure --with-included-gettext | |
- | |
-to prevent auto-detection. | |
+probably detect the previously built and installed `libintl' library | |
+and will decide to use it. If not, you may have to to use the | |
+`--with-libintl-prefix' option to tell `configure' where to look for it. | |
- The configuration process will not test for the `catgets' function | |
-and therefore it will not be used. The reason is that even an | |
-emulation of `gettext' on top of `catgets' could not provide all the | |
-extensions of the GNU `gettext' library. | |
- | |
- Internationalized packages have usually many `po/LL.po' files, where | |
+ Internationalized packages usually have many `po/LL.po' files, where | |
LL gives an ISO 639 two-letter code identifying the language. Unless | |
translations have been forbidden at `configure' time by using the | |
`--disable-nls' switch, all available translations are installed | |
t@@ -95,13 +51,16 @@ may be set, prior to configuration, to limit the installed… | |
`LINGUAS' should then contain a space separated list of two-letter | |
codes, stating which languages are allowed. | |
-Using This Package | |
-================== | |
+1.2 Using This Package | |
+====================== | |
- As a user, if your language has been installed for this package, you | |
+As a user, if your language has been installed for this package, you | |
only have to set the `LANG' environment variable to the appropriate | |
-`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, | |
-and `CC' is an ISO 3166 two-letter country code. For example, let's | |
+`LL_CC' combination. If you happen to have the `LC_ALL' or some other | |
+`LC_xxx' environment variables set, you should unset them before | |
+setting `LANG', otherwise the setting of `LANG' will not have the | |
+desired effect. Here `LL' is an ISO 639 two-letter language code, and | |
+`CC' is an ISO 3166 two-letter country code. For example, let's | |
suppose that you speak German and live in Germany. At the shell | |
prompt, merely execute `setenv LANG de_DE' (in `csh'), | |
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). | |
t@@ -113,6 +72,13 @@ But in fact, some languages have dialects in different cou… | |
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. | |
t@@ -124,22 +90,28 @@ system libraries. For example, some Swedish users who wo… | |
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. | |
-Translating Teams | |
-================= | |
+1.3 Translating Teams | |
+===================== | |
- For the Free Translation Project to be a success, we need interested | |
+For the Free Translation Project to be a success, we need interested | |
people who like their own language and write it well, and who are also | |
able to synergize with other translators speaking the same language. | |
Each translation team has its own mailing list. The up-to-date list of | |
teams can be found at the Free Translation Project's homepage, | |
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" | |
-area. | |
+`http://translationproject.org/', in the "Teams" area. | |
If you'd like to volunteer to _work_ at translating messages, you | |
should become a member of the translating team for your own language. | |
t@@ -153,113 +125,1125 @@ message to `[email protected]', having this message b… | |
_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 `[email protected]' to reach the | |
-coordinator for all translator teams. | |
+get started, please write to `[email protected]' to | |
+reach the coordinator for all translator teams. | |
The English team is special. It works at improving and uniformizing | |
-the terminology in use. Proven linguistic skill are praised more than | |
-programming skill, here. | |
+the terminology in use. Proven linguistic skills are praised more than | |
+programming skills, here. | |
-Available Packages | |
-================== | |
+1.4 Available Packages | |
+====================== | |
- Languages are not equally supported in all packages. The following | |
-matrix shows the current state of internationalization, as of May 2001. | |
-The matrix shows, in regard of each package, for which languages PO | |
-files have been submitted to translation coordination, with a | |
+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 bg cs da de el en eo es et fi fr gl hr id it | |
- +----------------------------------------------+ | |
- a2ps | [] [] | | |
- bash | [] [] [] [] | | |
- bison | [] [] [] [] | | |
- clisp | [] [] [] [] | | |
- cpio | [] [] [] [] | | |
- diffutils | [] [] [] [] [] [] [] | | |
- enscript | [] [] | | |
- error | [] | | |
- fileutils | [] [] [] [] [] [] [] | | |
- findutils | [] [] [] [] [] [] [] [] | | |
- flex | [] [] [] | | |
- gawk | | | |
- gcal | | | |
- gcc | [] | | |
- gettext | [] [] [] [] [] [] [] [] [] | | |
- gnupg | [] [] [] [] [] | | |
- grep | [] [] [] | | |
- hello | [] [] [] [] [] [] [] [] [] | | |
- id-utils | [] [] | | |
- indent | [] [] [] [] [] | | |
- libc | [] [] [] [] [] [] [] [] | | |
- lilypond | | | |
- lynx | [] [] [] | | |
- m4 | [] [] [] [] [] [] [] | | |
- make | [] [] [] [] | | |
- parted | [] [] | | |
- ptx | [] [] [] [] [] [] [] | | |
- python | | | |
- recode | [] [] [] [] [] [] [] [] | | |
- sed | [] [] [] [] [] [] [] [] [] | | |
- sh-utils | [] [] [] [] [] [] [] [] [] | | |
- sharutils | [] [] [] [] [] [] [] | | |
- soundtracker | | | |
- sp | | | |
- tar | [] [] [] [] [] [] [] [] | | |
- texinfo | [] [] [] [] | | |
- textutils | [] [] [] [] [] [] [] | | |
- util-linux | [] | | |
- wdiff | [] [] [] [] [] [] [] | | |
- wget | [] [] [] [] [] [] [] [] [] | | |
- +----------------------------------------------+ | |
- bg cs da de el en eo es et fi fr gl hr id it | |
- 0 14 21 27 10 1 8 20 13 1 28 17 0 9 11 | |
- | |
- ja ko lv nl no pl pt pt_BR ru sk sl sv tr zh | |
- +----------------------------------------------+ | |
- a2ps | [] [] [] | 5 | |
- bash | | 4 | |
- bison | [] [] [] | 7 | |
- clisp | [] | 5 | |
- cpio | [] [] [] [] [] | 9 | |
- diffutils | [] [] [] | 10 | |
- enscript | [] [] [] | 5 | |
- error | | 1 | |
- fileutils | [] [] [] [] [] [] [] [] [] | 16 | |
- findutils | [] [] [] [] [] [] | 14 | |
- flex | [] [] [] | 6 | |
- gawk | | 0 | |
- gcal | | 0 | |
- gcc | [] | 2 | |
- gettext | [] [] [] [] [] [] [] [] [] [] | 19 | |
- gnupg | [] [] [] | 8 | |
- grep | | 3 | |
- hello | [] [] [] [] [] [] [] [] | 17 | |
- id-utils | [] [] [] | 5 | |
- indent | [] [] [] [] [] [] [] | 12 | |
- libc | [] [] [] [] [] [] [] | 15 | |
- lilypond | [] | 1 | |
- lynx | [] [] [] [] [] | 8 | |
- m4 | [] [] [] [] [] | 12 | |
- make | [] [] [] [] [] | 9 | |
- parted | [] [] [] | 5 | |
- ptx | [] [] [] [] [] [] | 13 | |
- python | | 0 | |
- recode | [] [] [] | 11 | |
- sed | [] [] [] [] [] [] [] | 16 | |
- sh-utils | [] [] [] [] [] [] [] [] [] [] | 19 | |
- sharutils | [] [] [] [] | 11 | |
- soundtracker | | 0 | |
- sp | | 0 | |
- tar | [] [] [] [] [] [] [] [] | 16 | |
- texinfo | [] [] | 6 | |
- textutils | [] [] [] [] [] [] [] [] | 15 | |
- util-linux | [] | 2 | |
- wdiff | [] [] [] [] [] | 12 | |
- wget | [] [] [] [] [] [] [] [] | 17 | |
- +----------------------------------------------+ | |
- 29 teams ja ko lv nl no pl pt pt_BR ru sk sl sv tr zh | |
- 40 domains 18 8 0 23 6 16 1 15 26 9 9 20 2 3 336 | |
+ 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 | [] [] [] [] [] | … | |
+ 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 | [] [] [] | … | |
+ +---------------------------------------------------+ | |
+ 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 2… | |
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 | |
t@@ -272,25 +1256,27 @@ distributed as such by its maintainer. There might be … | |
lag between the mere existence a PO file and its wide availability in a | |
distribution. | |
- If May 2001 seems to be old, you may fetch a more recent copy of | |
+ If June 2010 seems to be old, you may fetch a more recent copy of | |
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date | |
matrix with full percentage details can be found at | |
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. | |
+`http://translationproject.org/extra/matrix.html'. | |
-Using `gettext' in new packages | |
-=============================== | |
+1.5 Using `gettext' in new packages | |
+=================================== | |
- If you are writing a freely available program and want to | |
+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 the GNU Public License applies to your sources from | |
-then if you include `gettext' directly in your distribution on but | |
-since you are writing free software anyway this is no restriction. | |
+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 change appropriately and the setup can handle to | |
-use of `gettext' the only thing missing are the translations. The Free | |
-Translation Project is also available for packages which are not | |
+ 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 | |
-`[email protected]' to make the `.pot' files available to | |
-the translation teams. | |
+`[email protected]' to make the `.pot' files available | |
+to the translation teams. | |
diff --git a/Makefile.am b/Makefile.am | |
t@@ -3,7 +3,7 @@ DESKTOPDIR = ${DESTDIR}${datadir}/gnome/apps/Games | |
DESKTOP = dopewars.desktop | |
SCOREDIR = ${DESTDIR}${localstatedir} | |
SCORE = ${SCOREDIR}/dopewars.sco | |
-EXTRA_DIST = config.rpath ABOUT-NLS LICENCE dopewars.desktop dopewars.spe… | |
+EXTRA_DIST = config.rpath config.rpath ABOUT-NLS LICENCE dopewars.deskto… | |
runindent.sh win32/Makefile win32/README win32/contid.h \ | |
win32/dialogs.rc win32/filelist win32/guifunc.c \ | |
win32/guifunc.h win32/makeinstall.c win32/setup.c \ | |
diff --git a/config.guess b/config.guess | |
t@@ -1,13 +1,12 @@ | |
#! /bin/sh | |
# Attempt to guess a canonical system name. | |
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | |
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. | |
+# Copyright 1992-2013 Free Software Foundation, Inc. | |
-timestamp='2003-06-17' | |
+timestamp='2013-06-10' | |
# This file is free software; you can redistribute it and/or modify it | |
# under the terms of the GNU General Public License as published by | |
-# the Free Software Foundation; either version 2 of the License, or | |
+# the Free Software Foundation; either version 3 of the License, or | |
# (at your option) any later version. | |
# | |
# This program is distributed in the hope that it will be useful, but | |
t@@ -16,24 +15,22 @@ timestamp='2003-06-17' | |
# General Public License for more details. | |
# | |
# You should have received a copy of the GNU General Public License | |
-# along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
+# along with this program; if not, see <http://www.gnu.org/licenses/>. | |
# | |
# As a special exception to the GNU General Public License, if you | |
# distribute this file as part of a program that contains a | |
# configuration script generated by Autoconf, you may include it under | |
-# the same distribution terms that you use for the rest of that program. | |
- | |
-# Originally written by Per Bothner <[email protected]>. | |
-# Please send patches to <[email protected]>. Submit a context | |
-# diff and a properly formatted ChangeLog entry. | |
+# the same distribution terms that you use for the rest of that | |
+# program. This Exception is an additional permission under section 7 | |
+# of the GNU General Public License, version 3 ("GPLv3"). | |
+# | |
+# Originally written by Per Bothner. | |
# | |
-# This script attempts to guess a canonical system name similar to | |
-# config.sub. If it succeeds, it prints the system name on stdout, and | |
-# exits with 0. Otherwise, it exits with 1. | |
+# You can get the latest version of this script from: | |
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess… | |
# | |
-# The plan is that this can be called by configure scripts if you | |
-# don't specify an explicit build system type. | |
+# Please send patches with a ChangeLog entry to [email protected]. | |
+ | |
me=`echo "$0" | sed -e 's,.*/,,'` | |
t@@ -53,8 +50,7 @@ version="\ | |
GNU config.guess ($timestamp) | |
Originally written by Per Bothner. | |
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | |
-Free Software Foundation, Inc. | |
+Copyright 1992-2013 Free Software Foundation, Inc. | |
This is free software; see the source for copying conditions. There is NO | |
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." | |
t@@ -66,11 +62,11 @@ Try \`$me --help' for more information." | |
while test $# -gt 0 ; do | |
case $1 in | |
--time-stamp | --time* | -t ) | |
- echo "$timestamp" ; exit 0 ;; | |
+ echo "$timestamp" ; exit ;; | |
--version | -v ) | |
- echo "$version" ; exit 0 ;; | |
+ echo "$version" ; exit ;; | |
--help | --h* | -h ) | |
- echo "$usage"; exit 0 ;; | |
+ echo "$usage"; exit ;; | |
-- ) # Stop option processing | |
shift; break ;; | |
- ) # Use stdin as input. | |
t@@ -104,7 +100,7 @@ set_cc_for_build=' | |
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) &&… | |
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15… | |
: ${TMPDIR=/tmp} ; | |
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n… | |
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$… | |
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) … | |
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating i… | |
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }… | |
t@@ -123,7 +119,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in | |
;; | |
,,*) CC_FOR_BUILD=$CC ;; | |
,*,*) CC_FOR_BUILD=$HOST_CC ;; | |
-esac ;' | |
+esac ; set_cc_for_build= ;' | |
# This is needed to find uname on a Pyramid OSx when run in the BSD universe. | |
# ([email protected] 1994-08-24) | |
t@@ -136,19 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=… | |
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown | |
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown | |
-## for Red Hat Linux | |
-if test -f /etc/redhat-release ; then | |
- VENDOR=redhat ; | |
-else | |
- VENDOR= ; | |
-fi | |
+case "${UNAME_SYSTEM}" in | |
+Linux|GNU|GNU/*) | |
+ # If the system lacks a compiler, then just pick glibc. | |
+ # We could probably try harder. | |
+ LIBC=gnu | |
+ | |
+ eval $set_cc_for_build | |
+ cat <<-EOF > $dummy.c | |
+ #include <features.h> | |
+ #if defined(__UCLIBC__) | |
+ LIBC=uclibc | |
+ #elif defined(__dietlibc__) | |
+ LIBC=dietlibc | |
+ #else | |
+ LIBC=gnu | |
+ #endif | |
+ EOF | |
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` | |
+ ;; | |
+esac | |
# Note: order is significant - the case branches are not exclusive. | |
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | |
*:NetBSD:*:*) | |
# NetBSD (nbsd) targets should (where applicable) match one or | |
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, | |
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, | |
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently | |
# switched to ELF, *-*-netbsd* would select the old | |
# object file format. This provides both forward | |
t@@ -165,6 +175,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${… | |
arm*) machine=arm-unknown ;; | |
sh3el) machine=shl-unknown ;; | |
sh3eb) machine=sh-unknown ;; | |
+ sh5el) machine=sh5le-unknown ;; | |
*) machine=${UNAME_MACHINE_ARCH}-unknown ;; | |
esac | |
# The Operating System including object format, if it has switched | |
t@@ -173,7 +184,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${… | |
arm*|i386|m68k|ns32k|sh3*|sparc|vax) | |
eval $set_cc_for_build | |
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | |
- | grep __ELF__ >/dev/null | |
+ | grep -q __ELF__ | |
then | |
# Once all utilities can be ECOFF (netbsdecoff) or a.out (… | |
# Return netbsd for either. FIX? | |
t@@ -183,7 +194,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${… | |
fi | |
;; | |
*) | |
- os=netbsd | |
+ os=netbsd | |
;; | |
esac | |
# The OS release | |
t@@ -203,50 +214,36 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
# contains redundant information, the shorter form: | |
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. | |
echo "${machine}-${os}${release}" | |
- exit 0 ;; | |
- amiga:OpenBSD:*:*) | |
- echo m68k-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- arc:OpenBSD:*:*) | |
- echo mipsel-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- hp300:OpenBSD:*:*) | |
- echo m68k-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- mac68k:OpenBSD:*:*) | |
- echo m68k-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- macppc:OpenBSD:*:*) | |
- echo powerpc-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- mvme68k:OpenBSD:*:*) | |
- echo m68k-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- mvme88k:OpenBSD:*:*) | |
- echo m88k-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- mvmeppc:OpenBSD:*:*) | |
- echo powerpc-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- pmax:OpenBSD:*:*) | |
- echo mipsel-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- sgi:OpenBSD:*:*) | |
- echo mipseb-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- sun3:OpenBSD:*:*) | |
- echo m68k-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
- wgrisc:OpenBSD:*:*) | |
- echo mipsel-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
+ *:Bitrig:*:*) | |
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` | |
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} | |
+ exit ;; | |
*:OpenBSD:*:*) | |
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} | |
- exit 0 ;; | |
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` | |
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} | |
+ exit ;; | |
+ *:ekkoBSD:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} | |
+ exit ;; | |
+ *:SolidBSD:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} | |
+ exit ;; | |
+ macppc:MirBSD:*:*) | |
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE} | |
+ exit ;; | |
+ *:MirBSD:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} | |
+ exit ;; | |
alpha:OSF1:*:*) | |
- if test $UNAME_RELEASE = "V4.0"; then | |
+ case $UNAME_RELEASE in | |
+ *4.0) | |
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` | |
- fi | |
+ ;; | |
+ *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 | |
t@@ -284,42 +281,52 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
"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. | |
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]… | |
- exit 0 ;; | |
- Alpha*:OpenVMS:*:*) | |
- echo alpha-hp-vms | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX… | |
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. | |
+ exitcode=$? | |
+ trap '' 0 | |
+ exit $exitcode ;; | |
Alpha\ *:Windows_NT*:*) | |
# How do we know it's Interix rather than the generic POSIX subsystem? | |
# Should we change UNAME_MACHINE based on the output of uname instead | |
# of the specific Alpha model? | |
echo alpha-pc-interix | |
- exit 0 ;; | |
+ exit ;; | |
21064:Windows_NT:50:3) | |
echo alpha-dec-winnt3.5 | |
- exit 0 ;; | |
+ exit ;; | |
Amiga*:UNIX_System_V:4.0:*) | |
echo m68k-unknown-sysv4 | |
- exit 0;; | |
+ exit ;; | |
*:[Aa]miga[Oo][Ss]:*:*) | |
echo ${UNAME_MACHINE}-unknown-amigaos | |
- exit 0 ;; | |
+ exit ;; | |
*:[Mm]orph[Oo][Ss]:*:*) | |
echo ${UNAME_MACHINE}-unknown-morphos | |
- exit 0 ;; | |
+ exit ;; | |
*:OS/390:*:*) | |
echo i370-ibm-openedition | |
- exit 0 ;; | |
+ exit ;; | |
+ *:z/VM:*:*) | |
+ echo s390-ibm-zvmoe | |
+ exit ;; | |
+ *:OS400:*:*) | |
+ echo powerpc-ibm-os400 | |
+ exit ;; | |
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) | |
echo arm-acorn-riscix${UNAME_RELEASE} | |
- exit 0;; | |
+ exit ;; | |
+ arm*:riscos:*:*|arm*:RISCOS:*:*) | |
+ echo arm-unknown-riscos | |
+ exit ;; | |
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) | |
echo hppa1.1-hitachi-hiuxmpp | |
- exit 0;; | |
+ exit ;; | |
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) | |
# [email protected] (Earle F. Ake) contributed MIS and NILE. | |
if test "`(/bin/universe) 2>/dev/null`" = att ; then | |
t@@ -327,32 +334,51 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
else | |
echo pyramid-pyramid-bsd | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
NILE*:*:*:dcosx) | |
echo pyramid-pyramid-svr4 | |
- exit 0 ;; | |
+ exit ;; | |
DRS?6000:unix:4.0:6*) | |
echo sparc-icl-nx6 | |
- exit 0 ;; | |
- DRS?6000:UNIX_SV:4.2*:7*) | |
+ exit ;; | |
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) | |
case `/usr/bin/uname -p` in | |
- sparc) echo sparc-icl-nx7 && exit 0 ;; | |
+ sparc) echo sparc-icl-nx7; exit ;; | |
esac ;; | |
+ s390x:SunOS:*:*) | |
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.… | |
+ exit ;; | |
sun4H:SunOS:5.*:*) | |
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | |
- exit 0 ;; | |
+ exit ;; | |
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) | |
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | |
- exit 0 ;; | |
- i86pc:SunOS:5.*:*) | |
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | |
- exit 0 ;; | |
+ exit ;; | |
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) | |
+ echo i386-pc-auroraux${UNAME_RELEASE} | |
+ exit ;; | |
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) | |
+ eval $set_cc_for_build | |
+ SUN_ARCH="i386" | |
+ # If there is a compiler, see if it is configured for 64-bit objects. | |
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. | |
+ # This test works for both compilers. | |
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then | |
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ | |
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
+ grep IS_64BIT_ARCH >/dev/null | |
+ then | |
+ SUN_ARCH="x86_64" | |
+ fi | |
+ fi | |
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | |
+ exit ;; | |
sun4*:SunOS:6*:*) | |
# According to config.sub, this is the proper way to canonicalize | |
# SunOS6. Hard to guess exactly what SunOS6 will be like, but | |
# it's likely to be more like Solaris than SunOS4. | |
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | |
- exit 0 ;; | |
+ exit ;; | |
sun4*:SunOS:*:*) | |
case "`/usr/bin/arch -k`" in | |
Series*|S4*) | |
t@@ -361,10 +387,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
esac | |
# Japanese Language versions have a version number like `4.1.3-JL'. | |
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` | |
- exit 0 ;; | |
+ exit ;; | |
sun3*:SunOS:*:*) | |
echo m68k-sun-sunos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
sun*:*:4.2BSD:*) | |
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/de… | |
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 | |
t@@ -376,10 +402,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
echo sparc-sun-sunos${UNAME_RELEASE} | |
;; | |
esac | |
- exit 0 ;; | |
+ exit ;; | |
aushp:SunOS:*:*) | |
echo sparc-auspex-sunos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
# The situation for MiNT is a little confusing. The machine name | |
# can be virtually everything (everything which is not | |
# "atarist" or "atariste" at least should have a processor | |
t@@ -389,38 +415,41 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
# MiNT. But MiNT is downward compatible to TOS, so this should | |
# be no problem. | |
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) | |
- echo m68k-atari-mint${UNAME_RELEASE} | |
- exit 0 ;; | |
+ echo m68k-atari-mint${UNAME_RELEASE} | |
+ exit ;; | |
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) | |
echo m68k-atari-mint${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) | |
- echo m68k-atari-mint${UNAME_RELEASE} | |
- exit 0 ;; | |
+ echo m68k-atari-mint${UNAME_RELEASE} | |
+ exit ;; | |
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) | |
- echo m68k-milan-mint${UNAME_RELEASE} | |
- exit 0 ;; | |
+ echo m68k-milan-mint${UNAME_RELEASE} | |
+ exit ;; | |
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) | |
- echo m68k-hades-mint${UNAME_RELEASE} | |
- exit 0 ;; | |
+ echo m68k-hades-mint${UNAME_RELEASE} | |
+ exit ;; | |
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) | |
- echo m68k-unknown-mint${UNAME_RELEASE} | |
- exit 0 ;; | |
+ echo m68k-unknown-mint${UNAME_RELEASE} | |
+ exit ;; | |
+ m68k:machten:*:*) | |
+ echo m68k-apple-machten${UNAME_RELEASE} | |
+ exit ;; | |
powerpc:machten:*:*) | |
echo powerpc-apple-machten${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
RISC*:Mach:*:*) | |
echo mips-dec-mach_bsd4.3 | |
- exit 0 ;; | |
+ exit ;; | |
RISC*:ULTRIX:*:*) | |
echo mips-dec-ultrix${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
VAX*:ULTRIX*:*:*) | |
echo vax-dec-ultrix${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
2020:CLIX:*:* | 2430:CLIX:*:*) | |
echo clipper-intergraph-clix${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
mips:*:*:UMIPS | mips:*:*:RISCos) | |
eval $set_cc_for_build | |
sed 's/^ //' << EOF >$dummy.c | |
t@@ -444,35 +473,36 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:… | |
exit (-1); | |
} | |
EOF | |
- $CC_FOR_BUILD -o $dummy $dummy.c \ | |
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ | |
- && exit 0 | |
+ $CC_FOR_BUILD -o $dummy $dummy.c && | |
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && | |
+ SYSTEM_NAME=`$dummy $dummyarg` && | |
+ { echo "$SYSTEM_NAME"; exit; } | |
echo mips-mips-riscos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
Motorola:PowerMAX_OS:*:*) | |
echo powerpc-motorola-powermax | |
- exit 0 ;; | |
+ exit ;; | |
Motorola:*:4.3:PL8-*) | |
echo powerpc-harris-powermax | |
- exit 0 ;; | |
+ exit ;; | |
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) | |
echo powerpc-harris-powermax | |
- exit 0 ;; | |
+ exit ;; | |
Night_Hawk:Power_UNIX:*:*) | |
echo powerpc-harris-powerunix | |
- exit 0 ;; | |
+ exit ;; | |
m88k:CX/UX:7*:*) | |
echo m88k-harris-cxux7 | |
- exit 0 ;; | |
+ exit ;; | |
m88k:*:4*:R4*) | |
echo m88k-motorola-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
m88k:*:3*:R3*) | |
echo m88k-motorola-sysv3 | |
- exit 0 ;; | |
+ exit ;; | |
AViiON:dgux:*:*) | |
- # DG/UX returns AViiON for all architectures | |
- UNAME_PROCESSOR=`/usr/bin/uname -p` | |
+ # DG/UX returns AViiON for all architectures | |
+ UNAME_PROCESSOR=`/usr/bin/uname -p` | |
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] | |
then | |
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ | |
t@@ -485,29 +515,29 @@ EOF | |
else | |
echo i586-dg-dgux${UNAME_RELEASE} | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
M88*:DolphinOS:*:*) # DolphinOS (SVR3) | |
echo m88k-dolphin-sysv3 | |
- exit 0 ;; | |
+ exit ;; | |
M88*:*:R3*:*) | |
# Delta 88k system running SVR3 | |
echo m88k-motorola-sysv3 | |
- exit 0 ;; | |
+ exit ;; | |
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) | |
echo m88k-tektronix-sysv3 | |
- exit 0 ;; | |
+ exit ;; | |
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) | |
echo m68k-tektronix-bsd | |
- exit 0 ;; | |
+ exit ;; | |
*:IRIX*:*:*) | |
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` | |
- exit 0 ;; | |
+ exit ;; | |
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. | |
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id | |
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' | |
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id | |
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' | |
i*86:AIX:*:*) | |
echo i386-ibm-aix | |
- exit 0 ;; | |
+ exit ;; | |
ia64:AIX:*:*) | |
if [ -x /usr/bin/oslevel ] ; then | |
IBM_REV=`/usr/bin/oslevel` | |
t@@ -515,7 +545,7 @@ EOF | |
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} | |
fi | |
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} | |
- exit 0 ;; | |
+ exit ;; | |
*:AIX:2:3) | |
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then | |
eval $set_cc_for_build | |
t@@ -530,15 +560,19 @@ EOF | |
exit(0); | |
} | |
EOF | |
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 | |
- echo rs6000-ibm-aix3.2.5 | |
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` | |
+ then | |
+ echo "$SYSTEM_NAME" | |
+ else | |
+ echo rs6000-ibm-aix3.2.5 | |
+ fi | |
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then | |
echo rs6000-ibm-aix3.2.4 | |
else | |
echo rs6000-ibm-aix3.2 | |
fi | |
- exit 0 ;; | |
- *:AIX:*:[45]) | |
+ exit ;; | |
+ *:AIX:*:[4567]) | |
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | aw… | |
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1;… | |
IBM_ARCH=rs6000 | |
t@@ -551,28 +585,28 @@ EOF | |
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} | |
fi | |
echo ${IBM_ARCH}-ibm-aix${IBM_REV} | |
- exit 0 ;; | |
+ exit ;; | |
*:AIX:*:*) | |
echo rs6000-ibm-aix | |
- exit 0 ;; | |
+ exit ;; | |
ibmrt:4.4BSD:*|romp-ibm:BSD:*) | |
echo romp-ibm-bsd4.4 | |
- exit 0 ;; | |
+ exit ;; | |
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and | |
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to | |
- exit 0 ;; # report: romp-ibm BSD 4.3 | |
+ exit ;; # report: romp-ibm BSD 4.3 | |
*:BOSX:*:*) | |
echo rs6000-bull-bosx | |
- exit 0 ;; | |
+ exit ;; | |
DPX/2?00:B.O.S.:*:*) | |
echo m68k-bull-sysv3 | |
- exit 0 ;; | |
+ exit ;; | |
9000/[34]??:4.3bsd:1.*:*) | |
echo m68k-hp-bsd | |
- exit 0 ;; | |
+ exit ;; | |
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) | |
echo m68k-hp-bsd4.4 | |
- exit 0 ;; | |
+ exit ;; | |
9000/[34678]??:HP-UX:*:*) | |
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` | |
case "${UNAME_MACHINE}" in | |
t@@ -581,52 +615,52 @@ EOF | |
9000/[678][0-9][0-9]) | |
if [ -x /usr/bin/getconf ]; then | |
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/nul… | |
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/nul… | |
- case "${sc_cpu_version}" in | |
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 | |
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 | |
- 532) # CPU_PA_RISC2_0 | |
- case "${sc_kernel_bits}" in | |
- 32) HP_ARCH="hppa2.0n" ;; | |
- 64) HP_ARCH="hppa2.0w" ;; | |
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/nul… | |
+ case "${sc_cpu_version}" in | |
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 | |
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 | |
+ 532) # CPU_PA_RISC2_0 | |
+ case "${sc_kernel_bits}" in | |
+ 32) HP_ARCH="hppa2.0n" ;; | |
+ 64) HP_ARCH="hppa2.0w" ;; | |
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 | |
- esac ;; | |
- esac | |
+ esac ;; | |
+ esac | |
fi | |
if [ "${HP_ARCH}" = "" ]; then | |
eval $set_cc_for_build | |
- sed 's/^ //' << EOF >$dummy.c | |
+ sed 's/^ //' << EOF >$dummy.c | |
- #define _HPUX_SOURCE | |
- #include <stdlib.h> | |
- #include <unistd.h> | |
+ #define _HPUX_SOURCE | |
+ #include <stdlib.h> | |
+ #include <unistd.h> | |
- int main () | |
- { | |
- #if defined(_SC_KERNEL_BITS) | |
- long bits = sysconf(_SC_KERNEL_BITS); | |
- #endif | |
- long cpu = sysconf (_SC_CPU_VERSION); | |
+ int main () | |
+ { | |
+ #if defined(_SC_KERNEL_BITS) | |
+ long bits = sysconf(_SC_KERNEL_BITS); | |
+ #endif | |
+ long cpu = sysconf (_SC_CPU_VERSION); | |
- switch (cpu) | |
- { | |
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break; | |
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break; | |
- case CPU_PA_RISC2_0: | |
- #if defined(_SC_KERNEL_BITS) | |
- switch (bits) | |
- { | |
- case 64: puts ("hppa2.0w"); break; | |
- case 32: puts ("hppa2.0n"); break; | |
- default: puts ("hppa2.0"); break; | |
- } break; | |
- #else /* !defined(_SC_KERNEL_BITS) */ | |
- puts ("hppa2.0"); break; | |
- #endif | |
- default: puts ("hppa1.0"); break; | |
- } | |
- exit (0); | |
- } | |
+ switch (cpu) | |
+ { | |
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break; | |
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break; | |
+ case CPU_PA_RISC2_0: | |
+ #if defined(_SC_KERNEL_BITS) | |
+ switch (bits) | |
+ { | |
+ case 64: puts ("hppa2.0w"); break; | |
+ case 32: puts ("hppa2.0n"); break; | |
+ default: puts ("hppa2.0"); break; | |
+ } break; | |
+ #else /* !defined(_SC_KERNEL_BITS) */ | |
+ puts ("hppa2.0"); break; | |
+ #endif | |
+ default: puts ("hppa1.0"); break; | |
+ } | |
+ exit (0); | |
+ } | |
EOF | |
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && … | |
test -z "$HP_ARCH" && HP_ARCH=hppa | |
t@@ -634,9 +668,19 @@ EOF | |
esac | |
if [ ${HP_ARCH} = "hppa2.0w" ] | |
then | |
- # avoid double evaluation of $set_cc_for_build | |
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build | |
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/… | |
+ eval $set_cc_for_build | |
+ | |
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating | |
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler | |
+ # generating 64-bit code. GNU and HP use different nomenclature: | |
+ # | |
+ # $ CC_FOR_BUILD=cc ./config.guess | |
+ # => hppa2.0w-hp-hpux11.23 | |
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess | |
+ # => hppa64-hp-hpux11.23 | |
+ | |
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | | |
+ grep -q __LP64__ | |
then | |
HP_ARCH="hppa2.0w" | |
else | |
t@@ -644,11 +688,11 @@ EOF | |
fi | |
fi | |
echo ${HP_ARCH}-hp-hpux${HPUX_REV} | |
- exit 0 ;; | |
+ exit ;; | |
ia64:HP-UX:*:*) | |
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` | |
echo ia64-hp-hpux${HPUX_REV} | |
- exit 0 ;; | |
+ exit ;; | |
3050*:HI-UX:*:*) | |
eval $set_cc_for_build | |
sed 's/^ //' << EOF >$dummy.c | |
t@@ -676,318 +720,345 @@ EOF | |
exit (0); | |
} | |
EOF | |
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 | |
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && | |
+ { echo "$SYSTEM_NAME"; exit; } | |
echo unknown-hitachi-hiuxwe2 | |
- exit 0 ;; | |
+ exit ;; | |
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) | |
echo hppa1.1-hp-bsd | |
- exit 0 ;; | |
+ exit ;; | |
9000/8??:4.3bsd:*:*) | |
echo hppa1.0-hp-bsd | |
- exit 0 ;; | |
+ exit ;; | |
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) | |
echo hppa1.0-hp-mpeix | |
- exit 0 ;; | |
+ exit ;; | |
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) | |
echo hppa1.1-hp-osf | |
- exit 0 ;; | |
+ exit ;; | |
hp8??:OSF1:*:*) | |
echo hppa1.0-hp-osf | |
- exit 0 ;; | |
+ exit ;; | |
i*86:OSF1:*:*) | |
if [ -x /usr/sbin/sysversion ] ; then | |
echo ${UNAME_MACHINE}-unknown-osf1mk | |
else | |
echo ${UNAME_MACHINE}-unknown-osf1 | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
parisc*:Lites*:*:*) | |
echo hppa1.1-hp-lites | |
- exit 0 ;; | |
+ exit ;; | |
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) | |
echo c1-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) | |
if getsysinfo -f scalar_acc | |
then echo c32-convex-bsd | |
else echo c2-convex-bsd | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) | |
echo c34-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) | |
echo c38-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) | |
echo c4-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
CRAY*Y-MP:*:*:*) | |
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | |
- exit 0 ;; | |
+ exit ;; | |
CRAY*[A-Z]90:*:*:*) | |
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | |
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ | |
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ | |
-e 's/\.[^.]*$/.X/' | |
- exit 0 ;; | |
+ exit ;; | |
CRAY*TS:*:*:*) | |
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | |
- exit 0 ;; | |
+ exit ;; | |
CRAY*T3E:*:*:*) | |
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | |
- exit 0 ;; | |
+ exit ;; | |
CRAY*SV1:*:*:*) | |
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | |
- exit 0 ;; | |
+ exit ;; | |
*:UNICOS/mp:*:*) | |
- echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | |
- exit 0 ;; | |
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | |
+ exit ;; | |
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) | |
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijkl… | |
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklm… | |
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | |
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
- exit 0 ;; | |
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklm… | |
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | |
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
+ exit ;; | |
+ 5000:UNIX_System_V:4.*:*) | |
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklm… | |
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' '… | |
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
+ exit ;; | |
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) | |
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
sparc*:BSD/OS:*:*) | |
echo sparc-unknown-bsdi${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:BSD/OS:*:*) | |
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} | |
- exit 0 ;; | |
- *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) | |
- # Determine whether the default compiler uses glibc. | |
- eval $set_cc_for_build | |
- sed 's/^ //' << EOF >$dummy.c | |
- #include <features.h> | |
- #if __GLIBC__ >= 2 | |
- LIBC=gnu | |
- #else | |
- LIBC= | |
- #endif | |
-EOF | |
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` | |
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/… | |
- exit 0 ;; | |
+ exit ;; | |
+ *:FreeBSD:*:*) | |
+ UNAME_PROCESSOR=`/usr/bin/uname -p` | |
+ case ${UNAME_PROCESSOR} in | |
+ amd64) | |
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-… | |
+ *) | |
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|… | |
+ esac | |
+ exit ;; | |
i*:CYGWIN*:*) | |
echo ${UNAME_MACHINE}-pc-cygwin | |
- exit 0 ;; | |
- i*:MINGW*:*) | |
+ exit ;; | |
+ *:MINGW64*:*) | |
+ echo ${UNAME_MACHINE}-pc-mingw64 | |
+ exit ;; | |
+ *:MINGW*:*) | |
echo ${UNAME_MACHINE}-pc-mingw32 | |
- exit 0 ;; | |
+ exit ;; | |
+ i*:MSYS*:*) | |
+ echo ${UNAME_MACHINE}-pc-msys | |
+ exit ;; | |
+ i*:windows32*:*) | |
+ # uname -m includes "-pc" on this system. | |
+ echo ${UNAME_MACHINE}-mingw32 | |
+ exit ;; | |
i*:PW*:*) | |
echo ${UNAME_MACHINE}-pc-pw32 | |
- exit 0 ;; | |
- x86:Interix*:[34]*) | |
- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' | |
- exit 0 ;; | |
+ exit ;; | |
+ *:Interix*:*) | |
+ case ${UNAME_MACHINE} in | |
+ x86) | |
+ echo i586-pc-interix${UNAME_RELEASE} | |
+ exit ;; | |
+ authenticamd | genuineintel | EM64T) | |
+ echo x86_64-unknown-interix${UNAME_RELEASE} | |
+ exit ;; | |
+ IA64) | |
+ echo ia64-unknown-interix${UNAME_RELEASE} | |
+ exit ;; | |
+ esac ;; | |
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) | |
echo i${UNAME_MACHINE}-pc-mks | |
- exit 0 ;; | |
+ exit ;; | |
+ 8664:Windows_NT:*) | |
+ echo x86_64-pc-mks | |
+ exit ;; | |
i*:Windows_NT*:* | Pentium*:Windows_NT*:*) | |
# How do we know it's Interix rather than the generic POSIX subsystem? | |
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we | |
# UNAME_MACHINE based on the output of uname instead of i386? | |
echo i586-pc-interix | |
- exit 0 ;; | |
+ exit ;; | |
i*:UWIN*:*) | |
echo ${UNAME_MACHINE}-pc-uwin | |
- exit 0 ;; | |
+ exit ;; | |
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) | |
+ echo x86_64-unknown-cygwin | |
+ exit ;; | |
p*:CYGWIN*:*) | |
echo powerpcle-unknown-cygwin | |
- exit 0 ;; | |
+ exit ;; | |
prep*:SunOS:5.*:*) | |
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*/… | |
- exit 0 ;; | |
+ exit ;; | |
*:GNU:*:*) | |
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${U… | |
- exit 0 ;; | |
+ # the GNU system | |
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo… | |
+ exit ;; | |
+ *:GNU/*:*:*) | |
+ # other systems with GNU libc and userland | |
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,… | |
+ exit ;; | |
i*86:Minix:*:*) | |
echo ${UNAME_MACHINE}-pc-minix | |
- exit 0 ;; | |
+ exit ;; | |
+ aarch64:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ aarch64_be:Linux:*:*) | |
+ UNAME_MACHINE=aarch64_be | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ alpha:Linux:*:*) | |
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in | |
+ EV5) UNAME_MACHINE=alphaev5 ;; | |
+ 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 | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ arc:Linux:*:* | arceb:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
arm*:Linux:*:*) | |
- echo ${UNAME_MACHINE}-unknown-linux-gnu | |
- exit 0 ;; | |
+ eval $set_cc_for_build | |
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | |
+ | grep -q __ARM_EABI__ | |
+ then | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ else | |
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | |
+ | grep -q __ARM_PCS_VFP | |
+ then | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi | |
+ else | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf | |
+ fi | |
+ fi | |
+ exit ;; | |
+ avr32*:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
cris:Linux:*:*) | |
- echo cris-axis-linux-gnu | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC} | |
+ exit ;; | |
+ crisv32:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC} | |
+ exit ;; | |
+ frv:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ hexagon:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ i*86:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC} | |
+ exit ;; | |
ia64:Linux:*:*) | |
- echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ m32r*:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
m68*:Linux:*:*) | |
- echo ${UNAME_MACHINE}-unknown-linux-gnu | |
- exit 0 ;; | |
- mips:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ mips:Linux:*:* | mips64:Linux:*:*) | |
eval $set_cc_for_build | |
sed 's/^ //' << EOF >$dummy.c | |
#undef CPU | |
- #undef mips | |
- #undef mipsel | |
+ #undef ${UNAME_MACHINE} | |
+ #undef ${UNAME_MACHINE}el | |
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || de… | |
- CPU=mipsel | |
+ CPU=${UNAME_MACHINE}el | |
#else | |
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || de… | |
- CPU=mips | |
+ CPU=${UNAME_MACHINE} | |
#else | |
CPU= | |
#endif | |
#endif | |
EOF | |
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` | |
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 | |
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` | |
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } | |
;; | |
- mips64:Linux:*:*) | |
- eval $set_cc_for_build | |
- sed 's/^ //' << EOF >$dummy.c | |
- #undef CPU | |
- #undef mips64 | |
- #undef mips64el | |
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || de… | |
- CPU=mips64el | |
- #else | |
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || de… | |
- CPU=mips64 | |
- #else | |
- CPU= | |
- #endif | |
- #endif | |
-EOF | |
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` | |
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 | |
- ;; | |
- ppc:Linux:*:*) | |
- echo powerpc-${VENDOR:-unknown}-linux-gnu | |
- exit 0 ;; | |
- ppc64:Linux:*:*) | |
- echo powerpc64-${VENDOR:-unknown}-linux-gnu | |
- exit 0 ;; | |
- alpha:Linux:*:*) | |
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in | |
- EV5) UNAME_MACHINE=alphaev5 ;; | |
- EV56) UNAME_MACHINE=alphaev56 ;; | |
- PCA56) UNAME_MACHINE=alphapca56 ;; | |
- PCA57) UNAME_MACHINE=alphapca56 ;; | |
- EV6) UNAME_MACHINE=alphaev6 ;; | |
- EV67) UNAME_MACHINE=alphaev67 ;; | |
- EV68*) UNAME_MACHINE=alphaev68 ;; | |
- esac | |
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null | |
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi | |
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} | |
- exit 0 ;; | |
+ or1k:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ or32:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ padre:Linux:*:*) | |
+ echo sparc-unknown-linux-${LIBC} | |
+ exit ;; | |
+ parisc64:Linux:*:* | hppa64:Linux:*:*) | |
+ echo hppa64-unknown-linux-${LIBC} | |
+ exit ;; | |
parisc:Linux:*:* | hppa:Linux:*:*) | |
# Look for CPU level | |
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in | |
- PA7*) echo hppa1.1-unknown-linux-gnu ;; | |
- PA8*) echo hppa2.0-unknown-linux-gnu ;; | |
- *) echo hppa-unknown-linux-gnu ;; | |
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; | |
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; | |
+ *) echo hppa-unknown-linux-${LIBC} ;; | |
esac | |
- exit 0 ;; | |
- parisc64:Linux:*:* | hppa64:Linux:*:*) | |
- echo hppa64-unknown-linux-gnu | |
- exit 0 ;; | |
+ exit ;; | |
+ ppc64:Linux:*:*) | |
+ echo powerpc64-unknown-linux-${LIBC} | |
+ exit ;; | |
+ ppc:Linux:*:*) | |
+ echo powerpc-unknown-linux-${LIBC} | |
+ exit ;; | |
+ ppc64le:Linux:*:*) | |
+ echo powerpc64le-unknown-linux-${LIBC} | |
+ exit ;; | |
+ ppcle:Linux:*:*) | |
+ echo powerpcle-unknown-linux-${LIBC} | |
+ exit ;; | |
s390:Linux:*:* | s390x:Linux:*:*) | |
- echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC} | |
+ exit ;; | |
sh64*:Linux:*:*) | |
- echo ${UNAME_MACHINE}-unknown-linux-gnu | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
sh*:Linux:*:*) | |
- echo ${UNAME_MACHINE}-unknown-linux-gnu | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
sparc:Linux:*:* | sparc64:Linux:*:*) | |
- echo ${UNAME_MACHINE}-unknown-linux-gnu | |
- exit 0 ;; | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ tile*:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ vax:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC} | |
+ exit ;; | |
x86_64:Linux:*:*) | |
- echo x86_64-${VENDOR:-unknown}-linux-gnu | |
- exit 0 ;; | |
- i*86:Linux:*:*) | |
- # The BFD linker knows what the default object file format is, so | |
- # first see if it will tell us. cd to the root directory to prevent | |
- # problems with other programs or directories called `ld' in the path. | |
- # Set LC_ALL=C to ensure ld outputs messages in English. | |
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | |
- | sed -ne '/supported targets:/!d | |
- s/[ ][ ]*/ /g | |
- s/.*supported targets: *// | |
- s/ .*// | |
- p'` | |
- case "$ld_supported_targets" in | |
- elf32-i386) | |
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" | |
- ;; | |
- a.out-i386-linux) | |
- echo "${UNAME_MACHINE}-pc-linux-gnuaout" | |
- exit 0 ;; | |
- coff-i386) | |
- echo "${UNAME_MACHINE}-pc-linux-gnucoff" | |
- exit 0 ;; | |
- "") | |
- # Either a pre-BFD a.out linker (linux-gnuoldld) or | |
- # one that does not give us useful --help. | |
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld" | |
- exit 0 ;; | |
- esac | |
- # Determine whether the default compiler is a.out or elf | |
- eval $set_cc_for_build | |
- sed 's/^ //' << EOF >$dummy.c | |
- #include <features.h> | |
- #ifdef __ELF__ | |
- # ifdef __GLIBC__ | |
- # if __GLIBC__ >= 2 | |
- LIBC=gnu | |
- # else | |
- LIBC=gnulibc1 | |
- # endif | |
- # else | |
- LIBC=gnulibc1 | |
- # endif | |
- #else | |
- #ifdef __INTEL_COMPILER | |
- LIBC=gnu | |
- #else | |
- LIBC=gnuaout | |
- #endif | |
- #endif | |
-EOF | |
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` | |
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${L… | |
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 | |
- ;; | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
+ xtensa*:Linux:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
+ exit ;; | |
i*86:DYNIX/ptx:4*:*) | |
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. | |
# earlier versions are messed up and put the nodename in both | |
# sysname and nodename. | |
echo i386-sequent-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
i*86:UNIX_SV:4.2MP:2.*) | |
- # Unixware is an offshoot of SVR4, but it has its own version | |
- # number series starting with 2... | |
- # I am not positive that other SVR4 systems won't match this, | |
+ # Unixware is an offshoot of SVR4, but it has its own version | |
+ # number series starting with 2... | |
+ # I am not positive that other SVR4 systems won't match this, | |
# I just have to hope. -- rms. | |
- # Use sysv4.2uw... so that sysv4* matches it. | |
+ # Use sysv4.2uw... so that sysv4* matches it. | |
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} | |
- exit 0 ;; | |
+ exit ;; | |
i*86:OS/2:*:*) | |
# If we were able to find `uname', then EMX Unix compatibility | |
# is probably installed. | |
echo ${UNAME_MACHINE}-pc-os2-emx | |
- exit 0 ;; | |
+ exit ;; | |
i*86:XTS-300:*:STOP) | |
echo ${UNAME_MACHINE}-unknown-stop | |
- exit 0 ;; | |
+ exit ;; | |
i*86:atheos:*:*) | |
echo ${UNAME_MACHINE}-unknown-atheos | |
- exit 0 ;; | |
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) | |
+ exit ;; | |
+ i*86:syllable:*:*) | |
+ echo ${UNAME_MACHINE}-pc-syllable | |
+ exit ;; | |
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) | |
echo i386-unknown-lynxos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
i*86:*DOS:*:*) | |
echo ${UNAME_MACHINE}-pc-msdosdjgpp | |
- exit 0 ;; | |
+ exit ;; | |
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) | |
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` | |
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then | |
t@@ -995,15 +1066,16 @@ EOF | |
else | |
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} | |
fi | |
- exit 0 ;; | |
- i*86:*:5:[78]*) | |
+ exit ;; | |
+ i*86:*:5:[678]*) | |
+ # UnixWare 7.x, OpenUNIX and OpenServer 6. | |
case `/bin/uname -X | grep "^Machine"` in | |
*486*) UNAME_MACHINE=i486 ;; | |
*Pentium) UNAME_MACHINE=i586 ;; | |
*Pent*|*Celeron) UNAME_MACHINE=i686 ;; | |
esac | |
echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNA… | |
- exit 0 ;; | |
+ exit ;; | |
i*86:*:3.2:*) | |
if test -f /usr/options/cb.name; then | |
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` | |
t@@ -1021,73 +1093,86 @@ EOF | |
else | |
echo ${UNAME_MACHINE}-pc-sysv32 | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
pc:*:*:*) | |
# Left here for compatibility: | |
- # uname -m prints for DJGPP always 'pc', but it prints nothing about | |
- # the processor, so we play safe by assuming i386. | |
- echo i386-pc-msdosdjgpp | |
- exit 0 ;; | |
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about | |
+ # the processor, so we play safe by assuming i586. | |
+ # Note: whatever this is, it MUST be the same as what config.sub | |
+ # prints for the "djgpp" host, or else GDB configury will decide that | |
+ # this is a cross-build. | |
+ echo i586-pc-msdosdjgpp | |
+ exit ;; | |
Intel:Mach:3*:*) | |
echo i386-pc-mach3 | |
- exit 0 ;; | |
+ exit ;; | |
paragon:*:*:*) | |
echo i860-intel-osf1 | |
- exit 0 ;; | |
+ exit ;; | |
i860:*:4.*:*) # i860-SVR4 | |
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then | |
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 | |
else # Add other i860-SVR4 vendors below as they are discovered. | |
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
mini*:CTIX:SYS*5:*) | |
# "miniframe" | |
echo m68010-convergent-sysv | |
- exit 0 ;; | |
+ exit ;; | |
mc68k:UNIX:SYSTEM5:3.51m) | |
echo m68k-convergent-sysv | |
- exit 0 ;; | |
+ exit ;; | |
M680?0:D-NIX:5.3:*) | |
echo m68k-diab-dnix | |
- exit 0 ;; | |
- M68*:*:R3V[567]*:*) | |
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; | |
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*… | |
+ exit ;; | |
+ M68*:*:R3V[5678]*:*) | |
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; | |
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:… | |
OS_REL='' | |
test -r /etc/.relid \ | |
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` | |
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | |
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0 | |
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } | |
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ | |
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; | |
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; | |
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) | |
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | |
- && echo i486-ncr-sysv4 && exit 0 ;; | |
+ /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/.r… | |
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | |
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } | |
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ | |
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } | |
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ | |
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; | |
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) | |
echo m68k-unknown-lynxos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
mc68030:UNIX_System_V:4.*:*) | |
echo m68k-atari-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
TSUNAMI:LynxOS:2.*:*) | |
echo sparc-unknown-lynxos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
rs6000:LynxOS:2.*:*) | |
echo rs6000-unknown-lynxos${UNAME_RELEASE} | |
- exit 0 ;; | |
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) | |
+ exit ;; | |
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) | |
echo powerpc-unknown-lynxos${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
SM[BE]S:UNIX_SV:*:*) | |
echo mips-dde-sysv${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
RM*:ReliantUNIX-*:*:*) | |
echo mips-sni-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
RM*:SINIX-*:*:*) | |
echo mips-sni-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
*:SINIX-*:*:*) | |
if uname -p 2>/dev/null >/dev/null ; then | |
UNAME_MACHINE=`(uname -p) 2>/dev/null` | |
t@@ -1095,68 +1180,99 @@ EOF | |
else | |
echo ns32k-sni-sysv | |
fi | |
- exit 0 ;; | |
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | |
- # says <[email protected]> | |
- echo i586-unisys-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | |
+ # says <[email protected]> | |
+ echo i586-unisys-sysv4 | |
+ exit ;; | |
*:UNIX_System_V:4*:FTX*) | |
# From Gerald Hewes <[email protected]>. | |
# How about differentiating between stratus architectures? -djm | |
echo hppa1.1-stratus-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
*:*:*:FTX*) | |
# From [email protected]. | |
echo i860-stratus-sysv4 | |
- exit 0 ;; | |
+ exit ;; | |
+ i*86:VOS:*:*) | |
+ # From [email protected]. | |
+ echo ${UNAME_MACHINE}-stratus-vos | |
+ exit ;; | |
*:VOS:*:*) | |
# From [email protected]. | |
echo hppa1.1-stratus-vos | |
- exit 0 ;; | |
+ exit ;; | |
mc68*:A/UX:*:*) | |
echo m68k-apple-aux${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
news*:NEWS-OS:6*:*) | |
echo mips-sony-newsos6 | |
- exit 0 ;; | |
+ exit ;; | |
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) | |
if [ -d /usr/nec ]; then | |
- echo mips-nec-sysv${UNAME_RELEASE} | |
+ echo mips-nec-sysv${UNAME_RELEASE} | |
else | |
- echo mips-unknown-sysv${UNAME_RELEASE} | |
+ echo mips-unknown-sysv${UNAME_RELEASE} | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. | |
echo powerpc-be-beos | |
- exit 0 ;; | |
+ exit ;; | |
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. | |
echo powerpc-apple-beos | |
- exit 0 ;; | |
+ exit ;; | |
BePC:BeOS:*:*) # BeOS running on Intel PC compatible. | |
echo i586-pc-beos | |
- exit 0 ;; | |
+ exit ;; | |
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. | |
+ echo i586-pc-haiku | |
+ exit ;; | |
+ x86_64:Haiku:*:*) | |
+ echo x86_64-unknown-haiku | |
+ exit ;; | |
SX-4:SUPER-UX:*:*) | |
echo sx4-nec-superux${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
SX-5:SUPER-UX:*:*) | |
echo sx5-nec-superux${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
SX-6:SUPER-UX:*:*) | |
echo sx6-nec-superux${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
+ SX-7:SUPER-UX:*:*) | |
+ echo sx7-nec-superux${UNAME_RELEASE} | |
+ exit ;; | |
+ SX-8:SUPER-UX:*:*) | |
+ echo sx8-nec-superux${UNAME_RELEASE} | |
+ exit ;; | |
+ SX-8R:SUPER-UX:*:*) | |
+ echo sx8r-nec-superux${UNAME_RELEASE} | |
+ exit ;; | |
Power*:Rhapsody:*:*) | |
echo powerpc-apple-rhapsody${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:Rhapsody:*:*) | |
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:Darwin:*:*) | |
- case `uname -p` in | |
- *86) UNAME_PROCESSOR=i686 ;; | |
- powerpc) UNAME_PROCESSOR=powerpc ;; | |
- esac | |
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown | |
+ eval $set_cc_for_build | |
+ if test "$UNAME_PROCESSOR" = unknown ; then | |
+ UNAME_PROCESSOR=powerpc | |
+ fi | |
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then | |
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ | |
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
+ grep IS_64BIT_ARCH >/dev/null | |
+ then | |
+ case $UNAME_PROCESSOR in | |
+ i386) UNAME_PROCESSOR=x86_64 ;; | |
+ powerpc) UNAME_PROCESSOR=powerpc64 ;; | |
+ esac | |
+ fi | |
+ fi | |
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:procnto*:*:* | *:QNX:[0123456789]*:*) | |
UNAME_PROCESSOR=`uname -p` | |
if test "$UNAME_PROCESSOR" = "x86"; then | |
t@@ -1164,22 +1280,28 @@ EOF | |
UNAME_MACHINE=pc | |
fi | |
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:QNX:*:4*) | |
echo i386-pc-qnx | |
- exit 0 ;; | |
- NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) | |
+ exit ;; | |
+ NEO-?:NONSTOP_KERNEL:*:*) | |
+ echo neo-tandem-nsk${UNAME_RELEASE} | |
+ exit ;; | |
+ NSE-*:NONSTOP_KERNEL:*:*) | |
+ echo nse-tandem-nsk${UNAME_RELEASE} | |
+ exit ;; | |
+ NSR-?:NONSTOP_KERNEL:*:*) | |
echo nsr-tandem-nsk${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:NonStop-UX:*:*) | |
echo mips-compaq-nonstopux | |
- exit 0 ;; | |
+ exit ;; | |
BS2000:POSIX*:*:*) | |
echo bs2000-siemens-sysv | |
- exit 0 ;; | |
+ exit ;; | |
DS/*:UNIX_System_V:*:*) | |
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} | |
- exit 0 ;; | |
+ exit ;; | |
*:Plan9:*:*) | |
# "uname -m" is not consistent, so use $cputype instead. 386 | |
# is converted to i386 for consistency with other x86 | |
t@@ -1190,33 +1312,55 @@ EOF | |
UNAME_MACHINE="$cputype" | |
fi | |
echo ${UNAME_MACHINE}-unknown-plan9 | |
- exit 0 ;; | |
+ exit ;; | |
*:TOPS-10:*:*) | |
echo pdp10-unknown-tops10 | |
- exit 0 ;; | |
+ exit ;; | |
*:TENEX:*:*) | |
echo pdp10-unknown-tenex | |
- exit 0 ;; | |
+ exit ;; | |
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) | |
echo pdp10-dec-tops20 | |
- exit 0 ;; | |
+ exit ;; | |
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) | |
echo pdp10-xkl-tops20 | |
- exit 0 ;; | |
+ exit ;; | |
*:TOPS-20:*:*) | |
echo pdp10-unknown-tops20 | |
- exit 0 ;; | |
+ exit ;; | |
*:ITS:*:*) | |
echo pdp10-unknown-its | |
- exit 0 ;; | |
+ exit ;; | |
SEI:*:*:SEIUX) | |
- echo mips-sei-seiux${UNAME_RELEASE} | |
- exit 0 ;; | |
+ echo mips-sei-seiux${UNAME_RELEASE} | |
+ exit ;; | |
+ *:DragonFly:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e '… | |
+ exit ;; | |
+ *:*VMS:*:*) | |
+ UNAME_MACHINE=`(uname -p) 2>/dev/null` | |
+ case "${UNAME_MACHINE}" in | |
+ A*) echo alpha-dec-vms ; exit ;; | |
+ I*) echo ia64-dec-vms ; exit ;; | |
+ V*) echo vax-dec-vms ; exit ;; | |
+ esac ;; | |
+ *:XENIX:*:SysV) | |
+ echo i386-pc-xenix | |
+ exit ;; | |
+ i*86:skyos:*:*) | |
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$… | |
+ exit ;; | |
+ i*86:rdos:*:*) | |
+ echo ${UNAME_MACHINE}-pc-rdos | |
+ exit ;; | |
+ i*86:AROS:*:*) | |
+ echo ${UNAME_MACHINE}-pc-aros | |
+ exit ;; | |
+ x86_64:VMkernel:*:*) | |
+ echo ${UNAME_MACHINE}-unknown-esx | |
+ exit ;; | |
esac | |
-#echo '(No uname command or uname output not recognized.)' 1>&2 | |
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 | |
- | |
eval $set_cc_for_build | |
cat >$dummy.c <<EOF | |
#ifdef _SEQUENT_ | |
t@@ -1234,16 +1378,16 @@ main () | |
#include <sys/param.h> | |
printf ("m68k-sony-newsos%s\n", | |
#ifdef NEWSOS4 | |
- "4" | |
+ "4" | |
#else | |
- "" | |
+ "" | |
#endif | |
- ); exit (0); | |
+ ); exit (0); | |
#endif | |
#endif | |
#if defined (__arm) && defined (__acorn) && defined (__unix) | |
- printf ("arm-acorn-riscix"); exit (0); | |
+ printf ("arm-acorn-riscix\n"); exit (0); | |
#endif | |
#if defined (hp300) && !defined (hpux) | |
t@@ -1332,11 +1476,12 @@ main () | |
} | |
EOF | |
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 | |
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && | |
+ { echo "$SYSTEM_NAME"; exit; } | |
# Apollos put the system type in the environment. | |
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } | |
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } | |
# Convex versions that predate uname can use getsysinfo(1) | |
t@@ -1345,22 +1490,22 @@ then | |
case `getsysinfo -f cpu_type` in | |
c1*) | |
echo c1-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
c2*) | |
if getsysinfo -f scalar_acc | |
then echo c32-convex-bsd | |
else echo c2-convex-bsd | |
fi | |
- exit 0 ;; | |
+ exit ;; | |
c34*) | |
echo c34-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
c38*) | |
echo c38-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
c4*) | |
echo c4-convex-bsd | |
- exit 0 ;; | |
+ exit ;; | |
esac | |
fi | |
t@@ -1371,7 +1516,9 @@ This script, last modified $timestamp, has failed to rec… | |
the operating system you are using. It is advised that you | |
download the most up to date version of the config scripts from | |
- ftp://ftp.gnu.org/pub/gnu/config/ | |
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess… | |
+and | |
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;h… | |
If the version you run ($0) is already up to date, please | |
send the following data and any information you think might be | |
diff --git a/config.rpath b/config.rpath | |
t@@ -0,0 +1,690 @@ | |
+#! /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-2013 Free Software Foundation, Inc. | |
+# Taken from GNU libtool, 2001 | |
+# Originally by Gordon Matzigkeit <[email protected]>, 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; th… | |
+ : | |
+ 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; … | |
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rp… | |
+ 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 Stri… | |
+}'` | |
+ if test -z "$aix_libpath"; then | |
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File… | |
+}'` | |
+ 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; };… | |
+ : | |
+ else | |
+ ld_shlibs=no | |
+ fi | |
+ ;; | |
+ dgux*) | |
+ hardcode_libdir_flag_spec='-L$libdir' | |
+ ;; | |
+ freebsd2.2*) | |
+ hardcode_libdir_flag_spec='-R$libdir' | |
+ hardcode_direct=yes | |
+ ;; | |
+ freebsd2*) | |
+ 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_o… | |
+ 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 … | |
+ ;; | |
+ esac | |
+ ;; | |
+ sysv4.3*) | |
+ ;; | |
+ sysv4*MP*) | |
+ if test -d /usr/nec; then | |
+ ld_shlibs=yes | |
+ fi | |
+ ;; | |
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco… | |
+ ;; | |
+ sysv5* | sco3.2v5* | sco5v6*) | |
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdi… | |
+ 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* | dragonfly*) | |
+ case "$host_os" in | |
+ freebsd[123]*) | |
+ library_names_spec='$libname$shrext$versuffix' ;; | |
+ *) | |
+ library_names_spec='$libname$shrext' ;; | |
+ esac | |
+ ;; | |
+ gnu*) | |
+ library_names_spec='$libname$shrext' | |
+ ;; | |
+ 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 shlibs… | |
+ *-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_s… | |
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "… | |
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e… | |
+ | |
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF | |
+ | |
+# How to pass a linker flag through the compiler. | |
+wl="$escaped_wl" | |
+ | |
+# Static library suffix (normally "a"). | |
+libext="$libext" | |
+ | |
+# Shared library suffix (normally "so"). | |
+shlibext="$shlibext" | |
+ | |
+# Format of library name prefix. | |
+libname_spec="$escaped_libname_spec" | |
+ | |
+# Library names that the linker finds when passed -lNAME. | |
+library_names_spec="$escaped_library_names_spec" | |
+ | |
+# Flag to hardcode \$libdir into a binary during linking. | |
+# This must work even if \$libdir does not exist. | |
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" | |
+ | |
+# Whether we need a single -rpath flag with a separated argument. | |
+hardcode_libdir_separator="$hardcode_libdir_separator" | |
+ | |
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the | |
+# resulting binary. | |
+hardcode_direct="$hardcode_direct" | |
+ | |
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the | |
+# resulting binary. | |
+hardcode_minus_L="$hardcode_minus_L" | |
+ | |
+EOF | |
diff --git a/config.sub b/config.sub | |
t@@ -1,42 +1,40 @@ | |
#! /bin/sh | |
# Configuration validation subroutine script. | |
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | |
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. | |
+# Copyright 1992-2013 Free Software Foundation, Inc. | |
-timestamp='2003-06-18' | |
+timestamp='2013-04-24' | |
-# This file is (in principle) common to ALL GNU software. | |
-# The presence of a machine in this file suggests that SOME GNU software | |
-# can handle that machine. It does not imply ALL GNU software can. | |
-# | |
-# This file is free software; you can redistribute it and/or modify | |
-# it under the terms of the GNU General Public License as published by | |
-# the Free Software Foundation; either version 2 of the License, or | |
+# This file is free software; you can redistribute it and/or modify it | |
+# under the terms of the GNU General Public License as published by | |
+# the Free Software Foundation; either version 3 of the License, or | |
# (at your option) any later version. | |
# | |
-# This program is distributed in the hope that it will be useful, | |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
-# GNU General Public License for more details. | |
+# This program is distributed in the hope that it will be useful, but | |
+# WITHOUT ANY WARRANTY; without even the implied warranty of | |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
+# General Public License for more details. | |
# | |
# You should have received a copy of the GNU General Public License | |
-# along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 59 Temple Place - Suite 330, | |
-# Boston, MA 02111-1307, USA. | |
- | |
+# along with this program; if not, see <http://www.gnu.org/licenses/>. | |
+# | |
# As a special exception to the GNU General Public License, if you | |
# distribute this file as part of a program that contains a | |
# configuration script generated by Autoconf, you may include it under | |
-# the same distribution terms that you use for the rest of that program. | |
+# the same distribution terms that you use for the rest of that | |
+# program. This Exception is an additional permission under section 7 | |
+# of the GNU General Public License, version 3 ("GPLv3"). | |
-# Please send patches to <[email protected]>. Submit a context | |
-# diff and a properly formatted ChangeLog entry. | |
+ | |
+# Please send patches with a ChangeLog entry to [email protected]. | |
# | |
# Configuration subroutine to validate and canonicalize a configuration type. | |
# Supply the specified configuration type as an argument. | |
# If it is invalid, we print an error message on stderr and exit with code 1. | |
# Otherwise, we print the canonical config type on stdout and succeed. | |
+# You can get the latest version of this script from: | |
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;h… | |
+ | |
# 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. | |
t@@ -70,8 +68,7 @@ Report bugs and patches to <[email protected]>." | |
version="\ | |
GNU config.sub ($timestamp) | |
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | |
-Free Software Foundation, Inc. | |
+Copyright 1992-2013 Free Software Foundation, Inc. | |
This is free software; see the source for copying conditions. There is NO | |
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." | |
t@@ -83,11 +80,11 @@ Try \`$me --help' for more information." | |
while test $# -gt 0 ; do | |
case $1 in | |
--time-stamp | --time* | -t ) | |
- echo "$timestamp" ; exit 0 ;; | |
+ echo "$timestamp" ; exit ;; | |
--version | -v ) | |
- echo "$version" ; exit 0 ;; | |
+ echo "$version" ; exit ;; | |
--help | --h* | -h ) | |
- echo "$usage"; exit 0 ;; | |
+ echo "$usage"; exit ;; | |
-- ) # Stop option processing | |
shift; break ;; | |
- ) # Use stdin as input. | |
t@@ -99,7 +96,7 @@ while test $# -gt 0 ; do | |
*local*) | |
# First pass through any local machine types. | |
echo $1 | |
- exit 0;; | |
+ exit ;; | |
* ) | |
break ;; | |
t@@ -118,10 +115,18 @@ esac | |
# Here we must recognize all the valid KERNEL-OS combinations. | |
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` | |
case $maybe_os in | |
- nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-em… | |
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ | |
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu… | |
+ knetbsd*-gnu* | netbsd*-gnu* | \ | |
+ kopensolaris*-gnu* | \ | |
+ storm-chaos* | os2-emx* | rtmk-nova*) | |
os=-$maybe_os | |
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` | |
;; | |
+ android-linux) | |
+ os=-linux-android | |
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown | |
+ ;; | |
*) | |
basic_machine=`echo $1 | sed 's/-[^-]*$//'` | |
if [ $basic_machine != $1 ] | |
t@@ -144,10 +149,13 @@ case $os in | |
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ | |
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ | |
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ | |
- -apple | -axis) | |
+ -apple | -axis | -knuth | -cray | -microblaze*) | |
os= | |
basic_machine=$1 | |
;; | |
+ -bluegene*) | |
+ os=-cnk | |
+ ;; | |
-sim | -cisco | -oki | -wec | -winbond) | |
os= | |
basic_machine=$1 | |
t@@ -162,13 +170,17 @@ case $os in | |
os=-chorusos | |
basic_machine=$1 | |
;; | |
- -chorusrdb) | |
- os=-chorusrdb | |
+ -chorusrdb) | |
+ os=-chorusrdb | |
basic_machine=$1 | |
- ;; | |
+ ;; | |
-hiux*) | |
os=-hiuxwe2 | |
;; | |
+ -sco6) | |
+ os=-sco5v6 | |
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | |
+ ;; | |
-sco5) | |
os=-sco3.2v5 | |
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | |
t@@ -185,6 +197,10 @@ case $os in | |
# Don't forget version if it is 3.2v4 or newer. | |
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | |
;; | |
+ -sco5v6*) | |
+ # Don't forget version if it is 3.2v4 or newer. | |
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | |
+ ;; | |
-sco*) | |
os=-sco3.2v2 | |
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | |
t@@ -202,6 +218,12 @@ case $os in | |
-isc*) | |
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | |
;; | |
+ -lynx*178) | |
+ os=-lynxos178 | |
+ ;; | |
+ -lynx*5) | |
+ os=-lynxos5 | |
+ ;; | |
-lynx*) | |
os=-lynxos | |
;; | |
t@@ -226,56 +248,106 @@ case $basic_machine in | |
# Some are omitted here because they have special meanings below. | |
1750a | 580 \ | |
| a29k \ | |
+ | aarch64 | aarch64_be \ | |
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | |
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca… | |
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | |
+ | am33_2.0 \ | |
+ | arc | arceb \ | |
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | |
+ | avr | avr32 \ | |
+ | be32 | be64 \ | |
+ | bfin \ | |
| c4x | clipper \ | |
| d10v | d30v | dlx | dsp16xx \ | |
- | fr30 | frv \ | |
+ | epiphany \ | |
+ | fido | fr30 | frv \ | |
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | |
+ | hexagon \ | |
| i370 | i860 | i960 | ia64 \ | |
- | ip2k \ | |
- | m32r | m68000 | m68k | m88k | mcore \ | |
+ | ip2k | iq2000 \ | |
+ | le32 | le64 \ | |
+ | lm32 \ | |
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | |
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | |
| mips | mipsbe | mipseb | mipsel | mipsle \ | |
| mips16 \ | |
| mips64 | mips64el \ | |
- | mips64vr | mips64vrel \ | |
+ | mips64octeon | mips64octeonel \ | |
| mips64orion | mips64orionel \ | |
+ | mips64r5900 | mips64r5900el \ | |
+ | mips64vr | mips64vrel \ | |
| mips64vr4100 | mips64vr4100el \ | |
| mips64vr4300 | mips64vr4300el \ | |
| mips64vr5000 | mips64vr5000el \ | |
+ | mips64vr5900 | mips64vr5900el \ | |
| mipsisa32 | mipsisa32el \ | |
| mipsisa32r2 | mipsisa32r2el \ | |
| mipsisa64 | mipsisa64el \ | |
+ | mipsisa64r2 | mipsisa64r2el \ | |
| mipsisa64sb1 | mipsisa64sb1el \ | |
| mipsisa64sr71k | mipsisa64sr71kel \ | |
+ | mipsr5900 | mipsr5900el \ | |
| mipstx39 | mipstx39el \ | |
| mn10200 | mn10300 \ | |
+ | moxie \ | |
+ | mt \ | |
| msp430 \ | |
+ | nds32 | nds32le | nds32be \ | |
+ | nios | nios2 | nios2eb | nios2el \ | |
| ns16k | ns32k \ | |
- | openrisc | or32 \ | |
+ | open8 \ | |
+ | or1k | or32 \ | |
| pdp10 | pdp11 | pj | pjl \ | |
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | |
+ | powerpc | powerpc64 | powerpc64le | powerpcle \ | |
| pyramid \ | |
- | s390 | s390x \ | |
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3e… | |
+ | rl78 | rx \ | |
+ | score \ | |
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | sh… | |
| sh64 | sh64le \ | |
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv… | |
- | strongarm \ | |
- | tahoe | thumb | tic4x | tic80 | tron \ | |
- | v850 | v850e \ | |
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparcl… | |
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | |
+ | spu \ | |
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | |
+ | ubicom32 \ | |
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | |
| we32k \ | |
- | x86 | xscale | xstormy16 | xtensa \ | |
- | z8k) | |
+ | x86 | xc16x | xstormy16 | xtensa \ | |
+ | z8k | z80) | |
basic_machine=$basic_machine-unknown | |
;; | |
- m6811 | m68hc11 | m6812 | m68hc12) | |
- # Motorola 68HC11/12. | |
+ c54x) | |
+ basic_machine=tic54x-unknown | |
+ ;; | |
+ c55x) | |
+ basic_machine=tic55x-unknown | |
+ ;; | |
+ c6x) | |
+ basic_machine=tic6x-unknown | |
+ ;; | |
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) | |
basic_machine=$basic_machine-unknown | |
os=-none | |
;; | |
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) | |
;; | |
+ ms1) | |
+ basic_machine=mt-unknown | |
+ ;; | |
+ | |
+ strongarm | thumb | xscale) | |
+ basic_machine=arm-unknown | |
+ ;; | |
+ xgate) | |
+ basic_machine=$basic_machine-unknown | |
+ os=-none | |
+ ;; | |
+ xscaleeb) | |
+ basic_machine=armeb-unknown | |
+ ;; | |
+ | |
+ xscaleel) | |
+ basic_machine=armel-unknown | |
+ ;; | |
# We use `pc' rather than `unknown' | |
# because (1) that's what they normally are, and | |
t@@ -291,59 +363,82 @@ case $basic_machine in | |
# Recognize the basic CPU types with company name. | |
580-* \ | |
| a29k-* \ | |
+ | aarch64-* | aarch64_be-* \ | |
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | |
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | |
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | |
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | |
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | |
- | avr-* \ | |
- | bs2000-* \ | |
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | |
- | clipper-* | cydra-* \ | |
+ | avr-* | avr32-* \ | |
+ | be32-* | be64-* \ | |
+ | bfin-* | bs2000-* \ | |
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | |
+ | clipper-* | craynv-* | cydra-* \ | |
| d10v-* | d30v-* | dlx-* \ | |
| elxsi-* \ | |
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | |
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | |
| h8300-* | h8500-* \ | |
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | |
+ | hexagon-* \ | |
| i*86-* | i860-* | i960-* | ia64-* \ | |
- | ip2k-* \ | |
- | m32r-* \ | |
+ | ip2k-* | iq2000-* \ | |
+ | le32-* | le64-* \ | |
+ | lm32-* \ | |
+ | m32c-* | m32r-* | m32rle-* \ | |
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | |
- | m88110-* | m88k-* | mcore-* \ | |
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | |
+ | microblaze-* | microblazeel-* \ | |
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | |
| mips16-* \ | |
| mips64-* | mips64el-* \ | |
- | mips64vr-* | mips64vrel-* \ | |
+ | mips64octeon-* | mips64octeonel-* \ | |
| mips64orion-* | mips64orionel-* \ | |
+ | mips64r5900-* | mips64r5900el-* \ | |
+ | mips64vr-* | mips64vrel-* \ | |
| mips64vr4100-* | mips64vr4100el-* \ | |
| mips64vr4300-* | mips64vr4300el-* \ | |
| mips64vr5000-* | mips64vr5000el-* \ | |
+ | mips64vr5900-* | mips64vr5900el-* \ | |
| mipsisa32-* | mipsisa32el-* \ | |
| mipsisa32r2-* | mipsisa32r2el-* \ | |
| mipsisa64-* | mipsisa64el-* \ | |
+ | mipsisa64r2-* | mipsisa64r2el-* \ | |
| mipsisa64sb1-* | mipsisa64sb1el-* \ | |
| mipsisa64sr71k-* | mipsisa64sr71kel-* \ | |
+ | mipsr5900-* | mipsr5900el-* \ | |
| mipstx39-* | mipstx39el-* \ | |
+ | mmix-* \ | |
+ | mt-* \ | |
| msp430-* \ | |
- | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | |
+ | nds32-* | nds32le-* | nds32be-* \ | |
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | |
+ | none-* | np1-* | ns16k-* | ns32k-* \ | |
+ | open8-* \ | |
| orion-* \ | |
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | |
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | |
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | |
| pyramid-* \ | |
- | romp-* | rs6000-* \ | |
- | s390-* | s390x-* \ | |
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | |
+ | rl78-* | romp-* | rs6000-* | rx-* \ | |
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-*… | |
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | |
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | |
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | |
- | tahoe-* | thumb-* \ | |
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparcle… | |
+ | sparclite-* \ | |
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | |
+ | tahoe-* \ | |
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | |
+ | tile*-* \ | |
| tron-* \ | |
- | v850-* | v850e-* | vax-* \ | |
+ | ubicom32-* \ | |
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | |
+ | vax-* \ | |
| we32k-* \ | |
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | |
- | xtensa-* \ | |
+ | x86-* | x86_64-* | xc16x-* | xps100-* \ | |
+ | xstormy16-* | xtensa*-* \ | |
| ymp-* \ | |
- | z8k-*) | |
+ | z8k-* | z80-*) | |
+ ;; | |
+ # Recognize the basic CPU types without company name, with glob match. | |
+ xtensa*) | |
+ basic_machine=$basic_machine-unknown | |
;; | |
# Recognize the various machine names and aliases which stand | |
# for a CPU type and a company and sometimes even an OS. | |
t@@ -361,6 +456,9 @@ case $basic_machine in | |
basic_machine=a29k-amd | |
os=-udi | |
;; | |
+ abacus) | |
+ basic_machine=abacus-unknown | |
+ ;; | |
adobe68k) | |
basic_machine=m68010-adobe | |
os=-scout | |
t@@ -378,6 +476,9 @@ case $basic_machine in | |
amd64) | |
basic_machine=x86_64-pc | |
;; | |
+ amd64-*) | |
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ ;; | |
amdahl) | |
basic_machine=580-amdahl | |
os=-sysv | |
t@@ -401,6 +502,10 @@ case $basic_machine in | |
basic_machine=m68k-apollo | |
os=-bsd | |
;; | |
+ aros) | |
+ basic_machine=i386-pc | |
+ os=-aros | |
+ ;; | |
aux) | |
basic_machine=m68k-apple | |
os=-aux | |
t@@ -409,10 +514,35 @@ case $basic_machine in | |
basic_machine=ns32k-sequent | |
os=-dynix | |
;; | |
+ blackfin) | |
+ basic_machine=bfin-unknown | |
+ os=-linux | |
+ ;; | |
+ blackfin-*) | |
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ os=-linux | |
+ ;; | |
+ bluegene*) | |
+ basic_machine=powerpc-ibm | |
+ os=-cnk | |
+ ;; | |
+ c54x-*) | |
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ ;; | |
+ c55x-*) | |
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ ;; | |
+ c6x-*) | |
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ ;; | |
c90) | |
basic_machine=c90-cray | |
os=-unicos | |
;; | |
+ cegcc) | |
+ basic_machine=arm-unknown | |
+ os=-cegcc | |
+ ;; | |
convex-c1) | |
basic_machine=c1-convex | |
os=-bsd | |
t@@ -437,12 +567,27 @@ case $basic_machine in | |
basic_machine=j90-cray | |
os=-unicos | |
;; | |
+ craynv) | |
+ basic_machine=craynv-cray | |
+ os=-unicosmp | |
+ ;; | |
+ cr16 | cr16-*) | |
+ basic_machine=cr16-unknown | |
+ os=-elf | |
+ ;; | |
crds | unos) | |
basic_machine=m68k-crds | |
;; | |
+ crisv32 | crisv32-* | etraxfs*) | |
+ basic_machine=crisv32-axis | |
+ ;; | |
cris | cris-* | etrax*) | |
basic_machine=cris-axis | |
;; | |
+ crx) | |
+ basic_machine=crx-unknown | |
+ os=-elf | |
+ ;; | |
da30 | da30-*) | |
basic_machine=m68k-da30 | |
;; | |
t@@ -465,6 +610,14 @@ case $basic_machine in | |
basic_machine=m88k-motorola | |
os=-sysv3 | |
;; | |
+ dicos) | |
+ basic_machine=i686-pc | |
+ os=-dicos | |
+ ;; | |
+ djgpp) | |
+ basic_machine=i586-pc | |
+ os=-msdosdjgpp | |
+ ;; | |
dpx20 | dpx20-*) | |
basic_machine=rs6000-bull | |
os=-bosx | |
t@@ -576,7 +729,6 @@ case $basic_machine in | |
i370-ibm* | ibm*) | |
basic_machine=i370-ibm | |
;; | |
-# I'm not sure what "Sysv32" means. Should this be sysv3.2? | |
i*86v32) | |
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | |
os=-sysv32 | |
t@@ -615,6 +767,14 @@ case $basic_machine in | |
basic_machine=m68k-isi | |
os=-sysv | |
;; | |
+ m68knommu) | |
+ basic_machine=m68k-unknown | |
+ os=-linux | |
+ ;; | |
+ m68knommu-*) | |
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ os=-linux | |
+ ;; | |
m88k-omron*) | |
basic_machine=m88k-omron | |
;; | |
t@@ -626,10 +786,21 @@ case $basic_machine in | |
basic_machine=ns32k-utek | |
os=-sysv | |
;; | |
+ microblaze*) | |
+ basic_machine=microblaze-xilinx | |
+ ;; | |
+ mingw64) | |
+ basic_machine=x86_64-pc | |
+ os=-mingw64 | |
+ ;; | |
mingw32) | |
basic_machine=i386-pc | |
os=-mingw32 | |
;; | |
+ mingw32ce) | |
+ basic_machine=arm-unknown | |
+ os=-mingw32ce | |
+ ;; | |
miniframe) | |
basic_machine=m68000-convergent | |
;; | |
t@@ -643,10 +814,6 @@ case $basic_machine in | |
mips3*) | |
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`… | |
;; | |
- mmix*) | |
- basic_machine=mmix-knuth | |
- os=-mmixware | |
- ;; | |
monitor) | |
basic_machine=m68k-rom68k | |
os=-coff | |
t@@ -659,10 +826,21 @@ case $basic_machine in | |
basic_machine=i386-pc | |
os=-msdos | |
;; | |
+ ms1-*) | |
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` | |
+ ;; | |
+ msys) | |
+ basic_machine=i386-pc | |
+ os=-msys | |
+ ;; | |
mvs) | |
basic_machine=i370-ibm | |
os=-mvs | |
;; | |
+ nacl) | |
+ basic_machine=le32-unknown | |
+ os=-nacl | |
+ ;; | |
ncr3000) | |
basic_machine=i486-ncr | |
os=-sysv4 | |
t@@ -727,9 +905,11 @@ case $basic_machine in | |
np1) | |
basic_machine=np1-gould | |
;; | |
- nv1) | |
- basic_machine=nv1-cray | |
- os=-unicosmp | |
+ neo-tandem) | |
+ basic_machine=neo-tandem | |
+ ;; | |
+ nse-tandem) | |
+ basic_machine=nse-tandem | |
;; | |
nsr-tandem) | |
basic_machine=nsr-tandem | |
t@@ -738,9 +918,12 @@ case $basic_machine in | |
basic_machine=hppa1.1-oki | |
os=-proelf | |
;; | |
- or32 | or32-*) | |
+ openrisc | openrisc-*) | |
basic_machine=or32-unknown | |
- os=-coff | |
+ ;; | |
+ os400) | |
+ basic_machine=powerpc-ibm | |
+ os=-os400 | |
;; | |
OSE68000 | ose68000) | |
basic_machine=m68000-ericsson | |
t@@ -758,6 +941,14 @@ case $basic_machine in | |
basic_machine=i860-intel | |
os=-osf | |
;; | |
+ parisc) | |
+ basic_machine=hppa-unknown | |
+ os=-linux | |
+ ;; | |
+ parisc-*) | |
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ os=-linux | |
+ ;; | |
pbd) | |
basic_machine=sparc-tti | |
;; | |
t@@ -767,6 +958,12 @@ case $basic_machine in | |
pc532 | pc532-*) | |
basic_machine=ns32k-pc532 | |
;; | |
+ pc98) | |
+ basic_machine=i386-pc | |
+ ;; | |
+ pc98-*) | |
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ ;; | |
pentium | p5 | k5 | k6 | nexgen | viac3) | |
basic_machine=i586-pc | |
;; | |
t@@ -796,9 +993,10 @@ case $basic_machine in | |
;; | |
power) basic_machine=power-ibm | |
;; | |
- ppc) basic_machine=powerpc-unknown | |
+ ppc | ppcbe) basic_machine=powerpc-unknown | |
;; | |
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-… | |
+ ppc-* | ppcbe-*) | |
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` | |
;; | |
ppcle | powerpclittle | ppc-le | powerpc-little) | |
basic_machine=powerpcle-unknown | |
t@@ -808,7 +1006,7 @@ case $basic_machine in | |
;; | |
ppc64) basic_machine=powerpc64-unknown | |
;; | |
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-… | |
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | se… | |
;; | |
ppc64le | powerpc64little | ppc64-le | powerpc64-little) | |
basic_machine=powerpc64le-unknown | |
t@@ -823,6 +1021,14 @@ case $basic_machine in | |
basic_machine=i586-unknown | |
os=-pw32 | |
;; | |
+ rdos | rdos64) | |
+ basic_machine=x86_64-pc | |
+ os=-rdos | |
+ ;; | |
+ rdos32) | |
+ basic_machine=i386-pc | |
+ os=-rdos | |
+ ;; | |
rom68k) | |
basic_machine=m68k-rom68k | |
os=-coff | |
t@@ -833,6 +1039,12 @@ case $basic_machine in | |
rtpc | rtpc-*) | |
basic_machine=romp-ibm | |
;; | |
+ s390 | s390-*) | |
+ basic_machine=s390-ibm | |
+ ;; | |
+ s390x | s390x-*) | |
+ basic_machine=s390x-ibm | |
+ ;; | |
sa29200) | |
basic_machine=a29k-amd | |
os=-udi | |
t@@ -843,6 +1055,10 @@ case $basic_machine in | |
sb1el) | |
basic_machine=mipsisa64sb1el-unknown | |
;; | |
+ sde) | |
+ basic_machine=mipsisa32-sde | |
+ os=-elf | |
+ ;; | |
sei) | |
basic_machine=mips-sei | |
os=-seiux | |
t@@ -854,6 +1070,9 @@ case $basic_machine in | |
basic_machine=sh-hitachi | |
os=-hms | |
;; | |
+ sh5el) | |
+ basic_machine=sh5le-unknown | |
+ ;; | |
sh64) | |
basic_machine=sh64-unknown | |
;; | |
t@@ -875,6 +1094,9 @@ case $basic_machine in | |
basic_machine=i860-stratus | |
os=-sysv4 | |
;; | |
+ strongarm-* | thumb-*) | |
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` | |
+ ;; | |
sun2) | |
basic_machine=m68000-sun | |
;; | |
t@@ -931,17 +1153,9 @@ case $basic_machine in | |
basic_machine=t90-cray | |
os=-unicos | |
;; | |
- tic54x | c54x*) | |
- basic_machine=tic54x-unknown | |
- os=-coff | |
- ;; | |
- tic55x | c55x*) | |
- basic_machine=tic55x-unknown | |
- os=-coff | |
- ;; | |
- tic6x | c6x*) | |
- basic_machine=tic6x-unknown | |
- os=-coff | |
+ tile*) | |
+ basic_machine=$basic_machine-unknown | |
+ os=-linux-gnu | |
;; | |
tx39) | |
basic_machine=mipstx39-unknown | |
t@@ -956,6 +1170,10 @@ case $basic_machine in | |
tower | tower-32) | |
basic_machine=m68k-ncr | |
;; | |
+ tpf) | |
+ basic_machine=s390x-ibm | |
+ os=-tpf | |
+ ;; | |
udi29k) | |
basic_machine=a29k-amd | |
os=-udi | |
t@@ -999,9 +1217,16 @@ case $basic_machine in | |
basic_machine=hppa1.1-winbond | |
os=-proelf | |
;; | |
+ xbox) | |
+ basic_machine=i686-pc | |
+ os=-mingw32 | |
+ ;; | |
xps | xps100) | |
basic_machine=xps100-honeywell | |
;; | |
+ xscale-* | xscalee[bl]-*) | |
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` | |
+ ;; | |
ymp) | |
basic_machine=ymp-cray | |
os=-unicos | |
t@@ -1010,6 +1235,10 @@ case $basic_machine in | |
basic_machine=z8k-unknown | |
os=-sim | |
;; | |
+ z80-*-coff) | |
+ basic_machine=z80-unknown | |
+ os=-sim | |
+ ;; | |
none) | |
basic_machine=none-none | |
os=-none | |
t@@ -1029,6 +1258,9 @@ case $basic_machine in | |
romp) | |
basic_machine=romp-ibm | |
;; | |
+ mmix) | |
+ basic_machine=mmix-knuth | |
+ ;; | |
rs6000) | |
basic_machine=rs6000-ibm | |
;; | |
t@@ -1045,13 +1277,10 @@ case $basic_machine in | |
we32k) | |
basic_machine=we32k-att | |
;; | |
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) | |
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) | |
basic_machine=sh-unknown | |
;; | |
- sh64) | |
- basic_machine=sh64-unknown | |
- ;; | |
- sparc | sparcv8 | sparcv9 | sparcv9b) | |
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) | |
basic_machine=sparc-sun | |
;; | |
cydra) | |
t@@ -1095,9 +1324,12 @@ esac | |
if [ x"$os" != x"" ] | |
then | |
case $os in | |
- # First match some system type aliases | |
- # that might get confused with valid system types. | |
+ # First match some system type aliases | |
+ # that might get confused with valid system types. | |
# -solaris* is a basic system type, with this one exception. | |
+ -auroraux) | |
+ os=-auroraux | |
+ ;; | |
-solaris1 | -solaris1.*) | |
os=`echo $os | sed -e 's|solaris1|sunos4|'` | |
;; | |
t@@ -1118,25 +1350,31 @@ case $os in | |
# Each alternative MUST END IN A *, to match a version number. | |
# -sysv* is not here because it comes later, after sysvr4. | |
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | |
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | |
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | |
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -su… | |
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -sola… | |
+ | -sym* | -kopensolaris* | -plan9* \ | |
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof*… | |
- | -aos* \ | |
+ | -aos* | -aros* \ | |
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | |
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | |
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix… | |
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oa… | |
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | |
+ | -bitrig* | -openbsd* | -solidbsd* \ | |
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | |
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | |
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | |
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | |
- | -chorusos* | -chorusrdb* \ | |
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | |
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | |
+ | -chorusos* | -chorusrdb* | -cegcc* \ | |
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems… | |
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | |
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | |
+ | -uxpv* | -beos* | -mpeix* | -udk* \ | |
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | |
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | |
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | |
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | |
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | |
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) | |
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | |
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) | |
# Remember, each alternative MUST END IN *, to match a version number. | |
;; | |
-qnx*) | |
t@@ -1154,12 +1392,15 @@ case $os in | |
os=`echo $os | sed -e 's|nto|nto-qnx|'` | |
;; | |
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | |
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | |
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku… | |
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) | |
;; | |
-mac*) | |
os=`echo $os | sed -e 's|mac|macos|'` | |
;; | |
+ -linux-dietlibc) | |
+ os=-linux-dietlibc | |
+ ;; | |
-linux*) | |
os=`echo $os | sed -e 's|linux|linux-gnu|'` | |
;; | |
t@@ -1172,6 +1413,9 @@ case $os in | |
-opened*) | |
os=-openedition | |
;; | |
+ -os400*) | |
+ os=-os400 | |
+ ;; | |
-wince*) | |
os=-wince | |
;; | |
t@@ -1193,6 +1437,9 @@ case $os in | |
-atheos*) | |
os=-atheos | |
;; | |
+ -syllable*) | |
+ os=-syllable | |
+ ;; | |
-386bsd) | |
os=-bsd | |
;; | |
t@@ -1215,6 +1462,9 @@ case $os in | |
-sinix*) | |
os=-sysv4 | |
;; | |
+ -tpf*) | |
+ os=-tpf | |
+ ;; | |
-triton*) | |
os=-sysv3 | |
;; | |
t@@ -1248,8 +1498,13 @@ case $os in | |
-aros*) | |
os=-aros | |
;; | |
- -kaos*) | |
- os=-kaos | |
+ -zvmoe) | |
+ os=-zvmoe | |
+ ;; | |
+ -dicos*) | |
+ os=-dicos | |
+ ;; | |
+ -nacl*) | |
;; | |
-none) | |
;; | |
t@@ -1273,6 +1528,12 @@ else | |
# system, and we'll never get to this point. | |
case $basic_machine in | |
+ score-*) | |
+ os=-elf | |
+ ;; | |
+ spu-*) | |
+ os=-elf | |
+ ;; | |
*-acorn) | |
os=-riscix1.2 | |
;; | |
t@@ -1285,6 +1546,18 @@ case $basic_machine in | |
c4x-* | tic4x-*) | |
os=-coff | |
;; | |
+ hexagon-*) | |
+ os=-elf | |
+ ;; | |
+ tic54x-*) | |
+ os=-coff | |
+ ;; | |
+ tic55x-*) | |
+ os=-coff | |
+ ;; | |
+ tic6x-*) | |
+ os=-coff | |
+ ;; | |
# This must come before the *-dec entry. | |
pdp10-*) | |
os=-tops20 | |
t@@ -1303,19 +1576,22 @@ case $basic_machine in | |
;; | |
m68000-sun) | |
os=-sunos3 | |
- # This also exists in the configure program, but was not the | |
- # default. | |
- # os=-sunos4 | |
;; | |
m68*-cisco) | |
os=-aout | |
;; | |
+ mep-*) | |
+ os=-elf | |
+ ;; | |
mips*-cisco) | |
os=-elf | |
;; | |
mips*-*) | |
os=-elf | |
;; | |
+ or1k-*) | |
+ os=-elf | |
+ ;; | |
or32-*) | |
os=-coff | |
;; | |
t@@ -1328,9 +1604,15 @@ case $basic_machine in | |
*-be) | |
os=-beos | |
;; | |
+ *-haiku) | |
+ os=-haiku | |
+ ;; | |
*-ibm) | |
os=-aix | |
;; | |
+ *-knuth) | |
+ os=-mmixware | |
+ ;; | |
*-wec) | |
os=-proelf | |
;; | |
t@@ -1433,7 +1715,7 @@ case $basic_machine in | |
-sunos*) | |
vendor=sun | |
;; | |
- -aix*) | |
+ -cnk*|-aix*) | |
vendor=ibm | |
;; | |
-beos*) | |
t@@ -1463,9 +1745,15 @@ case $basic_machine in | |
-mvs* | -opened*) | |
vendor=ibm | |
;; | |
+ -os400*) | |
+ vendor=ibm | |
+ ;; | |
-ptx*) | |
vendor=sequent | |
;; | |
+ -tpf*) | |
+ vendor=ibm | |
+ ;; | |
-vxsim* | -vxworks* | -windiss*) | |
vendor=wrs | |
;; | |
t@@ -1490,7 +1778,7 @@ case $basic_machine in | |
esac | |
echo $basic_machine$os | |
-exit 0 | |
+exit | |
# Local variables: | |
# eval: (add-hook 'write-file-hooks 'time-stamp) | |
diff --git a/configure.ac b/configure.ac | |
t@@ -0,0 +1,421 @@ | |
+dnl Process this file with autoconf to produce a configure script. | |
+AC_INIT([dopewars], [SVN]) | |
+AC_CONFIG_SRCDIR([src/dopewars.c]) | |
+ | |
+AC_CONFIG_MACRO_DIR([m4]) | |
+ | |
+AC_CANONICAL_TARGET | |
+AC_USE_SYSTEM_EXTENSIONS | |
+ | |
+dnl Initialise automake | |
+AM_INIT_AUTOMAKE | |
+ | |
+dnl Write configuration defines into config.h | |
+AM_CONFIG_HEADER(config.h) | |
+ | |
+dnl We need this for the Darwin test, plus gettext uses it anyway | |
+AC_CANONICAL_HOST | |
+ | |
+dnl Checks for programs. | |
+AC_PROG_CC | |
+AC_ISC_POSIX | |
+AC_PROG_INSTALL | |
+AC_PROG_MAKE_SET | |
+AC_PROG_LIBTOOL | |
+ | |
+dnl Checks for header files. | |
+AC_HEADER_STDC | |
+AC_HEADER_SYS_WAIT | |
+AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h stdlib.h) | |
+ | |
+dnl Checks for typedefs, structures, and compiler characteristics. | |
+AC_HEADER_TIME | |
+AC_STRUCT_TM | |
+ | |
+dnl Fix Apple's stupid C preprocessor | |
+case "$host_os" in darwin*) | |
+ CPPFLAGS="$CPPFLAGS -no-cpp-precomp" | |
+esac | |
+ | |
+dnl Process client options | |
+AC_ARG_ENABLE(gui-client, | |
+[ --enable-gui-client include graphical client (GTK+/Win32)], | |
+[ GUI_CLIENT="$enableval" ],[ GUI_CLIENT="probe" ]) | |
+ | |
+AC_ARG_ENABLE(curses-client, | |
+[ --enable-curses-client include curses client], | |
+[ CURSES_CLIENT="$enableval" ],[ CURSES_CLIENT="probe" ]) | |
+ | |
+AC_ARG_ENABLE(gui-server, | |
+[ --enable-gui-server use a simple GTK+/Win32 GUI for the server], | |
+[ GUI_SERVER="$enableval" ],[ GUI_SERVER="probe" ]) | |
+ | |
+AC_ARG_WITH(esd, | |
+[ --without-esd do not support ESD sound output], | |
+[ USE_ESD="$withval" ], [ USE_ESD="probe" ]) | |
+ | |
+AC_ARG_WITH(sdl, | |
+[ --without-sdl do not support SDL sound output], | |
+[ USE_SDL="$withval" ], [ USE_SDL="probe" ]) | |
+ | |
+ESD=no | |
+SDL=no | |
+ | |
+dnl Test for Cygwin environment | |
+AC_CYGWIN | |
+dnl Let the user override this with the --enable-nativewin32 option | |
+AC_ARG_ENABLE(nativewin32, | |
+[ --enable-nativewin32 build a native Win32 binary under Cygwin], | |
+[ CYGWIN="$enableval" ]) | |
+ | |
+if test "$CYGWIN" = "yes" ; then | |
+ AC_MSG_RESULT([Configuring for native Win32 binary under Cygwin]) | |
+ AC_DEFINE(CYGWIN, 1, [Define if building under the Cygwin environment]) | |
+ | |
+ dnl This flag allows linking with MSVC-generated DLLs. -fnative-struct was | |
+ dnl used by gcc 2, and -mms-bitfields by gcc 3, so it is tested for here. | |
+ bkp_CFLAGS="$CFLAGS" | |
+ AC_MSG_CHECKING(for compiler MSVC compatibility flag) | |
+ CFLAGS="$CFLAGS -mms-bitfields" | |
+ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM() ], [ mscompat="-mms-bitfields" ], | |
+ [ mscompat="-fnative-struct" ]) | |
+ AC_MSG_RESULT($mscompat) | |
+ CFLAGS="$bkp_CFLAGS" | |
+ | |
+ dnl Libraries and flags | |
+ dnl N.B. -mno-cygwin is included in CPPFLAGS so the right headers | |
+ dnl are detected (in /usr/include/mingw/ rather than /usr/include) | |
+ dnl later on - e.g. sys/param.h isn't in mingw. | |
+ CFLAGS="$CFLAGS -mwindows $mscompat" | |
+ CPPFLAGS="$CPPFLAGS -mno-cygwin" | |
+ LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr" | |
+ LDFLAGS="$LDFLAGS -mno-cygwin" | |
+ | |
+ AM_PATH_GLIB_2_0(2.0.0, , [AC_MSG_ERROR(GLib is required)]) | |
+ | |
+ dnl We need to compile and then link in the Windows resources | |
+ WNDRES="dopewars.res" | |
+ AC_SUBST(WNDRES) | |
+ | |
+ dnl Add support for the Windows multimedia system | |
+ SOUND_LIBS="$SOUND_LIBS -lwinmm" | |
+ PLUGOBJS="$PLUGOBJS plugins/sound_winmm.o" | |
+ AC_DEFINE(HAVE_WINMM, 1, [Do we have the Windows multimedia system?]) | |
+ | |
+ dnl Use graphical server by default | |
+ if test "$GUI_SERVER" = "probe"; then | |
+ GUI_SERVER="yes" | |
+ fi | |
+ | |
+ dnl Read high score files, docs and locale files from current directory | |
+ datadir="." | |
+ localstatedir="." | |
+else | |
+ AC_MSG_RESULT([Configuring for Unix binary]) | |
+ | |
+ dnl On true Unix systems, test for valid curses-like libraries | |
+ if test "$CURSES_CLIENT" != "no" ; then | |
+ AC_CHECK_LIB(ncurses,newterm) | |
+ if test "$ac_cv_lib_ncurses_newterm" = "no" ; then | |
+ AC_CHECK_LIB(curses,newterm) | |
+ if test "$ac_cv_lib_curses_newterm" = "no" ; then | |
+ AC_CHECK_LIB(cur_colr,newterm) | |
+ if test "$ac_cv_lib_cur_colr_newterm" = "no" ; then | |
+ if test "$CURSES_CLIENT" = "yes" ; then | |
+ AC_MSG_ERROR(Cannot find any curses-type library) | |
+ else | |
+ AC_MSG_WARN(Cannot find any curses-type library) | |
+ CURSES_CLIENT="no" | |
+ fi | |
+ fi | |
+ fi | |
+ fi | |
+ fi | |
+ | |
+ gtk2_found="probe" | |
+ if test "$GUI_CLIENT" != "no" -o "$GUI_SERVER" != "no"; then | |
+ AM_PATH_GTK_2_0(2.0.0,gtk2_found="yes",gtk2_found="no") | |
+ if test "$gtk2_found" = "no" ; then | |
+ if test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes" ; then | |
+ AC_MSG_ERROR(Cannot find GTK+) | |
+ else | |
+ AC_MSG_WARN(Cannot find GTK+; not building GUI client or server) | |
+ GUI_CLIENT="no" | |
+ GUI_SERVER="no" | |
+ fi | |
+ fi | |
+ fi | |
+ | |
+ dnl We NEED glib | |
+ AM_PATH_GLIB_2_0(2.0.0, , [AC_MSG_ERROR(GLib is required)]) | |
+ | |
+ dnl Add esound support if available | |
+ if test "$USE_ESD" != "no"; then | |
+ AM_PATH_ESD(0.0.20, ESD=yes) | |
+ if test "$ESD" = "yes"; then | |
+ SOUND_CFLAGS="$SOUND_CFLAGS $ESD_CFLAGS" | |
+ SOUND_LIBS="$SOUND_LIBS $ESD_LIBS" | |
+ PLUGOBJS="$PLUGOBJS plugins/sound_esd.o" | |
+ AC_SUBST(ESD_LIBS) | |
+ AC_DEFINE(HAVE_ESD, 1, [Do we have the ESD sound library?]) | |
+ elif test "$USE_ESD" = "yes"; then | |
+ AC_MSG_ERROR(Cannot find ESD library) | |
+ fi | |
+ fi | |
+ | |
+ dnl Add SDL_mixer sound support if available | |
+ if test "$USE_SDL" != "no"; then | |
+ SDL_ALL=no | |
+ AM_PATH_SDL(1.0.0, SDL=yes) | |
+ if test "$SDL" = "yes"; then | |
+ headers=no | |
+ libs=no | |
+ AC_CHECK_HEADER(SDL/SDL_mixer.h, headers=yes) | |
+ AC_CHECK_LIB(SDL_mixer, Mix_OpenAudio, libs=yes) | |
+ if test "$libs" = "yes"; then | |
+ if test "$headers" = "yes"; then | |
+ SOUND_CFLAGS="$SOUND_CFLAGS $SDL_CFLAGS" | |
+ SDL_LIBS="$SDL_LIBS -lSDL_mixer" | |
+ SOUND_LIBS="$SOUND_LIBS $SDL_LIBS" | |
+ PLUGOBJS="$PLUGOBJS plugins/sound_sdl.o" | |
+ AC_SUBST(SDL_LIBS) | |
+ AC_DEFINE(HAVE_SDL_MIXER, 1, | |
+ [Do we have the SDL_mixer sound library?]) | |
+ SDL_ALL=yes | |
+ fi | |
+ fi | |
+ fi | |
+ if test "$USE_SDL" = "yes" -a "$SDL_ALL" = "no"; then | |
+ AC_MSG_ERROR(Cannot find SDL library) | |
+ fi | |
+ fi | |
+ | |
+ dnl Use console server by default | |
+ if test "$GUI_SERVER" = "probe"; then | |
+ GUI_SERVER="no" | |
+ fi | |
+ | |
+ dnl Some systems use int rather than socklen_t as an argument to getsockopt | |
+ AC_MSG_CHECKING([for socklen_t data type]) | |
+ AC_TRY_COMPILE([#include <sys/types.h> | |
+ #include <sys/socket.h>],[socklen_t val], | |
+ [AC_MSG_RESULT([yes]) | |
+ AC_DEFINE(HAVE_SOCKLEN_T, 1, | |
+ [Do we have the socklen_t data type?])], | |
+ [AC_MSG_RESULT([no])]) | |
+fi | |
+ | |
+AM_CONDITIONAL(ESD, test "$ESD" = "yes") | |
+AM_CONDITIONAL(SDL, test "$SDL" = "yes") | |
+ | |
+dnl If probing was unsuccessful, these will be set to "no"; therefore, | |
+dnl if still set to "probe" then everything worked, so set to "yes" | |
+if test "$GUI_CLIENT" = "probe"; then | |
+ GUI_CLIENT="yes" | |
+fi | |
+if test "$CURSES_CLIENT" = "probe"; then | |
+ CURSES_CLIENT="yes" | |
+fi | |
+ | |
+dnl Do i18n stuff | |
+ALL_LINGUAS="de pl pt_BR fr fr_CA nn es es_ES" | |
+AM_GNU_GETTEXT([external]) | |
+if test "$gt_cv_func_gettext_libintl" = "yes"; then | |
+ LIBS="-lintl $LIBS" | |
+fi | |
+ | |
+if test "$GUI_CLIENT" = "yes" ; then | |
+ AC_DEFINE(GUI_CLIENT, 1, [Use the graphical client?]) | |
+fi | |
+ | |
+if test "$CURSES_CLIENT" = "yes" ; then | |
+ AC_DEFINE(CURSES_CLIENT, 1, [Use the (n)curses client?]) | |
+fi | |
+ | |
+if test "$GUI_SERVER" = "yes" ; then | |
+ AC_DEFINE(GUI_SERVER, 1, [Use a graphical server?]) | |
+fi | |
+ | |
+dnl Can we use a long long datatype for price_t ? | |
+AC_CHECK_SIZEOF(long long) | |
+ | |
+dnl Checks for library functions. | |
+AC_FUNC_MEMCMP | |
+AC_FUNC_SETVBUF_REVERSED | |
+AC_FUNC_STRFTIME | |
+AC_CHECK_FUNCS(strdup strstr getopt getopt_long fork) | |
+ | |
+dnl Enable plugins only if we can find the dlopen function, and | |
+dnl the user does not disable them with --disable-plugins or --disable-shared | |
+AC_ARG_ENABLE(plugins, | |
+[ --enable-plugins use dynamically-loaded sound modules], | |
+[ plugins="$enableval" ],[ plugins="probe" ]) | |
+ | |
+if test "$enable_shared" = "no" ; then | |
+ plugins="no" | |
+fi | |
+ | |
+if test "$plugins" != "no" ; then | |
+ AC_SEARCH_LIBS(dlopen, dl) | |
+ AC_CHECK_FUNC(dlopen, [plugins="yes"], [plugins="no"]) | |
+fi | |
+ | |
+if test "$plugins" = "yes" ; then | |
+ AC_DEFINE(PLUGINS, 1, [Define if using dynamically-loaded sound modules]) | |
+ plugindir="${libdir}/dopewars" | |
+ AC_SUBST(plugindir) | |
+ DP_EXPAND_DIR(PLUGINDIR, '${plugindir}') | |
+ AC_DEFINE_UNQUOTED(PLUGINDIR, "$PLUGINDIR", | |
+ [The directory containing the plugins]) | |
+ PLUGOBJS="" | |
+else | |
+ PLUGLIBS="$SOUND_LIBS" | |
+ AC_SUBST(PLUGLIBS) | |
+fi | |
+AC_SUBST(PLUGOBJS) | |
+AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes") | |
+ | |
+dnl Enable networking by default under Win32, but on Unix systems | |
+dnl make it dependent on the availability of select and socket | |
+network="no" | |
+if test "$CYGWIN" = "yes" ; then | |
+ network="yes" | |
+else | |
+ dnl Check for socket and select even if networking gets manually | |
+ dnl disabled below, since select is used if available for | |
+ dnl millisecond sleeping | |
+ AC_SEARCH_LIBS(socket,socket) | |
+ AC_SEARCH_LIBS(gethostbyname,nsl socket) | |
+ AC_CHECK_FUNCS(socket gethostbyname select) | |
+ if test "$ac_cv_func_select" = "yes" ; then | |
+ if test "$ac_cv_func_socket" = "yes" ; then | |
+ if test "$ac_cv_func_gethostbyname" = "yes" ; then | |
+ network="yes" | |
+ fi | |
+ fi | |
+ fi | |
+fi | |
+ | |
+dnl Let the user override this with the --enable-networking option | |
+AC_ARG_ENABLE(networking, | |
+[ --enable-networking dopewars will use TCP/IP to connect to servers], | |
+[ network="$enableval" ]) | |
+ | |
+dnl Inform the user of the status of networking | |
+if test "$network" = "yes" ; then | |
+ AC_DEFINE(NETWORKING, 1, | |
+ [Define if dopewars should use TCP/IP networking to connect to servers]) | |
+fi | |
+ | |
+AC_ARG_ENABLE(strict, | |
+[ --enable-strict if using gcc, enable extra warnings above -Wall], | |
+[ extrawarnings="$enableval" ]) | |
+ | |
+dnl Enable full warnings if using gcc | |
+if test -n "$GCC"; then | |
+ if test "$extrawarnings" = "yes" ; then | |
+ CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wcast-qual -Wcast-align -Wsign-co… | |
+ else | |
+ CFLAGS="$CFLAGS -Wall" | |
+ fi | |
+fi | |
+ | |
+dnl Tell dopewars where the high scores, docs and locale files are | |
+DP_EXPAND_DIR(DPSCOREDIR, '${localstatedir}') | |
+AC_DEFINE_UNQUOTED(DPSCOREDIR, "$DPSCOREDIR", | |
+ [The directory containing the high score file]) | |
+AC_SUBST(DPSCOREDIR) | |
+ | |
+DP_EXPAND_DIR(DPDATADIR, '${datadir}') | |
+AC_DEFINE_UNQUOTED(DPDATADIR, "$DPDATADIR", | |
+ [The directory containing the docs and sounds]) | |
+AC_SUBST(DPDATADIR) | |
+ | |
+localedir=${datadir}/locale | |
+AC_SUBST(localedir) | |
+DP_EXPAND_DIR(LOCALEDIR, '${localedir}') | |
+AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR", | |
+ [The directory containing locale files]) | |
+ | |
+dnl Add in the required clients | |
+AM_CONDITIONAL(GUI_CLIENT, test "$GUI_CLIENT" = "yes") | |
+if test "$GUI_CLIENT" = "yes" ; then | |
+ GUILIB="gui_client/libguiclient.a" | |
+ AC_SUBST(GUILIB) | |
+fi | |
+AM_CONDITIONAL(CURSES_CLIENT, test "$CURSES_CLIENT" = "yes") | |
+if test "$CURSES_CLIENT" = "yes" ; then | |
+ CURSESLIB="curses_client/libcursesclient.a" | |
+ AC_SUBST(CURSESLIB) | |
+fi | |
+ | |
+dnl Compile in the gtkport stuff for any kind of GUI | |
+AM_CONDITIONAL(GTKPORT, test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes") | |
+if test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes" ; then | |
+ GTKPORTLIB="gtkport/libgtkport.a" | |
+ AC_SUBST(GTKPORTLIB) | |
+fi | |
+ | |
+dnl Compile in the cursesport stuff for the curses client only | |
+AM_CONDITIONAL(CURSESPORT, test "$CURSES_CLIENT" = "yes") | |
+if test "$CURSES_CLIENT" = "yes" ; then | |
+ CURSESPORTLIB="cursesport/libcursesport.a" | |
+ AC_SUBST(CURSESPORTLIB) | |
+fi | |
+ | |
+AC_SUBST(SOUND_CFLAGS) | |
+AC_SUBST(SOUND_LIBS) | |
+ | |
+AC_OUTPUT([ | |
+Makefile | |
+src/Makefile | |
+src/gui_client/Makefile | |
+src/curses_client/Makefile | |
+src/gtkport/Makefile | |
+src/cursesport/Makefile | |
+src/plugins/Makefile | |
+sounds/Makefile | |
+sounds/19.5degs/Makefile | |
+doc/Makefile | |
+doc/help/Makefile | |
+dopewars.spec | |
+doc/dopewars.6 | |
+po/Makefile.in], | |
+[]) | |
+ | |
+echo | |
+echo "dopewars has been configured as follows:" | |
+echo | |
+if test "$CYGWIN" = "yes" ; then | |
+ echo "Building native Windows (Win32) version" | |
+else | |
+ echo "Building Unix version" | |
+fi | |
+echo | |
+echo "CLIENTS" | |
+if test "$CURSES_CLIENT" = "no" -a "$GUI_CLIENT" = "no" ; then | |
+ echo " - No clients will be compiled (binary will be server/AI only)" | |
+else | |
+ if test "$CURSES_CLIENT" = "yes" ; then | |
+ echo " - Text-mode (curses) client" | |
+ fi | |
+ if test "$GUI_CLIENT" = "yes" ; then | |
+ echo " - Graphical (GTK+ or Win32) client" | |
+ fi | |
+fi | |
+ | |
+echo | |
+if test "$network" = "yes" ; then | |
+ echo "TCP/IP networking support enabled for multi-player games" | |
+ echo | |
+ echo "SERVER" | |
+ if test "$GUI_SERVER" = "yes" ; then | |
+ echo " - Graphical server" | |
+ else | |
+ echo " - Text-mode server" | |
+ fi | |
+else | |
+ echo "Networking support DISABLED; single-player mode only" | |
+fi | |
+ | |
+echo | |
diff --git a/configure.in b/configure.in | |
t@@ -1,416 +0,0 @@ | |
-dnl Process this file with autoconf to produce a configure script. | |
-AC_INIT(src/dopewars.c) | |
- | |
-dnl Initialise automake | |
-AM_INIT_AUTOMAKE(dopewars,SVN) | |
- | |
-dnl Write configuration defines into config.h | |
-AM_CONFIG_HEADER(config.h) | |
- | |
-dnl We need this for the Darwin test, plus gettext uses it anyway | |
-AC_CANONICAL_HOST | |
- | |
-dnl Checks for programs. | |
-AC_PROG_CC | |
-AC_ISC_POSIX | |
-AC_PROG_INSTALL | |
-AC_PROG_MAKE_SET | |
-AC_PROG_LIBTOOL | |
- | |
-dnl Checks for header files. | |
-AC_HEADER_STDC | |
-AC_HEADER_SYS_WAIT | |
-AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h stdlib.h) | |
- | |
-dnl Checks for typedefs, structures, and compiler characteristics. | |
-AC_HEADER_TIME | |
-AC_STRUCT_TM | |
- | |
-dnl Fix Apple's stupid C preprocessor | |
-case "$host_os" in darwin*) | |
- CPPFLAGS="$CPPFLAGS -no-cpp-precomp" | |
-esac | |
- | |
-dnl Process client options | |
-AC_ARG_ENABLE(gui-client, | |
-[ --enable-gui-client include graphical client (GTK+/Win32)], | |
-[ GUI_CLIENT="$enableval" ],[ GUI_CLIENT="probe" ]) | |
- | |
-AC_ARG_ENABLE(curses-client, | |
-[ --enable-curses-client include curses client], | |
-[ CURSES_CLIENT="$enableval" ],[ CURSES_CLIENT="probe" ]) | |
- | |
-AC_ARG_ENABLE(gui-server, | |
-[ --enable-gui-server use a simple GTK+/Win32 GUI for the server], | |
-[ GUI_SERVER="$enableval" ],[ GUI_SERVER="probe" ]) | |
- | |
-AC_ARG_WITH(esd, | |
-[ --without-esd do not support ESD sound output], | |
-[ USE_ESD="$withval" ], [ USE_ESD="probe" ]) | |
- | |
-AC_ARG_WITH(sdl, | |
-[ --without-sdl do not support SDL sound output], | |
-[ USE_SDL="$withval" ], [ USE_SDL="probe" ]) | |
- | |
-ESD=no | |
-SDL=no | |
- | |
-dnl Test for Cygwin environment | |
-AC_CYGWIN | |
-dnl Let the user override this with the --enable-nativewin32 option | |
-AC_ARG_ENABLE(nativewin32, | |
-[ --enable-nativewin32 build a native Win32 binary under Cygwin], | |
-[ CYGWIN="$enableval" ]) | |
- | |
-if test "$CYGWIN" = "yes" ; then | |
- AC_MSG_RESULT([Configuring for native Win32 binary under Cygwin]) | |
- AC_DEFINE(CYGWIN, 1, [Define if building under the Cygwin environment]) | |
- | |
- dnl This flag allows linking with MSVC-generated DLLs. -fnative-struct was | |
- dnl used by gcc 2, and -mms-bitfields by gcc 3, so it is tested for here. | |
- bkp_CFLAGS="$CFLAGS" | |
- AC_MSG_CHECKING(for compiler MSVC compatibility flag) | |
- CFLAGS="$CFLAGS -mms-bitfields" | |
- AC_COMPILE_IFELSE([ AC_LANG_PROGRAM() ], [ mscompat="-mms-bitfields" ], | |
- [ mscompat="-fnative-struct" ]) | |
- AC_MSG_RESULT($mscompat) | |
- CFLAGS="$bkp_CFLAGS" | |
- | |
- dnl Libraries and flags | |
- dnl N.B. -mno-cygwin is included in CPPFLAGS so the right headers | |
- dnl are detected (in /usr/include/mingw/ rather than /usr/include) | |
- dnl later on - e.g. sys/param.h isn't in mingw. | |
- CFLAGS="$CFLAGS -mwindows $mscompat" | |
- CPPFLAGS="$CPPFLAGS -mno-cygwin" | |
- LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr" | |
- LDFLAGS="$LDFLAGS -mno-cygwin" | |
- | |
- AM_PATH_GLIB_2_0(2.0.0, , [AC_MSG_ERROR(GLib is required)]) | |
- | |
- dnl We need to compile and then link in the Windows resources | |
- WNDRES="dopewars.res" | |
- AC_SUBST(WNDRES) | |
- | |
- dnl Add support for the Windows multimedia system | |
- SOUND_LIBS="$SOUND_LIBS -lwinmm" | |
- PLUGOBJS="$PLUGOBJS plugins/sound_winmm.o" | |
- AC_DEFINE(HAVE_WINMM, 1, [Do we have the Windows multimedia system?]) | |
- | |
- dnl Use graphical server by default | |
- if test "$GUI_SERVER" = "probe"; then | |
- GUI_SERVER="yes" | |
- fi | |
- | |
- dnl Read high score files, docs and locale files from current directory | |
- datadir="." | |
- localstatedir="." | |
-else | |
- AC_MSG_RESULT([Configuring for Unix binary]) | |
- | |
- dnl On true Unix systems, test for valid curses-like libraries | |
- if test "$CURSES_CLIENT" != "no" ; then | |
- AC_CHECK_LIB(ncurses,newterm) | |
- if test "$ac_cv_lib_ncurses_newterm" = "no" ; then | |
- AC_CHECK_LIB(curses,newterm) | |
- if test "$ac_cv_lib_curses_newterm" = "no" ; then | |
- AC_CHECK_LIB(cur_colr,newterm) | |
- if test "$ac_cv_lib_cur_colr_newterm" = "no" ; then | |
- if test "$CURSES_CLIENT" = "yes" ; then | |
- AC_MSG_ERROR(Cannot find any curses-type library) | |
- else | |
- AC_MSG_WARN(Cannot find any curses-type library) | |
- CURSES_CLIENT="no" | |
- fi | |
- fi | |
- fi | |
- fi | |
- fi | |
- | |
- gtk2_found="probe" | |
- if test "$GUI_CLIENT" != "no" -o "$GUI_SERVER" != "no"; then | |
- AM_PATH_GTK_2_0(2.0.0,gtk2_found="yes",gtk2_found="no") | |
- if test "$gtk2_found" = "no" ; then | |
- if test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes" ; then | |
- AC_MSG_ERROR(Cannot find GTK+) | |
- else | |
- AC_MSG_WARN(Cannot find GTK+; not building GUI client or server) | |
- GUI_CLIENT="no" | |
- GUI_SERVER="no" | |
- fi | |
- fi | |
- fi | |
- | |
- dnl We NEED glib | |
- AM_PATH_GLIB_2_0(2.0.0, , [AC_MSG_ERROR(GLib is required)]) | |
- | |
- dnl Add esound support if available | |
- if test "$USE_ESD" != "no"; then | |
- AM_PATH_ESD(0.0.20, ESD=yes) | |
- if test "$ESD" = "yes"; then | |
- SOUND_CFLAGS="$SOUND_CFLAGS $ESD_CFLAGS" | |
- SOUND_LIBS="$SOUND_LIBS $ESD_LIBS" | |
- PLUGOBJS="$PLUGOBJS plugins/sound_esd.o" | |
- AC_SUBST(ESD_LIBS) | |
- AC_DEFINE(HAVE_ESD, 1, [Do we have the ESD sound library?]) | |
- elif test "$USE_ESD" = "yes"; then | |
- AC_MSG_ERROR(Cannot find ESD library) | |
- fi | |
- fi | |
- | |
- dnl Add SDL_mixer sound support if available | |
- if test "$USE_SDL" != "no"; then | |
- SDL_ALL=no | |
- AM_PATH_SDL(1.0.0, SDL=yes) | |
- if test "$SDL" = "yes"; then | |
- headers=no | |
- libs=no | |
- AC_CHECK_HEADER(SDL/SDL_mixer.h, headers=yes) | |
- AC_CHECK_LIB(SDL_mixer, Mix_OpenAudio, libs=yes) | |
- if test "$libs" = "yes"; then | |
- if test "$headers" = "yes"; then | |
- SOUND_CFLAGS="$SOUND_CFLAGS $SDL_CFLAGS" | |
- SDL_LIBS="$SDL_LIBS -lSDL_mixer" | |
- SOUND_LIBS="$SOUND_LIBS $SDL_LIBS" | |
- PLUGOBJS="$PLUGOBJS plugins/sound_sdl.o" | |
- AC_SUBST(SDL_LIBS) | |
- AC_DEFINE(HAVE_SDL_MIXER, 1, | |
- [Do we have the SDL_mixer sound library?]) | |
- SDL_ALL=yes | |
- fi | |
- fi | |
- fi | |
- if test "$USE_SDL" = "yes" -a "$SDL_ALL" = "no"; then | |
- AC_MSG_ERROR(Cannot find SDL library) | |
- fi | |
- fi | |
- | |
- dnl Use console server by default | |
- if test "$GUI_SERVER" = "probe"; then | |
- GUI_SERVER="no" | |
- fi | |
- | |
- dnl Some systems use int rather than socklen_t as an argument to getsockopt | |
- AC_MSG_CHECKING([for socklen_t data type]) | |
- AC_TRY_COMPILE([#include <sys/types.h> | |
- #include <sys/socket.h>],[socklen_t val], | |
- [AC_MSG_RESULT([yes]) | |
- AC_DEFINE(HAVE_SOCKLEN_T, 1, | |
- [Do we have the socklen_t data type?])], | |
- [AC_MSG_RESULT([no])]) | |
-fi | |
- | |
-AM_CONDITIONAL(ESD, test "$ESD" = "yes") | |
-AM_CONDITIONAL(SDL, test "$SDL" = "yes") | |
- | |
-dnl If probing was unsuccessful, these will be set to "no"; therefore, | |
-dnl if still set to "probe" then everything worked, so set to "yes" | |
-if test "$GUI_CLIENT" = "probe"; then | |
- GUI_CLIENT="yes" | |
-fi | |
-if test "$CURSES_CLIENT" = "probe"; then | |
- CURSES_CLIENT="yes" | |
-fi | |
- | |
-dnl Do i18n stuff | |
-ALL_LINGUAS="de pl pt_BR fr fr_CA nn es es_ES" | |
-AM_GNU_GETTEXT | |
-if test "$gt_cv_func_gettext_libintl" = "yes"; then | |
- LIBS="-lintl $LIBS" | |
-fi | |
- | |
-if test "$GUI_CLIENT" = "yes" ; then | |
- AC_DEFINE(GUI_CLIENT, 1, [Use the graphical client?]) | |
-fi | |
- | |
-if test "$CURSES_CLIENT" = "yes" ; then | |
- AC_DEFINE(CURSES_CLIENT, 1, [Use the (n)curses client?]) | |
-fi | |
- | |
-if test "$GUI_SERVER" = "yes" ; then | |
- AC_DEFINE(GUI_SERVER, 1, [Use a graphical server?]) | |
-fi | |
- | |
-dnl Can we use a long long datatype for price_t ? | |
-AC_CHECK_SIZEOF(long long) | |
- | |
-dnl Checks for library functions. | |
-AC_FUNC_MEMCMP | |
-AC_FUNC_SETVBUF_REVERSED | |
-AC_FUNC_STRFTIME | |
-AC_CHECK_FUNCS(strdup strstr getopt getopt_long fork) | |
- | |
-dnl Enable plugins only if we can find the dlopen function, and | |
-dnl the user does not disable them with --disable-plugins or --disable-shared | |
-AC_ARG_ENABLE(plugins, | |
-[ --enable-plugins use dynamically-loaded sound modules], | |
-[ plugins="$enableval" ],[ plugins="probe" ]) | |
- | |
-if test "$enable_shared" = "no" ; then | |
- plugins="no" | |
-fi | |
- | |
-if test "$plugins" != "no" ; then | |
- AC_SEARCH_LIBS(dlopen, dl) | |
- AC_CHECK_FUNC(dlopen, [plugins="yes"], [plugins="no"]) | |
-fi | |
- | |
-if test "$plugins" = "yes" ; then | |
- AC_DEFINE(PLUGINS, 1, [Define if using dynamically-loaded sound modules]) | |
- plugindir="${libdir}/dopewars" | |
- AC_SUBST(plugindir) | |
- DP_EXPAND_DIR(PLUGINDIR, '${plugindir}') | |
- AC_DEFINE_UNQUOTED(PLUGINDIR, "$PLUGINDIR", | |
- [The directory containing the plugins]) | |
- PLUGOBJS="" | |
-else | |
- PLUGLIBS="$SOUND_LIBS" | |
- AC_SUBST(PLUGLIBS) | |
-fi | |
-AC_SUBST(PLUGOBJS) | |
-AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes") | |
- | |
-dnl Enable networking by default under Win32, but on Unix systems | |
-dnl make it dependent on the availability of select and socket | |
-network="no" | |
-if test "$CYGWIN" = "yes" ; then | |
- network="yes" | |
-else | |
- dnl Check for socket and select even if networking gets manually | |
- dnl disabled below, since select is used if available for | |
- dnl millisecond sleeping | |
- AC_SEARCH_LIBS(socket,socket) | |
- AC_SEARCH_LIBS(gethostbyname,nsl socket) | |
- AC_CHECK_FUNCS(socket gethostbyname select) | |
- if test "$ac_cv_func_select" = "yes" ; then | |
- if test "$ac_cv_func_socket" = "yes" ; then | |
- if test "$ac_cv_func_gethostbyname" = "yes" ; then | |
- network="yes" | |
- fi | |
- fi | |
- fi | |
-fi | |
- | |
-dnl Let the user override this with the --enable-networking option | |
-AC_ARG_ENABLE(networking, | |
-[ --enable-networking dopewars will use TCP/IP to connect to servers], | |
-[ network="$enableval" ]) | |
- | |
-dnl Inform the user of the status of networking | |
-if test "$network" = "yes" ; then | |
- AC_DEFINE(NETWORKING, 1, | |
- [Define if dopewars should use TCP/IP networking to connect to servers]) | |
-fi | |
- | |
-AC_ARG_ENABLE(strict, | |
-[ --enable-strict if using gcc, enable extra warnings above -Wall], | |
-[ extrawarnings="$enableval" ]) | |
- | |
-dnl Enable full warnings if using gcc | |
-if test -n "$GCC"; then | |
- if test "$extrawarnings" = "yes" ; then | |
- CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wcast-qual -Wcast-align -Wsign-co… | |
- else | |
- CFLAGS="$CFLAGS -Wall" | |
- fi | |
-fi | |
- | |
-dnl Tell dopewars where the high scores, docs and locale files are | |
-DP_EXPAND_DIR(DPSCOREDIR, '${localstatedir}') | |
-AC_DEFINE_UNQUOTED(DPSCOREDIR, "$DPSCOREDIR", | |
- [The directory containing the high score file]) | |
-AC_SUBST(DPSCOREDIR) | |
- | |
-DP_EXPAND_DIR(DPDATADIR, '${datadir}') | |
-AC_DEFINE_UNQUOTED(DPDATADIR, "$DPDATADIR", | |
- [The directory containing the docs and sounds]) | |
-AC_SUBST(DPDATADIR) | |
- | |
-localedir=${datadir}/locale | |
-AC_SUBST(localedir) | |
-DP_EXPAND_DIR(LOCALEDIR, '${localedir}') | |
-AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR", | |
- [The directory containing locale files]) | |
- | |
-dnl Add in the required clients | |
-AM_CONDITIONAL(GUI_CLIENT, test "$GUI_CLIENT" = "yes") | |
-if test "$GUI_CLIENT" = "yes" ; then | |
- GUILIB="gui_client/libguiclient.a" | |
- AC_SUBST(GUILIB) | |
-fi | |
-AM_CONDITIONAL(CURSES_CLIENT, test "$CURSES_CLIENT" = "yes") | |
-if test "$CURSES_CLIENT" = "yes" ; then | |
- CURSESLIB="curses_client/libcursesclient.a" | |
- AC_SUBST(CURSESLIB) | |
-fi | |
- | |
-dnl Compile in the gtkport stuff for any kind of GUI | |
-AM_CONDITIONAL(GTKPORT, test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes") | |
-if test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes" ; then | |
- GTKPORTLIB="gtkport/libgtkport.a" | |
- AC_SUBST(GTKPORTLIB) | |
-fi | |
- | |
-dnl Compile in the cursesport stuff for the curses client only | |
-AM_CONDITIONAL(CURSESPORT, test "$CURSES_CLIENT" = "yes") | |
-if test "$CURSES_CLIENT" = "yes" ; then | |
- CURSESPORTLIB="cursesport/libcursesport.a" | |
- AC_SUBST(CURSESPORTLIB) | |
-fi | |
- | |
-AC_SUBST(SOUND_CFLAGS) | |
-AC_SUBST(SOUND_LIBS) | |
- | |
-AC_OUTPUT([ | |
-Makefile | |
-src/Makefile | |
-src/gui_client/Makefile | |
-src/curses_client/Makefile | |
-src/gtkport/Makefile | |
-src/cursesport/Makefile | |
-src/plugins/Makefile | |
-sounds/Makefile | |
-sounds/19.5degs/Makefile | |
-doc/Makefile | |
-doc/help/Makefile | |
-intl/Makefile | |
-dopewars.spec | |
-doc/dopewars.6 | |
-po/Makefile.in], | |
-[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile]) | |
- | |
-echo | |
-echo "dopewars has been configured as follows:" | |
-echo | |
-if test "$CYGWIN" = "yes" ; then | |
- echo "Building native Windows (Win32) version" | |
-else | |
- echo "Building Unix version" | |
-fi | |
-echo | |
-echo "CLIENTS" | |
-if test "$CURSES_CLIENT" = "no" -a "$GUI_CLIENT" = "no" ; then | |
- echo " - No clients will be compiled (binary will be server/AI only)" | |
-else | |
- if test "$CURSES_CLIENT" = "yes" ; then | |
- echo " - Text-mode (curses) client" | |
- fi | |
- if test "$GUI_CLIENT" = "yes" ; then | |
- echo " - Graphical (GTK+ or Win32) client" | |
- fi | |
-fi | |
- | |
-echo | |
-if test "$network" = "yes" ; then | |
- echo "TCP/IP networking support enabled for multi-player games" | |
- echo | |
- echo "SERVER" | |
- if test "$GUI_SERVER" = "yes" ; then | |
- echo " - Graphical server" | |
- else | |
- echo " - Text-mode server" | |
- fi | |
-else | |
- echo "Networking support DISABLED; single-player mode only" | |
-fi | |
- | |
-echo | |
diff --git a/depcomp b/depcomp | |
t@@ -1,7 +1,9 @@ | |
#! /bin/sh | |
- | |
# depcomp - compile a program generating dependencies as side-effects | |
-# Copyright 1999, 2000 Free Software Foundation, Inc. | |
+ | |
+scriptversion=2013-05-30.07; # UTC | |
+ | |
+# Copyright (C) 1999-2013 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 | |
t@@ -14,9 +16,7 @@ | |
# GNU General Public License for more details. | |
# You should have received a copy of the GNU General Public License | |
-# along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
-# 02111-1307, USA. | |
+# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
# As a special exception to the GNU General Public License, if you | |
# distribute this file as part of a program that contains a | |
t@@ -25,17 +25,112 @@ | |
# Originally written by Alexandre Oliva <[email protected]>. | |
+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 <[email protected]>. | |
+EOF | |
+ exit $? | |
+ ;; | |
+ -v | --v*) | |
+ echo "depcomp $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 | |
+digits=0123456789 | |
+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 | |
-# `libtool' can also be set to `yes' or `no'. | |
-depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$… | |
+# 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 interferences 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 | |
t@@ -47,9 +142,32 @@ if test "$depmode" = hp; then | |
fi | |
if test "$depmode" = dashXmstdout; then | |
- # This is just like dashmstdout with a different argument. | |
- dashmflag=-xM | |
- depmode=dashmstdout | |
+ # 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 | |
t@@ -57,10 +175,22 @@ gcc3) | |
## gcc 3 implements dependency tracking that does exactly what | |
## we want. Yay! Note: for some reason libtool 1.4 doesn't like | |
## it if -MD -MP comes after the -MF stuff. Hmm. | |
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" | |
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon | |
+## the command line argument order; so add the flags where they | |
+## appear in depend2.am. Note that the slowdown incurred here | |
+## affects only configure: in makefiles, %FASTDEP% shortcuts this. | |
+ for arg | |
+ do | |
+ case $arg in | |
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; | |
+ *) set fnord "$@" "$arg" ;; | |
+ esac | |
+ shift # fnord | |
+ shift # $arg | |
+ done | |
+ "$@" | |
stat=$? | |
- if test $stat -eq 0; then : | |
- else | |
+ if test $stat -ne 0; then | |
rm -f "$tmpdepfile" | |
exit $stat | |
fi | |
t@@ -68,13 +198,17 @@ gcc3) | |
;; | |
gcc) | |
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. | |
+## but also to in-use compilers like IMB 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). | |
+## -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 | |
t@@ -82,31 +216,31 @@ gcc) | |
fi | |
"$@" -Wp,"$gccflag$tmpdepfile" | |
stat=$? | |
- if test $stat -eq 0; then : | |
- else | |
+ if test $stat -ne 0; then | |
rm -f "$tmpdepfile" | |
exit $stat | |
fi | |
rm -f "$depfile" | |
echo "$object : \\" > "$depfile" | |
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz | |
-## The second -e expression handles DOS-style file names with drive letters. | |
+ # The second -e expression handles DOS-style file names with drive | |
+ # letters. | |
sed -e 's/^[^:]*: / /' \ | |
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" | |
-## This next piece of magic avoids the `deleted header file' problem. | |
+## This next piece of magic avoids the "deleted header file" problem. | |
## The problem is that when a header file which appears in a .P file | |
## is deleted, the dependency causes make to die (because there is | |
## typically no way to rebuild the header). We avoid this by adding | |
## dummy dependencies for each header file. Too bad gcc doesn't do | |
## this for us directly. | |
- tr ' ' ' | |
-' < "$tmpdepfile" | | |
-## Some versions of gcc put a space before the `:'. On the theory | |
+## Some versions of gcc put a space before the ':'. On the theory | |
## that the space means something, we add a space to the output as | |
-## well. | |
+## well. hp depmode also adds that space, but also prefixes the VPATH | |
+## to the object. Take care to not repeat it in the output. | |
## Some versions of the HPUX 10.20 sed can't process this invocation | |
## correctly. Breaking it into two sed invocations is a workaround. | |
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" | |
+ tr ' ' "$nl" < "$tmpdepfile" \ | |
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | |
+ | sed -e 's/$/ :/' >> "$depfile" | |
rm -f "$tmpdepfile" | |
;; | |
t@@ -124,8 +258,7 @@ sgi) | |
"$@" -MDupdate "$tmpdepfile" | |
fi | |
stat=$? | |
- if test $stat -eq 0; then : | |
- else | |
+ if test $stat -ne 0; then | |
rm -f "$tmpdepfile" | |
exit $stat | |
fi | |
t@@ -133,106 +266,302 @@ sgi) | |
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 | |
+ # the IRIX cc adds comments like '#:fec' to the end of the | |
# dependency line. | |
- tr ' ' ' | |
-' < "$tmpdepfile" \ | |
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ | |
- tr ' | |
-' ' ' >> $depfile | |
- echo >> $depfile | |
- | |
+ 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 ' ' ' | |
-' < "$tmpdepfile" \ | |
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ | |
- >> $depfile | |
+ tr ' ' "$nl" < "$tmpdepfile" \ | |
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ | |
+ >> "$depfile" | |
else | |
- # The sourcefile does not contain any dependencies, so just | |
- # store a dummy comment line, to avoid errors with the Makefile | |
- # "include basename.Plo" scheme. | |
- echo "#dummy" > "$depfile" | |
+ 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. 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. | |
- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` | |
- tmpdepfile="$stripped.u" | |
- outname="$stripped.o" | |
+ # 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 -eq 0; then : | |
- else | |
+ 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 | |
- # Each line is of the form `foo.o: dependent.h'. | |
- # Do two passes, one to just change these to | |
- # `$object: dependent.h' and one to simply `dependent.h:'. | |
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" | |
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" | |
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" | |
+ # Add 'dependent.h:' lines. | |
+ sed -ne '2,${ | |
+ s/^ *// | |
+ s/ \\*$// | |
+ s/$/:/ | |
+ p | |
+ }' "$tmpdepfile" >> "$depfile" | |
else | |
- # The sourcefile does not contain any dependencies, so just | |
- # store a dummy comment line, to avoid errors with the Makefile | |
- # "include basename.Plo" scheme. | |
- echo "#dummy" > "$depfile" | |
+ make_dummy_depfile | |
fi | |
- rm -f "$tmpdepfile" | |
+ rm -f "$tmpdepfile" "$tmpdepfile2" | |
;; | |
tru64) | |
- # The Tru64 AIX 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. | |
- | |
- tmpdepfile1="$object.d" | |
- tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` | |
- if test "$libtool" = yes; then | |
- "$@" -Wc,-MD | |
- else | |
- "$@" -MD | |
- fi | |
- | |
- stat=$? | |
- if test $stat -eq 0; then : | |
- else | |
- rm -f "$tmpdepfile1" "$tmpdepfile2" | |
- exit $stat | |
- fi | |
- | |
- if test -f "$tmpdepfile1"; then | |
- tmpdepfile="$tmpdepfile1" | |
- else | |
- tmpdepfile="$tmpdepfile2" | |
- fi | |
- if test -f "$tmpdepfile"; then | |
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" | |
- # That's a space and a tab in the []. | |
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$d… | |
- else | |
- echo "#dummy" > "$depfile" | |
- fi | |
- rm -f "$tmpdepfile" | |
- ;; | |
+ # 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 | |
t@@ -240,41 +569,49 @@ tru64) | |
dashmstdout) | |
# Important note: in order to support this mode, a compiler *must* | |
- # always write the proprocessed file to stdout, regardless of -o, | |
- # because we must use -o when running libtool. | |
- test -z "$dashmflag" && dashmflag=-M | |
- ( IFS=" " | |
- case " $* " in | |
- *" --mode=compile "*) # this is libtool, let us make it quiet | |
- for arg | |
- do # cycle over the arguments | |
- case "$arg" in | |
- "--mode=compile") | |
- # insert --quiet before "--mode=compile" | |
- set fnord "$@" --quiet | |
- shift # fnord | |
- ;; | |
- esac | |
- set fnord "$@" "$arg" | |
- shift # fnord | |
- shift # "$arg" | |
- done | |
+ # 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 | |
- "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepf… | |
- ) & | |
- proc=$! | |
- "$@" | |
- stat=$? | |
- wait "$proc" | |
- if test "$stat" != 0; then exit $stat; fi | |
+ 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" | |
- tr ' ' ' | |
-' < "$tmpdepfile" | \ | |
-## Some versions of the HPUX 10.20 sed can't process this invocation | |
-## correctly. Breaking it into two sed invocations is a workaround. | |
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" | |
+ # 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" | |
;; | |
t@@ -285,74 +622,93 @@ dashXmstdout) | |
;; | |
makedepend) | |
- # X makedepend | |
- ( | |
- shift | |
- cleared=no | |
- for arg in "$@"; do | |
- case $cleared in no) | |
- set ""; shift | |
- cleared=yes | |
- esac | |
- case "$arg" in | |
- -D*|-I*) | |
- set fnord "$@" "$arg"; shift;; | |
- -*) | |
- ;; | |
- *) | |
- set fnord "$@" "$arg"; shift;; | |
- esac | |
+ "$@" || exit $? | |
+ # Remove any Libtool call | |
+ if test "$libtool" = yes; then | |
+ while test "X$1" != 'X--mode=compile'; do | |
+ shift | |
done | |
- obj_suffix="`echo $object | sed 's/^.*\././'`" | |
- touch "$tmpdepfile" | |
- ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" | |
- ) & | |
- proc=$! | |
- "$@" | |
- stat=$? | |
- wait "$proc" | |
- if test "$stat" != 0; then exit $stat; fi | |
+ 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" | |
- cat < "$tmpdepfile" > "$depfile" | |
- tail +3 "$tmpdepfile" | tr ' ' ' | |
-' | \ | |
-## Some versions of the HPUX 10.20 sed can't process this invocation | |
-## correctly. Breaking it into two sed invocations is a workaround. | |
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" | |
+ # 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 proprocessed file to stdout, regardless of -o, | |
- # because we must use -o when running libtool. | |
- ( IFS=" " | |
- case " $* " in | |
- *" --mode=compile "*) | |
- for arg | |
- do # cycle over the arguments | |
- case $arg in | |
- "--mode=compile") | |
- # insert --quiet before "--mode=compile" | |
- set fnord "$@" --quiet | |
- shift # fnord | |
- ;; | |
- esac | |
- set fnord "$@" "$arg" | |
- shift # fnord | |
- shift # "$arg" | |
- done | |
+ # 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 | |
- "$@" -E | | |
- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | | |
- sed '$ s: \\$::' > "$tmpdepfile" | |
- ) & | |
- proc=$! | |
- "$@" | |
- stat=$? | |
- wait "$proc" | |
- if test "$stat" != 0; then exit $stat; fi | |
+ 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" | |
t@@ -362,42 +718,56 @@ cpp) | |
msvisualcpp) | |
# Important note: in order to support this mode, a compiler *must* | |
- # always write the proprocessed file to stdout, regardless of -o, | |
- # because we must use -o when running libtool. | |
- ( IFS=" " | |
- case " $* " in | |
- *" --mode=compile "*) | |
- for arg | |
- do # cycle over the arguments | |
- case $arg in | |
- "--mode=compile") | |
- # insert --quiet before "--mode=compile" | |
- set fnord "$@" --quiet | |
- shift # fnord | |
- ;; | |
- esac | |
- set fnord "$@" "$arg" | |
- shift # fnord | |
- shift # "$arg" | |
- done | |
+ # 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 | |
- "$@" -E | | |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p… | |
- ) & | |
- proc=$! | |
- "$@" | |
- stat=$? | |
- wait "$proc" | |
- if test "$stat" != 0; then exit $stat; fi | |
+ done | |
+ "$@" -E 2>/dev/null | | |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "… | |
rm -f "$depfile" | |
echo "$object : \\" > "$depfile" | |
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >… | |
- echo " " >> "$depfile" | |
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfi… | |
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> … | |
+ 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 "$@" | |
;; | |
t@@ -409,3 +779,13 @@ none) | |
esac | |
exit 0 | |
+ | |
+# Local Variables: | |
+# mode: shell-script | |
+# sh-indentation: 2 | |
+# eval: (add-hook 'write-file-hooks 'time-stamp) | |
+# time-stamp-start: "scriptversion=" | |
+# time-stamp-format: "%:y-%02m-%02d.%02H" | |
+# time-stamp-time-zone: "UTC" | |
+# time-stamp-end: "; # UTC" | |
+# End: | |
diff --git a/install-sh b/install-sh | |
t@@ -1,251 +1,527 @@ | |
#!/bin/sh | |
-# | |
# install - install a program, script, or datafile | |
-# This comes from X11R5 (mit/util/scripts/install.sh). | |
+ | |
+scriptversion=2011-11-20.07; # 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. | |
# | |
-# Copyright 1991 by the Massachusetts Institute of Technology | |
+# 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. | |
# | |
-# Permission to use, copy, modify, distribute, and sell this software and its | |
-# documentation for any purpose is hereby granted without fee, provided that | |
-# the above copyright notice appear in all copies and that both that | |
-# copyright notice and this permission notice appear in supporting | |
-# documentation, and that the name of M.I.T. not be used in advertising or | |
-# publicity pertaining to distribution of the software without specific, | |
-# written prior permission. M.I.T. makes no representations about the | |
-# suitability of this software for any purpose. It is provided "as is" | |
-# without express or implied warranty. | |
+# | |
+# 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 | |
+# '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. It can only install one file at a time, a restriction | |
-# shared with many OS's install programs. | |
+# from scratch. | |
+nl=' | |
+' | |
+IFS=" "" $nl" | |
# set DOITPROG to echo to test this script | |
# Don't use :- since 4.3BSD and earlier shells don't like it. | |
-doit="${DOITPROG-}" | |
- | |
- | |
-# put in absolute paths if you don't have them in your path; or use env. vars. | |
- | |
-mvprog="${MVPROG-mv}" | |
-cpprog="${CPPROG-cp}" | |
-chmodprog="${CHMODPROG-chmod}" | |
-chownprog="${CHOWNPROG-chown}" | |
-chgrpprog="${CHGRPPROG-chgrp}" | |
-stripprog="${STRIPPROG-strip}" | |
-rmprog="${RMPROG-rm}" | |
-mkdirprog="${MKDIRPROG-mkdir}" | |
- | |
-transformbasename="" | |
-transform_arg="" | |
-instcmd="$mvprog" | |
-chmodcmd="$chmodprog 0755" | |
-chowncmd="" | |
-chgrpcmd="" | |
-stripcmd="" | |
-rmcmd="$rmprog -f" | |
-mvcmd="$mvprog" | |
-src="" | |
-dst="" | |
-dir_arg="" | |
- | |
-while [ x"$1" != x ]; do | |
- case $1 in | |
- -c) instcmd="$cpprog" | |
- shift | |
- continue;; | |
- | |
- -d) dir_arg=true | |
- shift | |
- continue;; | |
- | |
- -m) chmodcmd="$chmodprog $2" | |
- shift | |
- shift | |
- continue;; | |
- | |
- -o) chowncmd="$chownprog $2" | |
- shift | |
- shift | |
- continue;; | |
- | |
- -g) chgrpcmd="$chgrpprog $2" | |
- shift | |
- shift | |
- continue;; | |
- | |
- -s) stripcmd="$stripprog" | |
- shift | |
- continue;; | |
- | |
- -t=*) transformarg=`echo $1 | sed 's/-t=//'` | |
- shift | |
- continue;; | |
- | |
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'` | |
- shift | |
- continue;; | |
- | |
- *) if [ x"$src" = x ] | |
- then | |
- src=$1 | |
- else | |
- # this colon is to work around a 386BSD /bin/sh bug | |
- : | |
- dst=$1 | |
- fi | |
- shift | |
- continue;; | |
- esac | |
-done | |
- | |
-if [ x"$src" = x ] | |
-then | |
- echo "install: no input file specified" | |
- exit 1 | |
+doit=${DOITPROG-} | |
+if test -z "$doit"; then | |
+ doit_exec=exec | |
else | |
- true | |
+ doit_exec=$doit | |
fi | |
-if [ x"$dir_arg" != x ]; then | |
- dst=$src | |
- src="" | |
- | |
- if [ -d $dst ]; then | |
- instcmd=: | |
- chmodcmd="" | |
- else | |
- instcmd=mkdir | |
- fi | |
-else | |
+# Put in absolute file names if you don't have them in your path; | |
+# or use environment vars. | |
+ | |
+chgrpprog=${CHGRPPROG-chgrp} | |
+chmodprog=${CHMODPROG-chmod} | |
+chownprog=${CHOWNPROG-chown} | |
+cmpprog=${CMPPROG-cmp} | |
+cpprog=${CPPROG-cp} | |
+mkdirprog=${MKDIRPROG-mkdir} | |
+mvprog=${MVPROG-mv} | |
+rmprog=${RMPROG-rm} | |
+stripprog=${STRIPPROG-strip} | |
+ | |
+posix_glob='?' | |
+initialize_posix_glob=' | |
+ test "$posix_glob" != "?" || { | |
+ if (set -f) 2>/dev/null; then | |
+ posix_glob= | |
+ else | |
+ posix_glob=: | |
+ fi | |
+ } | |
+' | |
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command | |
-# might cause directories to be created, which would be especially bad | |
-# if $src (and thus $dsttmp) contains '*'. | |
+posix_mkdir= | |
- if [ -f $src -o -d $src ] | |
- then | |
- true | |
- else | |
- echo "install: $src does not exist" | |
- exit 1 | |
- fi | |
- | |
- if [ x"$dst" = x ] | |
- then | |
- echo "install: no destination specified" | |
- exit 1 | |
- else | |
- true | |
- fi | |
+# Desired mode of installed file. | |
+mode=0755 | |
-# If destination is a directory, append the input filename; if your system | |
-# does not like double slashes in filenames, you may need to add some logic | |
+chgrpcmd= | |
+chmodcmd=$chmodprog | |
+chowncmd= | |
+mvcmd=$mvprog | |
+rmcmd="$rmprog -f" | |
+stripcmd= | |
- if [ -d $dst ] | |
- then | |
- dst="$dst"/`basename $src` | |
- else | |
- true | |
- fi | |
-fi | |
+src= | |
+dst= | |
+dir_arg= | |
+dst_arg= | |
-## this sed command emulates the dirname command | |
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` | |
+copy_on_change=false | |
+no_target_directory= | |
-# Make sure that the destination directory exists. | |
-# this part is taken from Noah Friedman's mkinstalldirs script | |
+usage="\ | |
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE | |
+ or: $0 [OPTION]... SRCFILES... DIRECTORY | |
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES... | |
+ or: $0 [OPTION]... -d DIRECTORIES... | |
-# Skip lots of stat calls in the usual case. | |
-if [ ! -d "$dstdir" ]; then | |
-defaultIFS=' | |
-' | |
-IFS="${IFS-${defaultIFS}}" | |
+In the 1st form, copy SRCFILE to DSTFILE. | |
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. | |
+In the 4th, create DIRECTORIES. | |
-oIFS="${IFS}" | |
-# Some sh's can't handle IFS=/ for some reason. | |
-IFS='%' | |
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` | |
-IFS="${oIFS}" | |
+Options: | |
+ --help display this help and exit. | |
+ --version display version info and exit. | |
-pathcomp='' | |
+ -c (ignored) | |
+ -C install only if different (preserve the last data modification… | |
+ -d create directories instead of installing files. | |
+ -g GROUP $chgrpprog installed files to GROUP. | |
+ -m MODE $chmodprog installed files to MODE. | |
+ -o USER $chownprog installed files to USER. | |
+ -s $stripprog installed files. | |
+ -t DIRECTORY install into DIRECTORY. | |
+ -T report an error if DSTFILE is a directory. | |
-while [ $# -ne 0 ] ; do | |
- pathcomp="${pathcomp}${1}" | |
- shift | |
+Environment variables override the default commands: | |
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG | |
+ RMPROG STRIPPROG | |
+" | |
- if [ ! -d "${pathcomp}" ] ; | |
- then | |
- $mkdirprog "${pathcomp}" | |
- else | |
- true | |
- fi | |
+while test $# -ne 0; do | |
+ case $1 in | |
+ -c) ;; | |
- pathcomp="${pathcomp}/" | |
-done | |
-fi | |
+ -C) copy_on_change=true;; | |
-if [ x"$dir_arg" != x ] | |
-then | |
- $doit $instcmd $dst && | |
+ -d) dir_arg=true;; | |
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && | |
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && | |
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && | |
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi | |
-else | |
+ -g) chgrpcmd="$chgrpprog $2" | |
+ shift;; | |
-# If we're going to rename the final executable, determine the name now. | |
+ --help) echo "$usage"; exit $?;; | |
- if [ x"$transformarg" = x ] | |
- then | |
- dstfile=`basename $dst` | |
- else | |
- dstfile=`basename $dst $transformbasename | | |
- sed $transformarg`$transformbasename | |
- fi | |
+ -m) mode=$2 | |
+ case $mode in | |
+ *' '* | *' '* | *' | |
+'* | *'*'* | *'?'* | *'['*) | |
+ echo "$0: invalid mode: $mode" >&2 | |
+ exit 1;; | |
+ esac | |
+ shift;; | |
-# don't allow the sed command to completely eliminate the filename | |
+ -o) chowncmd="$chownprog $2" | |
+ shift;; | |
- if [ x"$dstfile" = x ] | |
- then | |
- dstfile=`basename $dst` | |
- else | |
- true | |
- fi | |
+ -s) stripcmd=$stripprog;; | |
-# Make a temp file name in the proper directory. | |
+ -t) dst_arg=$2 | |
+ # Protect names problematic for 'test' and other utilities. | |
+ case $dst_arg in | |
+ -* | [=\(\)!]) dst_arg=./$dst_arg;; | |
+ esac | |
+ shift;; | |
- dsttmp=$dstdir/#inst.$$# | |
+ -T) no_target_directory=true;; | |
-# Move or copy the file name to the temp name | |
+ --version) echo "$0 $scriptversion"; exit $?;; | |
- $doit $instcmd $src $dsttmp && | |
+ --) shift | |
+ break;; | |
- trap "rm -f ${dsttmp}" 0 && | |
+ -*) echo "$0: invalid option: $1" >&2 | |
+ exit 1;; | |
-# and set any options; do chmod last to preserve setuid bits | |
+ *) break;; | |
+ esac | |
+ shift | |
+done | |
-# If any of these fail, we abort the whole thing. If we want to | |
-# ignore errors from any of these, just make sure not to ignore | |
-# errors from the above "$doit $instcmd $src $dsttmp" command. | |
+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 [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && | |
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && | |
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && | |
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;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 | |
-# Now rename the file to the real destination. | |
+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 | |
- $doit $rmcmd -f $dstdir/$dstfile && | |
- $doit $mvcmd $dsttmp $dstdir/$dstfile | |
+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=$? | |
+ 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; won't work | |
+ # if double slashes aren't ignored. | |
+ if test -d "$dst"; then | |
+ if test -n "$no_target_directory"; then | |
+ echo "$0: $dst_arg: Is a directory" >&2 | |
+ exit 1 | |
+ fi | |
+ dstdir=$dst | |
+ dst=$dstdir/`basename "$src"` | |
+ dstdir_status=0 | |
+ else | |
+ # Prefer dirname, but fall back on a substitute if dirname fails. | |
+ dstdir=` | |
+ (dirname "$dst") 2>/dev/null || | |
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ | |
+ X"$dst" : 'X\(//\)[^/]' \| \ | |
+ X"$dst" : 'X\(//\)$' \| \ | |
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null || | |
+ echo X"$dst" | | |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ | |
+ s//\1/ | |
+ q | |
+ } | |
+ /^X\(\/\/\)[^/].*/{ | |
+ s//\1/ | |
+ q | |
+ } | |
+ /^X\(\/\/\)$/{ | |
+ s//\1/ | |
+ q | |
+ } | |
+ /^X\(\/\).*/{ | |
+ s//\1/ | |
+ q | |
+ } | |
+ s/.*/./; q' | |
+ ` | |
+ | |
+ test -d "$dstdir" | |
+ dstdir_status=$? | |
+ fi | |
+ fi | |
+ | |
+ obsolete_mkdir_used=false | |
+ | |
+ if test $dstdir_status != 0; then | |
+ case $posix_mkdir in | |
+ '') | |
+ # Create intermediate dirs using mode 755 as modified by the umask. | |
+ # This is like FreeBSD 'install' as of 1997-10-28. | |
+ umask=`umask` | |
+ case $stripcmd.$umask in | |
+ # Optimize common cases. | |
+ *[2367][2367]) mkdir_umask=$umask;; | |
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; | |
+ | |
+ *[0-7]) | |
+ mkdir_umask=`expr $umask + 22 \ | |
+ - $umask % 100 % 40 + $umask % 20 \ | |
+ - $umask % 10 % 4 + $umask % 2 | |
+ `;; | |
+ *) mkdir_umask=$umask,go-w;; | |
+ esac | |
+ | |
+ # With -d, create the new directory with the user-specified mode. | |
+ # Otherwise, rely on $mkdir_umask. | |
+ if test -n "$dir_arg"; then | |
+ mkdir_mode=-m$mode | |
+ else | |
+ mkdir_mode= | |
+ fi | |
-fi && | |
+ posix_mkdir=false | |
+ case $umask in | |
+ *[123567][0-7][0-7]) | |
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which | |
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. | |
+ ;; | |
+ *) | |
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ | |
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 | |
+ | |
+ if (umask $mkdir_umask && | |
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 | |
+ then | |
+ if test -z "$dir_arg" || { | |
+ # Check for POSIX incompatibilities with -m. | |
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or | |
+ # other-writable bit of parent directory when it shouldn't. | |
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. | |
+ ls_ld_tmpdir=`ls -ld "$tmpdir"` | |
+ case $ls_ld_tmpdir in | |
+ d????-?r-*) different_mode=700;; | |
+ d????-?--*) different_mode=755;; | |
+ *) false;; | |
+ esac && | |
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && { | |
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` | |
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" | |
+ } | |
+ } | |
+ then posix_mkdir=: | |
+ fi | |
+ rmdir "$tmpdir/d" "$tmpdir" | |
+ else | |
+ # Remove any dirs left behind by ancient mkdir implementations. | |
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null | |
+ fi | |
+ trap '' 0;; | |
+ esac;; | |
+ esac | |
+ if | |
+ $posix_mkdir && ( | |
+ umask $mkdir_umask && | |
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" | |
+ ) | |
+ then : | |
+ else | |
+ | |
+ # The umask is ridiculous, or mkdir does not conform to POSIX, | |
+ # or it failed possibly due to a race condition. Create the | |
+ # directory the slow way, step by step, checking for races as we go. | |
+ | |
+ case $dstdir in | |
+ /*) prefix='/';; | |
+ [-=\(\)!]*) prefix='./';; | |
+ *) prefix='';; | |
+ esac | |
+ | |
+ eval "$initialize_posix_glob" | |
+ | |
+ oIFS=$IFS | |
+ IFS=/ | |
+ $posix_glob set -f | |
+ set fnord $dstdir | |
+ shift | |
+ $posix_glob 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=$dstdir/_inst.$$_ | |
+ rmtmp=$dstdir/_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 && $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` && | |
+ | |
+ eval "$initialize_posix_glob" && | |
+ $posix_glob set -f && | |
+ set X $old && old=:$2:$4:$5:$6 && | |
+ set X $new && new=:$2:$4:$5:$6 && | |
+ $posix_glob set +f && | |
+ | |
+ test "$old" = "$new" && | |
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 | |
+ then | |
+ rm -f "$dsttmp" | |
+ else | |
+ # Rename the file to the real destination. | |
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || | |
+ | |
+ # The rename failed, perhaps because mv can't rename something else | |
+ # to itself, or perhaps because mv is so ancient that it does not | |
+ # support -f. | |
+ { | |
+ # Now remove or move aside any old file at destination location. | |
+ # We try this two ways since rm can't unlink itself on some | |
+ # systems and the destination file might be busy for other | |
+ # reasons. In this case, the final cleanup might fail but the new | |
+ # file should still install successfully. | |
+ { | |
+ test ! -f "$dst" || | |
+ $doit $rmcmd -f "$dst" 2>/dev/null || | |
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && | |
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } | |
+ } || | |
+ { echo "$0: cannot unlink or rename $dst" >&2 | |
+ (exit 1); exit 1 | |
+ } | |
+ } && | |
+ | |
+ # Now rename the file to the real destination. | |
+ $doit $mvcmd "$dsttmp" "$dst" | |
+ } | |
+ fi || exit 1 | |
+ | |
+ trap '' 0 | |
+ fi | |
+done | |
-exit 0 | |
+# Local variables: | |
+# eval: (add-hook 'write-file-hooks 'time-stamp) | |
+# time-stamp-start: "scriptversion=" | |
+# time-stamp-format: "%:y-%02m-%02d.%02H" | |
+# time-stamp-time-zone: "UTC" | |
+# time-stamp-end: "; # UTC" | |
+# End: | |
diff --git a/intl/.cvsignore b/intl/.cvsignore | |
t@@ -1,2 +0,0 @@ | |
-Makefile | |
-po2tbl.sed | |
diff --git a/intl/ChangeLog b/intl/ChangeLog | |
t@@ -1,4 +0,0 @@ | |
-2010-06-04 GNU <[email protected]> | |
- | |
- * Version 0.18.1 released. | |
- | |
diff --git a/intl/Makefile.in b/intl/Makefile.in | |
t@@ -1,659 +0,0 @@ | |
-# Makefile for directory with message catalog handling library of GNU gettext | |
-# Copyright (C) 1995-1998, 2000-2007, 2009-2010 Free Software Foundation, Inc. | |
-# | |
-# This program is free software; you can redistribute it and/or modify it | |
-# under the terms of the GNU Library General Public License as published | |
-# by the Free Software Foundation; either version 2, or (at your option) | |
-# any later version. | |
-# | |
-# This program is distributed in the hope that it will be useful, | |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
-# Library General Public License for more details. | |
-# | |
-# You should have received a copy of the GNU Library General Public | |
-# License along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
-# USA. | |
- | |
-PACKAGE = @PACKAGE@ | |
-VERSION = @VERSION@ | |
- | |
-SHELL = /bin/sh | |
- | |
-srcdir = @srcdir@ | |
-top_srcdir = @top_srcdir@ | |
-top_builddir = .. | |
- | |
-# The VPATH variables allows builds with $builddir != $srcdir, assuming a | |
-# 'make' program that supports VPATH (such as GNU make). This line is removed | |
-# by autoconf automatically when "$(srcdir)" = ".". | |
-# In this directory, the VPATH handling is particular: | |
-# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool), | |
-# the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted. | |
-# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise | |
-# 'make' does the wrong thing if GNU gettext was configured with | |
-# "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la | |
-# files it finds in srcdir = ../../gettext-runtime/intl. | |
-VPATH = $(srcdir) | |
- | |
-prefix = @prefix@ | |
-exec_prefix = @exec_prefix@ | |
-transform = @program_transform_name@ | |
-libdir = @libdir@ | |
-includedir = @includedir@ | |
-datarootdir = @datarootdir@ | |
-datadir = @datadir@ | |
-localedir = $(datadir)/locale | |
-gettextsrcdir = $(datadir)/gettext/intl | |
-aliaspath = $(localedir) | |
-subdir = intl | |
- | |
-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@ | |
- | |
-l = @INTL_LIBTOOL_SUFFIX_PREFIX@ | |
- | |
-AR = ar | |
-CC = @CC@ | |
-LIBTOOL = @LIBTOOL@ | |
-RANLIB = @RANLIB@ | |
-YACC = @INTLBISON@ -y -d | |
-YFLAGS = --name-prefix=__gettext | |
-# Windows resource compiler (windres). Used when libtool is not used. | |
-WINDRES = @WINDRES@ | |
-# Windows resource compiler (windres). Used via libtool. | |
-RC = @RC@ | |
- | |
-# Support for silent-rules. | |
-AM_V_at = $(am__v_at_$(V)) | |
-am__v_at_ = $(am__v_at_@INTL_DEFAULT_VERBOSITY@) | |
-am__v_at_0 = @ | |
-AM_V_AR = $(am__v_AR_$(V)) | |
-am__v_AR_ = $(am__v_AR_@INTL_DEFAULT_VERBOSITY@) | |
-am__v_AR_0 = @echo " AR " $@; | |
-AM_V_CC = $(am__v_CC_$(V)) | |
-am__v_CC_ = $(am__v_CC_@INTL_DEFAULT_VERBOSITY@) | |
-am__v_CC_0 = @echo " CC " $@; | |
-AM_V_GEN = $(am__v_GEN_$(V)) | |
-am__v_GEN_ = $(am__v_GEN_@INTL_DEFAULT_VERBOSITY@) | |
-am__v_GEN_0 = @echo " GEN " $@; | |
-AM_V_YACC = $(am__v_YACC_$(V)) | |
-am__v_YACC_ = $(am__v_YACC_@INTL_DEFAULT_VERBOSITY@) | |
-am__v_YACC_0 = @echo " YACC " $@; | |
-AM_V_lt = $(am__v_lt_$(V)) | |
-am__v_lt_ = $(am__v_lt_@INTL_DEFAULT_VERBOSITY@) | |
-am__v_lt_0 = --silent | |
- | |
-# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro. | |
-# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. | |
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ | |
--DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \ | |
--DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ | |
--Dset_relocation_prefix=libintl_set_relocation_prefix \ | |
--Drelocate=libintl_relocate \ | |
--DDEPENDS_ON_LIBICONV=1 @DEFS@ | |
-CPPFLAGS = @CPPFLAGS@ | |
-CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@ | |
-LDFLAGS = @LDFLAGS@ $(LDFLAGS_@WOE32DLL@) | |
-LDFLAGS_yes = -Wl,--export-all-symbols | |
-LDFLAGS_no = | |
-LIBS = @LIBS@ | |
- | |
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) | |
- | |
-HEADERS = \ | |
- gmo.h \ | |
- gettextP.h \ | |
- hash-string.h \ | |
- loadinfo.h \ | |
- plural-exp.h \ | |
- eval-plural.h \ | |
- localcharset.h \ | |
- lock.h \ | |
- relocatable.h \ | |
- tsearch.h tsearch.c \ | |
- xsize.h \ | |
- printf-args.h printf-args.c \ | |
- printf-parse.h wprintf-parse.h printf-parse.c \ | |
- vasnprintf.h vasnwprintf.h vasnprintf.c \ | |
- os2compat.h \ | |
- libgnuintl.h.in | |
-SOURCES = \ | |
- bindtextdom.c \ | |
- dcgettext.c \ | |
- dgettext.c \ | |
- gettext.c \ | |
- finddomain.c \ | |
- hash-string.c \ | |
- loadmsgcat.c \ | |
- localealias.c \ | |
- textdomain.c \ | |
- l10nflist.c \ | |
- explodename.c \ | |
- dcigettext.c \ | |
- dcngettext.c \ | |
- dngettext.c \ | |
- ngettext.c \ | |
- plural.y \ | |
- plural-exp.c \ | |
- localcharset.c \ | |
- threadlib.c \ | |
- lock.c \ | |
- relocatable.c \ | |
- langprefs.c \ | |
- localename.c \ | |
- log.c \ | |
- printf.c \ | |
- setlocale.c \ | |
- version.c \ | |
- osdep.c \ | |
- os2compat.c \ | |
- intl-exports.c \ | |
- intl-compat.c | |
-OBJECTS = \ | |
- bindtextdom.$lo \ | |
- dcgettext.$lo \ | |
- dgettext.$lo \ | |
- gettext.$lo \ | |
- finddomain.$lo \ | |
- hash-string.$lo \ | |
- loadmsgcat.$lo \ | |
- localealias.$lo \ | |
- textdomain.$lo \ | |
- l10nflist.$lo \ | |
- explodename.$lo \ | |
- dcigettext.$lo \ | |
- dcngettext.$lo \ | |
- dngettext.$lo \ | |
- ngettext.$lo \ | |
- plural.$lo \ | |
- plural-exp.$lo \ | |
- localcharset.$lo \ | |
- threadlib.$lo \ | |
- lock.$lo \ | |
- relocatable.$lo \ | |
- langprefs.$lo \ | |
- localename.$lo \ | |
- log.$lo \ | |
- printf.$lo \ | |
- setlocale.$lo \ | |
- version.$lo \ | |
- osdep.$lo \ | |
- intl-compat.$lo | |
-OBJECTS_RES_yes = libintl.res.$lo | |
-OBJECTS_RES_no = | |
-DISTFILES.common = Makefile.in \ | |
-config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \ | |
-$(HEADERS) $(SOURCES) | |
-DISTFILES.generated = plural.c | |
-DISTFILES.normal = VERSION | |
-DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32 | |
-DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ | |
-COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \ | |
-libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \ | |
-libgnuintl.h.msvc-shared Makefile.msvc | |
- | |
-all: all-@USE_INCLUDED_LIBINTL@ | |
-all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed | |
-all-no: all-no-@BUILD_INCLUDED_LIBINTL@ | |
-all-no-yes: libgnuintl.$la | |
-all-no-no: | |
- | |
-libintl.a libgnuintl.a: $(OBJECTS) | |
- $(AM_V_at)rm -f $@ | |
- $(AM_V_AR)$(AR) cru $@ $(OBJECTS) | |
- $(AM_V_at)$(RANLIB) $@ | |
- | |
-libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_@WOE32@) | |
- $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=link \ | |
- $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ | |
- $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) @LTLIBTHREAD@ @LT… | |
- $(OBJECTS_RES_@WOE32@) \ | |
- -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ | |
- -rpath $(libdir) \ | |
- -no-undefined | |
- | |
-# Libtool's library version information for libintl. | |
-# Before making a gettext release, the gettext maintainer must change this | |
-# according to the libtool documentation, section "Library interface versions". | |
-# Maintainers of other packages that include the intl directory must *not* | |
-# change these values. | |
-LTV_CURRENT=9 | |
-LTV_REVISION=1 | |
-LTV_AGE=1 | |
- | |
-.SUFFIXES: | |
-.SUFFIXES: .c .y .o .lo .sin .sed | |
- | |
-.c.o: | |
- $(AM_V_CC)$(COMPILE) $< | |
- | |
-.y.c: | |
- $(AM_V_YACC)$(YACC) $(YFLAGS) --output $@ $< | |
- $(AM_V_at)rm -f $*.h | |
- | |
-bindtextdom.lo: $(srcdir)/bindtextdom.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-dcgettext.lo: $(srcdir)/dcgettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-dgettext.lo: $(srcdir)/dgettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-gettext.lo: $(srcdir)/gettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-finddomain.lo: $(srcdir)/finddomain.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-hash-string.lo: $(srcdir)/hash-string.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-loadmsgcat.lo: $(srcdir)/loadmsgcat.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-localealias.lo: $(srcdir)/localealias.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-textdomain.lo: $(srcdir)/textdomain.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-l10nflist.lo: $(srcdir)/l10nflist.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-explodename.lo: $(srcdir)/explodename.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-dcigettext.lo: $(srcdir)/dcigettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-dcngettext.lo: $(srcdir)/dcngettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-dngettext.lo: $(srcdir)/dngettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-ngettext.lo: $(srcdir)/ngettext.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-plural.lo: $(srcdir)/plural.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-plural-exp.lo: $(srcdir)/plural-exp.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-localcharset.lo: $(srcdir)/localcharset.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-threadlib.lo: $(srcdir)/threadlib.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-lock.lo: $(srcdir)/lock.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-relocatable.lo: $(srcdir)/relocatable.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-langprefs.lo: $(srcdir)/langprefs.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-localename.lo: $(srcdir)/localename.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-log.lo: $(srcdir)/log.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-printf.lo: $(srcdir)/printf.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-setlocale.lo: $(srcdir)/setlocale.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-version.lo: $(srcdir)/version.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-osdep.lo: $(srcdir)/osdep.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
-intl-compat.lo: $(srcdir)/intl-compat.c | |
- $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(s… | |
- | |
-# This rule is executed only on Woe32 systems. | |
-# The following sed expressions come from the windres-options script. They are | |
-# inlined here, so that they can be written in a Makefile without requiring a | |
-# temporary file. They must contain literal newlines rather than semicolons, | |
-# so that they work with the sed-3.02 that is shipped with MSYS. | |
-libintl.res.o: $(srcdir)/libintl.rc | |
- nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \ | |
- sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}… | |
- sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*… | |
- sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^… | |
- $(WINDRES) \ | |
- "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ | |
- "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extr… | |
- "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extr… | |
- "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_e… | |
- -i $(srcdir)/libintl.rc -o libintl.res.o --output-format=coff | |
-libintl.res.lo: $(srcdir)/libintl.rc | |
- nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \ | |
- sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}… | |
- sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*… | |
- sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^… | |
- $(LIBTOOL) --mode=compile --tag=RC $(RC) \ | |
- "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ | |
- "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extr… | |
- "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extr… | |
- "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_e… | |
- -i $(srcdir)/libintl.rc -o libintl.res.lo --output-format=coff | |
- | |
-ref-add.sed: $(srcdir)/ref-add.sin | |
- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin … | |
- mv t-ref-add.sed ref-add.sed | |
-ref-del.sed: $(srcdir)/ref-del.sin | |
- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin … | |
- mv t-ref-del.sed ref-del.sed | |
- | |
-INCLUDES = -I. -I$(srcdir) -I.. | |
- | |
-libgnuintl.h: $(srcdir)/libgnuintl.h.in | |
- sed -e '/IN_LIBGLOCALE/d' \ | |
- -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ | |
- -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ | |
- -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ | |
- -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ | |
- -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ | |
- < $(srcdir)/libgnuintl.h.in \ | |
- | if test '@WOE32DLL@' = yes; then \ | |
- sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \ | |
- else \ | |
- cat; \ | |
- fi \ | |
- | sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \ | |
- -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \ | |
- | sed -e 's,@''HAVE_VISIBILITY''@,@HAVE_VISIBILITY@,g' \ | |
- > libgnuintl.h | |
- | |
-libintl.h: $(srcdir)/libgnuintl.h.in | |
- sed -e '/IN_LIBGLOCALE/d' \ | |
- -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ | |
- -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ | |
- -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ | |
- -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ | |
- -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ | |
- < $(srcdir)/libgnuintl.h.in > libintl.h | |
- | |
-charset.alias: $(srcdir)/config.charset | |
- $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ | |
- mv t-$@ $@ | |
- | |
-check: all | |
- | |
-# We must not install the libintl.h/libintl.a files if we are on a | |
-# system which has the GNU gettext() function in its C library or in a | |
-# separate library. | |
-# If you want to use the one which comes with this version of the | |
-# package, you have to use `configure --with-included-gettext'. | |
-install: install-exec install-data | |
-install-exec: all | |
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "get… | |
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \ | |
- $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ | |
- $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ | |
- $(LIBTOOL) --mode=install \ | |
- $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ | |
- if test "@RELOCATABLE@" = yes; then \ | |
- dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTD… | |
- if test -n "$$dependencies"; then \ | |
- rm -f $(DESTDIR)$(libdir)/libintl.la; \ | |
- fi; \ | |
- fi; \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test "$(PACKAGE)" = "gettext-tools" \ | |
- && test '@USE_INCLUDED_LIBINTL@' = no \ | |
- && test @GLIBC2@ != no; then \ | |
- $(mkdir_p) $(DESTDIR)$(libdir); \ | |
- $(LIBTOOL) --mode=install \ | |
- $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la;… | |
- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ | |
- $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir… | |
- $(LIBTOOL) --mode=uninstall \ | |
- rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \ | |
- if test @GLIBC21@ = no; then \ | |
- case '@host_os@' in \ | |
- darwin[56]*) \ | |
- need_charset_alias=true ;; \ | |
- darwin* | cygwin* | mingw* | pw32* | cegcc*) \ | |
- need_charset_alias=false ;; \ | |
- *) \ | |
- need_charset_alias=true ;; \ | |
- esac; \ | |
- else \ | |
- need_charset_alias=false; \ | |
- fi; \ | |
- if $$need_charset_alias; then \ | |
- $(mkdir_p) $(DESTDIR)$(libdir); \ | |
- fi; \ | |
- temp=$(DESTDIR)$(libdir)/t-charset.alias; \ | |
- dest=$(DESTDIR)$(libdir)/charset.alias; \ | |
- if test -f $(DESTDIR)$(libdir)/charset.alias; then \ | |
- orig=$(DESTDIR)$(libdir)/charset.alias; \ | |
- sed -f ref-add.sed $$orig > $$temp; \ | |
- $(INSTALL_DATA) $$temp $$dest; \ | |
- rm -f $$temp; \ | |
- else \ | |
- if $$need_charset_alias; then \ | |
- orig=charset.alias; \ | |
- sed -f ref-add.sed $$orig > $$temp; \ | |
- $(INSTALL_DATA) $$temp $$dest; \ | |
- rm -f $$temp; \ | |
- fi; \ | |
- fi; \ | |
- $(mkdir_p) $(DESTDIR)$(localedir); \ | |
- test -f $(DESTDIR)$(localedir)/locale.alias \ | |
- && orig=$(DESTDIR)$(localedir)/locale.alias \ | |
- || orig=$(srcdir)/locale.alias; \ | |
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \ | |
- dest=$(DESTDIR)$(localedir)/locale.alias; \ | |
- sed -f ref-add.sed $$orig > $$temp; \ | |
- $(INSTALL_DATA) $$temp $$dest; \ | |
- rm -f $$temp; \ | |
- else \ | |
- : ; \ | |
- fi | |
-install-data: all | |
- if test "$(PACKAGE)" = "gettext-tools"; then \ | |
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ | |
- $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ | |
- $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog;… | |
- dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ | |
- for file in $$dists; do \ | |
- $(INSTALL_DATA) $(srcdir)/$$file \ | |
- $(DESTDIR)$(gettextsrcdir)/$$file; \ | |
- done; \ | |
- chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ | |
- dists="$(DISTFILES.generated)"; \ | |
- for file in $$dists; do \ | |
- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ | |
- $(INSTALL_DATA) $$dir/$$file \ | |
- $(DESTDIR)$(gettextsrcdir)/$$file; \ | |
- done; \ | |
- dists="$(DISTFILES.obsolete)"; \ | |
- for file in $$dists; do \ | |
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ | |
- done; \ | |
- else \ | |
- : ; \ | |
- fi | |
- | |
-install-strip: install | |
- | |
-install-dvi install-html install-info install-ps install-pdf: | |
- | |
-installdirs: | |
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "get… | |
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \ | |
- $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test "$(PACKAGE)" = "gettext-tools" \ | |
- && test '@USE_INCLUDED_LIBINTL@' = no \ | |
- && test @GLIBC2@ != no; then \ | |
- $(mkdir_p) $(DESTDIR)$(libdir); \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \ | |
- if test @GLIBC21@ = no; then \ | |
- case '@host_os@' in \ | |
- darwin[56]*) \ | |
- need_charset_alias=true ;; \ | |
- darwin* | cygwin* | mingw* | pw32* | cegcc*) \ | |
- need_charset_alias=false ;; \ | |
- *) \ | |
- need_charset_alias=true ;; \ | |
- esac; \ | |
- else \ | |
- need_charset_alias=false; \ | |
- fi; \ | |
- if $$need_charset_alias; then \ | |
- $(mkdir_p) $(DESTDIR)$(libdir); \ | |
- fi; \ | |
- $(mkdir_p) $(DESTDIR)$(localedir); \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test "$(PACKAGE)" = "gettext-tools"; then \ | |
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ | |
- else \ | |
- : ; \ | |
- fi | |
- | |
-# Define this as empty until I found a useful application. | |
-installcheck: | |
- | |
-uninstall: | |
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "get… | |
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \ | |
- rm -f $(DESTDIR)$(includedir)/libintl.h; \ | |
- $(LIBTOOL) --mode=uninstall \ | |
- rm -f $(DESTDIR)$(libdir)/libintl.$la; \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test "$(PACKAGE)" = "gettext-tools" \ | |
- && test '@USE_INCLUDED_LIBINTL@' = no \ | |
- && test @GLIBC2@ != no; then \ | |
- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \ | |
- if test -f $(DESTDIR)$(libdir)/charset.alias; then \ | |
- temp=$(DESTDIR)$(libdir)/t-charset.alias; \ | |
- dest=$(DESTDIR)$(libdir)/charset.alias; \ | |
- sed -f ref-del.sed $$dest > $$temp; \ | |
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then… | |
- rm -f $$dest; \ | |
- else \ | |
- $(INSTALL_DATA) $$temp $$dest; \ | |
- fi; \ | |
- rm -f $$temp; \ | |
- fi; \ | |
- if test -f $(DESTDIR)$(localedir)/locale.alias; then \ | |
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \ | |
- dest=$(DESTDIR)$(localedir)/locale.alias; \ | |
- sed -f ref-del.sed $$dest > $$temp; \ | |
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then… | |
- rm -f $$dest; \ | |
- else \ | |
- $(INSTALL_DATA) $$temp $$dest; \ | |
- fi; \ | |
- rm -f $$temp; \ | |
- fi; \ | |
- else \ | |
- : ; \ | |
- fi | |
- if test "$(PACKAGE)" = "gettext-tools"; then \ | |
- for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DIST… | |
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ | |
- done; \ | |
- else \ | |
- : ; \ | |
- fi | |
- | |
-info dvi ps pdf html: | |
- | |
-$(OBJECTS): ../config.h libgnuintl.h | |
-bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dnget… | |
-localename.$lo: $(srcdir)/gettextP.h | |
-hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h | |
-explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h | |
-dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h | |
-dcigettext.$lo: $(srcdir)/eval-plural.h | |
-localcharset.$lo: $(srcdir)/localcharset.h | |
-bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo l… | |
-localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h | |
-printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-p… | |
- | |
-# A bison-2.1 generated plural.c includes <libintl.h> if ENABLE_NLS. | |
-PLURAL_DEPS_yes = libintl.h | |
-PLURAL_DEPS_no = | |
-plural.$lo: $(PLURAL_DEPS_@USE_INCLUDED_LIBINTL@) | |
- | |
-tags: TAGS | |
- | |
-TAGS: $(HEADERS) $(SOURCES) | |
- here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) | |
- | |
-ctags: CTAGS | |
- | |
-CTAGS: $(HEADERS) $(SOURCES) | |
- here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) | |
- | |
-id: ID | |
- | |
-ID: $(HEADERS) $(SOURCES) | |
- here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) | |
- | |
- | |
-mostlyclean: | |
- rm -f *.a *.la *.o *.obj *.lo core core.* | |
- rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed | |
- rm -f -r .libs _libs | |
- | |
-clean: mostlyclean | |
- | |
-distclean: clean | |
- rm -f Makefile ID TAGS | |
- if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gette… | |
- rm -f ChangeLog.inst $(DISTFILES.normal); \ | |
- else \ | |
- : ; \ | |
- fi | |
- | |
-maintainer-clean: distclean | |
- @echo "This command is intended for maintainers to use;" | |
- @echo "it deletes files that may require special tools to rebuild." | |
- | |
- | |
-# GNU gettext needs not contain the file `VERSION' but contains some | |
-# other files which should not be distributed in other packages. | |
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) | |
-dist distdir: Makefile | |
- if test "$(PACKAGE)" = "gettext-tools"; then \ | |
- : ; \ | |
- else \ | |
- if test "$(PACKAGE)" = "gettext-runtime"; then \ | |
- additional="$(DISTFILES.gettext)"; \ | |
- else \ | |
- additional="$(DISTFILES.normal)"; \ | |
- fi; \ | |
- $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ | |
- for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$a… | |
- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ | |
- cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit… | |
- done; \ | |
- fi | |
- | |
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status | |
- cd $(top_builddir) && $(SHELL) ./config.status | |
-# This would be more efficient, but doesn't work any more with autoconf-2.57, | |
-# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. | |
-# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ | |
- | |
-# 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/intl/VERSION b/intl/VERSION | |
t@@ -1 +0,0 @@ | |
-GNU gettext library from gettext-0.18.1 | |
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c | |
t@@ -1,340 +0,0 @@ | |
-/* Implementation of the bindtextdomain(3) function | |
- Copyright (C) 1995-1998, 2000-2003, 2005-2006, 2008 Free Software | |
- Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <stddef.h> | |
-#include <stdlib.h> | |
-#include <string.h> | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-# define gl_rwlock_define __libc_rwlock_define | |
-# define gl_rwlock_wrlock __libc_rwlock_wrlock | |
-# define gl_rwlock_unlock __libc_rwlock_unlock | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ | |
-#ifndef offsetof | |
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Lock variable to protect the global data in the gettext implementation. */ | |
-gl_rwlock_define (extern, _nl_state_lock attribute_hidden) | |
- | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define BINDTEXTDOMAIN __bindtextdomain | |
-# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset | |
-# ifndef strdup | |
-# define strdup(str) __strdup (str) | |
-# endif | |
-#else | |
-# define BINDTEXTDOMAIN libintl_bindtextdomain | |
-# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset | |
-#endif | |
- | |
-/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP | |
- to be used for the DOMAINNAME message catalog. | |
- If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not | |
- modified, only the current value is returned. | |
- If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither | |
- modified nor returned. */ | |
-static void | |
-set_binding_values (const char *domainname, | |
- const char **dirnamep, const char **codesetp) | |
-{ | |
- struct binding *binding; | |
- int modified; | |
- | |
- /* Some sanity checks. */ | |
- if (domainname == NULL || domainname[0] == '\0') | |
- { | |
- if (dirnamep) | |
- *dirnamep = NULL; | |
- if (codesetp) | |
- *codesetp = NULL; | |
- return; | |
- } | |
- | |
- gl_rwlock_wrlock (_nl_state_lock); | |
- | |
- modified = 0; | |
- | |
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) | |
- { | |
- int compare = strcmp (domainname, binding->domainname); | |
- if (compare == 0) | |
- /* We found it! */ | |
- break; | |
- if (compare < 0) | |
- { | |
- /* It is not in the list. */ | |
- binding = NULL; | |
- break; | |
- } | |
- } | |
- | |
- if (binding != NULL) | |
- { | |
- if (dirnamep) | |
- { | |
- const char *dirname = *dirnamep; | |
- | |
- if (dirname == NULL) | |
- /* The current binding has be to returned. */ | |
- *dirnamep = binding->dirname; | |
- else | |
- { | |
- /* The domain is already bound. If the new value and the old | |
- one are equal we simply do nothing. Otherwise replace the | |
- old binding. */ | |
- char *result = binding->dirname; | |
- if (strcmp (dirname, result) != 0) | |
- { | |
- if (strcmp (dirname, _nl_default_dirname) == 0) | |
- result = (char *) _nl_default_dirname; | |
- else | |
- { | |
-#if defined _LIBC || defined HAVE_STRDUP | |
- result = strdup (dirname); | |
-#else | |
- size_t len = strlen (dirname) + 1; | |
- result = (char *) malloc (len); | |
- if (__builtin_expect (result != NULL, 1)) | |
- memcpy (result, dirname, len); | |
-#endif | |
- } | |
- | |
- if (__builtin_expect (result != NULL, 1)) | |
- { | |
- if (binding->dirname != _nl_default_dirname) | |
- free (binding->dirname); | |
- | |
- binding->dirname = result; | |
- modified = 1; | |
- } | |
- } | |
- *dirnamep = result; | |
- } | |
- } | |
- | |
- if (codesetp) | |
- { | |
- const char *codeset = *codesetp; | |
- | |
- if (codeset == NULL) | |
- /* The current binding has be to returned. */ | |
- *codesetp = binding->codeset; | |
- else | |
- { | |
- /* The domain is already bound. If the new value and the old | |
- one are equal we simply do nothing. Otherwise replace the | |
- old binding. */ | |
- char *result = binding->codeset; | |
- if (result == NULL || strcmp (codeset, result) != 0) | |
- { | |
-#if defined _LIBC || defined HAVE_STRDUP | |
- result = strdup (codeset); | |
-#else | |
- size_t len = strlen (codeset) + 1; | |
- result = (char *) malloc (len); | |
- if (__builtin_expect (result != NULL, 1)) | |
- memcpy (result, codeset, len); | |
-#endif | |
- | |
- if (__builtin_expect (result != NULL, 1)) | |
- { | |
- free (binding->codeset); | |
- | |
- binding->codeset = result; | |
- modified = 1; | |
- } | |
- } | |
- *codesetp = result; | |
- } | |
- } | |
- } | |
- else if ((dirnamep == NULL || *dirnamep == NULL) | |
- && (codesetp == NULL || *codesetp == NULL)) | |
- { | |
- /* Simply return the default values. */ | |
- if (dirnamep) | |
- *dirnamep = _nl_default_dirname; | |
- if (codesetp) | |
- *codesetp = NULL; | |
- } | |
- else | |
- { | |
- /* We have to create a new binding. */ | |
- size_t len = strlen (domainname) + 1; | |
- struct binding *new_binding = | |
- (struct binding *) malloc (offsetof (struct binding, domainname) + len… | |
- | |
- if (__builtin_expect (new_binding == NULL, 0)) | |
- goto failed; | |
- | |
- memcpy (new_binding->domainname, domainname, len); | |
- | |
- if (dirnamep) | |
- { | |
- const char *dirname = *dirnamep; | |
- | |
- if (dirname == NULL) | |
- /* The default value. */ | |
- dirname = _nl_default_dirname; | |
- else | |
- { | |
- if (strcmp (dirname, _nl_default_dirname) == 0) | |
- dirname = _nl_default_dirname; | |
- else | |
- { | |
- char *result; | |
-#if defined _LIBC || defined HAVE_STRDUP | |
- result = strdup (dirname); | |
- if (__builtin_expect (result == NULL, 0)) | |
- goto failed_dirname; | |
-#else | |
- size_t len = strlen (dirname) + 1; | |
- result = (char *) malloc (len); | |
- if (__builtin_expect (result == NULL, 0)) | |
- goto failed_dirname; | |
- memcpy (result, dirname, len); | |
-#endif | |
- dirname = result; | |
- } | |
- } | |
- *dirnamep = dirname; | |
- new_binding->dirname = (char *) dirname; | |
- } | |
- else | |
- /* The default value. */ | |
- new_binding->dirname = (char *) _nl_default_dirname; | |
- | |
- if (codesetp) | |
- { | |
- const char *codeset = *codesetp; | |
- | |
- if (codeset != NULL) | |
- { | |
- char *result; | |
- | |
-#if defined _LIBC || defined HAVE_STRDUP | |
- result = strdup (codeset); | |
- if (__builtin_expect (result == NULL, 0)) | |
- goto failed_codeset; | |
-#else | |
- size_t len = strlen (codeset) + 1; | |
- result = (char *) malloc (len); | |
- if (__builtin_expect (result == NULL, 0)) | |
- goto failed_codeset; | |
- memcpy (result, codeset, len); | |
-#endif | |
- codeset = result; | |
- } | |
- *codesetp = codeset; | |
- new_binding->codeset = (char *) codeset; | |
- } | |
- else | |
- new_binding->codeset = NULL; | |
- | |
- /* Now enqueue it. */ | |
- if (_nl_domain_bindings == NULL | |
- || strcmp (domainname, _nl_domain_bindings->domainname) < 0) | |
- { | |
- new_binding->next = _nl_domain_bindings; | |
- _nl_domain_bindings = new_binding; | |
- } | |
- else | |
- { | |
- binding = _nl_domain_bindings; | |
- while (binding->next != NULL | |
- && strcmp (domainname, binding->next->domainname) > 0) | |
- binding = binding->next; | |
- | |
- new_binding->next = binding->next; | |
- binding->next = new_binding; | |
- } | |
- | |
- modified = 1; | |
- | |
- /* Here we deal with memory allocation failures. */ | |
- if (0) | |
- { | |
- failed_codeset: | |
- if (new_binding->dirname != _nl_default_dirname) | |
- free (new_binding->dirname); | |
- failed_dirname: | |
- free (new_binding); | |
- failed: | |
- if (dirnamep) | |
- *dirnamep = NULL; | |
- if (codesetp) | |
- *codesetp = NULL; | |
- } | |
- } | |
- | |
- /* If we modified any binding, we flush the caches. */ | |
- if (modified) | |
- ++_nl_msg_cat_cntr; | |
- | |
- gl_rwlock_unlock (_nl_state_lock); | |
-} | |
- | |
-/* Specify that the DOMAINNAME message catalog will be found | |
- in DIRNAME rather than in the system locale data base. */ | |
-char * | |
-BINDTEXTDOMAIN (const char *domainname, const char *dirname) | |
-{ | |
- set_binding_values (domainname, &dirname, NULL); | |
- return (char *) dirname; | |
-} | |
- | |
-/* Specify the character encoding in which the messages from the | |
- DOMAINNAME message catalog will be returned. */ | |
-char * | |
-BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset) | |
-{ | |
- set_binding_values (domainname, NULL, &codeset); | |
- return (char *) codeset; | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Aliases for function names in GNU C Library. */ | |
-weak_alias (__bindtextdomain, bindtextdomain); | |
-weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); | |
-#endif | |
diff --git a/intl/config.charset b/intl/config.charset | |
t@@ -1,684 +0,0 @@ | |
-#! /bin/sh | |
-# Output a system dependent table of character encoding aliases. | |
-# | |
-# Copyright (C) 2000-2004, 2006-2010 Free Software Foundation, Inc. | |
-# | |
-# This program is free software; you can redistribute it and/or modify it | |
-# under the terms of the GNU Library General Public License as published | |
-# by the Free Software Foundation; either version 2, or (at your option) | |
-# any later version. | |
-# | |
-# This program is distributed in the hope that it will be useful, | |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
-# Library General Public License for more details. | |
-# | |
-# You should have received a copy of the GNU Library General Public | |
-# License along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
-# USA. | |
-# | |
-# The table consists of lines of the form | |
-# ALIAS CANONICAL | |
-# | |
-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". | |
-# ALIAS is compared in a case sensitive way. | |
-# | |
-# CANONICAL is the GNU canonical name for this character encoding. | |
-# It must be an encoding supported by libiconv. Support by GNU libc is | |
-# also desirable. CANONICAL is case insensitive. Usually an upper case | |
-# MIME charset name is preferred. | |
-# The current list of GNU canonical charset names is as follows. | |
-# | |
-# name MIME? used by which systems | |
-# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin | |
-# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd… | |
-# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd… | |
-# ISO-8859-3 Y glibc solaris cygwin | |
-# ISO-8859-4 Y osf solaris freebsd netbsd openbsd darwin | |
-# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd… | |
-# ISO-8859-6 Y glibc aix hpux solaris cygwin | |
-# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd… | |
-# ISO-8859-8 Y glibc aix hpux osf solaris cygwin | |
-# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin cygwin | |
-# ISO-8859-13 glibc netbsd openbsd darwin cygwin | |
-# ISO-8859-14 glibc cygwin | |
-# ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd d… | |
-# KOI8-R Y glibc solaris freebsd netbsd openbsd darwin | |
-# KOI8-U Y glibc freebsd netbsd openbsd darwin cygwin | |
-# KOI8-T glibc | |
-# CP437 dos | |
-# CP775 dos | |
-# CP850 aix osf dos | |
-# CP852 dos | |
-# CP855 dos | |
-# CP856 aix | |
-# CP857 dos | |
-# CP861 dos | |
-# CP862 dos | |
-# CP864 dos | |
-# CP865 dos | |
-# CP866 freebsd netbsd openbsd darwin dos | |
-# CP869 dos | |
-# CP874 woe32 dos | |
-# CP922 aix | |
-# CP932 aix cygwin woe32 dos | |
-# CP943 aix | |
-# CP949 osf darwin woe32 dos | |
-# CP950 woe32 dos | |
-# CP1046 aix | |
-# CP1124 aix | |
-# CP1125 dos | |
-# CP1129 aix | |
-# CP1131 darwin | |
-# CP1250 woe32 | |
-# CP1251 glibc solaris netbsd openbsd darwin cygwin woe… | |
-# CP1252 aix woe32 | |
-# CP1253 woe32 | |
-# CP1254 woe32 | |
-# CP1255 glibc woe32 | |
-# CP1256 woe32 | |
-# CP1257 woe32 | |
-# GB2312 Y glibc aix hpux irix solaris freebsd netbsd dar… | |
-# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd… | |
-# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd… | |
-# EUC-TW glibc aix hpux irix osf solaris netbsd | |
-# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darw… | |
-# BIG5-HKSCS glibc solaris darwin | |
-# GBK glibc aix osf solaris darwin cygwin woe32 dos | |
-# GB18030 glibc solaris netbsd darwin | |
-# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin | |
-# JOHAB glibc solaris woe32 | |
-# TIS-620 glibc aix hpux osf solaris cygwin | |
-# VISCII Y glibc | |
-# TCVN5712-1 glibc | |
-# ARMSCII-8 glibc darwin | |
-# GEORGIAN-PS glibc cygwin | |
-# PT154 glibc | |
-# HP-ROMAN8 hpux | |
-# HP-ARABIC8 hpux | |
-# HP-GREEK8 hpux | |
-# HP-HEBREW8 hpux | |
-# HP-TURKISH8 hpux | |
-# HP-KANA8 hpux | |
-# DEC-KANJI osf | |
-# DEC-HANYU osf | |
-# UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin | |
-# | |
-# Note: Names which are not marked as being a MIME name should not be used in | |
-# Internet protocols for information interchange (mail, news, etc.). | |
-# | |
-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications | |
-# must understand both names and treat them as equivalent. | |
-# | |
-# The first argument passed to this file is the canonical host specification, | |
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM | |
-# or | |
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM | |
- | |
-host="$1" | |
-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` | |
-echo "# This file contains a table of character encoding aliases," | |
-echo "# suitable for operating system '${os}'." | |
-echo "# It was automatically generated from config.charset." | |
-# List of references, updated during installation: | |
-echo "# Packages using this file: " | |
-case "$os" in | |
- linux-gnulibc1*) | |
- # Linux libc5 doesn't have nl_langinfo(CODESET); therefore | |
- # localcharset.c falls back to using the full locale name | |
- # from the environment variables. | |
- echo "C ASCII" | |
- echo "POSIX ASCII" | |
- for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \ | |
- en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \ | |
- en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \ | |
- es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \ | |
- et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \ | |
- fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \ | |
- it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \ | |
- sv_FI sv_SE; do | |
- echo "$l ISO-8859-1" | |
- echo "$l.iso-8859-1 ISO-8859-1" | |
- echo "$l.iso-8859-15 ISO-8859-15" | |
- echo "$l.iso-8859-15@euro ISO-8859-15" | |
- echo "$l@euro ISO-8859-15" | |
- echo "$l.cp-437 CP437" | |
- echo "$l.cp-850 CP850" | |
- echo "$l.cp-1252 CP1252" | |
- echo "$l.cp-1252@euro CP1252" | |
- #echo "$l.atari-st ATARI-ST" # not a commonly used encoding | |
- echo "$l.utf-8 UTF-8" | |
- echo "$l.utf-8@euro UTF-8" | |
- done | |
- for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \ | |
- sl_SI sr sr_CS sr_YU; do | |
- echo "$l ISO-8859-2" | |
- echo "$l.iso-8859-2 ISO-8859-2" | |
- echo "$l.cp-852 CP852" | |
- echo "$l.cp-1250 CP1250" | |
- echo "$l.utf-8 UTF-8" | |
- done | |
- for l in mk mk_MK ru ru_RU; do | |
- echo "$l ISO-8859-5" | |
- echo "$l.iso-8859-5 ISO-8859-5" | |
- echo "$l.koi8-r KOI8-R" | |
- echo "$l.cp-866 CP866" | |
- echo "$l.cp-1251 CP1251" | |
- echo "$l.utf-8 UTF-8" | |
- done | |
- for l in ar ar_SA; do | |
- echo "$l ISO-8859-6" | |
- echo "$l.iso-8859-6 ISO-8859-6" | |
- echo "$l.cp-864 CP864" | |
- #echo "$l.cp-868 CP868" # not a commonly used encoding | |
- echo "$l.cp-1256 CP1256" | |
- echo "$l.utf-8 UTF-8" | |
- done | |
- for l in el el_GR gr gr_GR; do | |
- echo "$l ISO-8859-7" | |
- echo "$l.iso-8859-7 ISO-8859-7" | |
- echo "$l.cp-869 CP869" | |
- echo "$l.cp-1253 CP1253" | |
- echo "$l.cp-1253@euro CP1253" | |
- echo "$l.utf-8 UTF-8" | |
- echo "$l.utf-8@euro UTF-8" | |
- done | |
- for l in he he_IL iw iw_IL; do | |
- echo "$l ISO-8859-8" | |
- echo "$l.iso-8859-8 ISO-8859-8" | |
- echo "$l.cp-862 CP862" | |
- echo "$l.cp-1255 CP1255" | |
- echo "$l.utf-8 UTF-8" | |
- done | |
- for l in tr tr_TR; do | |
- echo "$l ISO-8859-9" | |
- echo "$l.iso-8859-9 ISO-8859-9" | |
- echo "$l.cp-857 CP857" | |
- echo "$l.cp-1254 CP1254" | |
- echo "$l.utf-8 UTF-8" | |
- done | |
- for l in lt lt_LT lv lv_LV; do | |
- #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name | |
- echo "$l ISO-8859-13" | |
- done | |
- for l in ru_UA uk uk_UA; do | |
- echo "$l KOI8-U" | |
- done | |
- for l in zh zh_CN; do | |
- #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name | |
- echo "$l GB2312" | |
- done | |
- for l in ja ja_JP ja_JP.EUC; do | |
- echo "$l EUC-JP" | |
- done | |
- for l in ko ko_KR; do | |
- echo "$l EUC-KR" | |
- done | |
- for l in th th_TH; do | |
- echo "$l TIS-620" | |
- done | |
- for l in fa fa_IR; do | |
- #echo "$l ISIRI-3342" # a broken encoding | |
- echo "$l.utf-8 UTF-8" | |
- done | |
- ;; | |
- linux* | *-gnu*) | |
- # With glibc-2.1 or newer, we don't need any canonicalization, | |
- # because glibc has iconv and both glibc and libiconv support all | |
- # GNU canonical names directly. Therefore, the Makefile does not | |
- # need to install the alias file at all. | |
- # The following applies only to glibc-2.0.x and older libcs. | |
- echo "ISO_646.IRV:1983 ASCII" | |
- ;; | |
- aix*) | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-6 ISO-8859-6" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-8 ISO-8859-8" | |
- echo "ISO8859-9 ISO-8859-9" | |
- echo "ISO8859-15 ISO-8859-15" | |
- echo "IBM-850 CP850" | |
- echo "IBM-856 CP856" | |
- echo "IBM-921 ISO-8859-13" | |
- echo "IBM-922 CP922" | |
- echo "IBM-932 CP932" | |
- echo "IBM-943 CP943" | |
- echo "IBM-1046 CP1046" | |
- echo "IBM-1124 CP1124" | |
- echo "IBM-1129 CP1129" | |
- echo "IBM-1252 CP1252" | |
- echo "IBM-eucCN GB2312" | |
- echo "IBM-eucJP EUC-JP" | |
- echo "IBM-eucKR EUC-KR" | |
- echo "IBM-eucTW EUC-TW" | |
- echo "big5 BIG5" | |
- echo "GBK GBK" | |
- echo "TIS-620 TIS-620" | |
- echo "UTF-8 UTF-8" | |
- ;; | |
- hpux*) | |
- echo "iso88591 ISO-8859-1" | |
- echo "iso88592 ISO-8859-2" | |
- echo "iso88595 ISO-8859-5" | |
- echo "iso88596 ISO-8859-6" | |
- echo "iso88597 ISO-8859-7" | |
- echo "iso88598 ISO-8859-8" | |
- echo "iso88599 ISO-8859-9" | |
- echo "iso885915 ISO-8859-15" | |
- echo "roman8 HP-ROMAN8" | |
- echo "arabic8 HP-ARABIC8" | |
- echo "greek8 HP-GREEK8" | |
- echo "hebrew8 HP-HEBREW8" | |
- echo "turkish8 HP-TURKISH8" | |
- echo "kana8 HP-KANA8" | |
- echo "tis620 TIS-620" | |
- echo "big5 BIG5" | |
- echo "eucJP EUC-JP" | |
- echo "eucKR EUC-KR" | |
- echo "eucTW EUC-TW" | |
- echo "hp15CN GB2312" | |
- #echo "ccdc ?" # what is this? | |
- echo "SJIS SHIFT_JIS" | |
- echo "utf8 UTF-8" | |
- ;; | |
- irix*) | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-9 ISO-8859-9" | |
- echo "eucCN GB2312" | |
- echo "eucJP EUC-JP" | |
- echo "eucKR EUC-KR" | |
- echo "eucTW EUC-TW" | |
- ;; | |
- osf*) | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-4 ISO-8859-4" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-8 ISO-8859-8" | |
- echo "ISO8859-9 ISO-8859-9" | |
- echo "ISO8859-15 ISO-8859-15" | |
- echo "cp850 CP850" | |
- echo "big5 BIG5" | |
- echo "dechanyu DEC-HANYU" | |
- echo "dechanzi GB2312" | |
- echo "deckanji DEC-KANJI" | |
- echo "deckorean EUC-KR" | |
- echo "eucJP EUC-JP" | |
- echo "eucKR EUC-KR" | |
- echo "eucTW EUC-TW" | |
- echo "GBK GBK" | |
- echo "KSC5601 CP949" | |
- echo "sdeckanji EUC-JP" | |
- echo "SJIS SHIFT_JIS" | |
- echo "TACTIS TIS-620" | |
- echo "UTF-8 UTF-8" | |
- ;; | |
- solaris*) | |
- echo "646 ASCII" | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-3 ISO-8859-3" | |
- echo "ISO8859-4 ISO-8859-4" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-6 ISO-8859-6" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-8 ISO-8859-8" | |
- echo "ISO8859-9 ISO-8859-9" | |
- echo "ISO8859-15 ISO-8859-15" | |
- echo "koi8-r KOI8-R" | |
- echo "ansi-1251 CP1251" | |
- echo "BIG5 BIG5" | |
- echo "Big5-HKSCS BIG5-HKSCS" | |
- echo "gb2312 GB2312" | |
- echo "GBK GBK" | |
- echo "GB18030 GB18030" | |
- echo "cns11643 EUC-TW" | |
- echo "5601 EUC-KR" | |
- echo "ko_KR.johap92 JOHAB" | |
- echo "eucJP EUC-JP" | |
- echo "PCK SHIFT_JIS" | |
- echo "TIS620.2533 TIS-620" | |
- #echo "sun_eu_greek ?" # what is this? | |
- echo "UTF-8 UTF-8" | |
- ;; | |
- freebsd* | os2*) | |
- # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore | |
- # localcharset.c falls back to using the full locale name | |
- # from the environment variables. | |
- # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just | |
- # reuse FreeBSD's locale data for OS/2. | |
- echo "C ASCII" | |
- echo "US-ASCII ASCII" | |
- for l in la_LN lt_LN; do | |
- echo "$l.ASCII ASCII" | |
- done | |
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ | |
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ | |
- lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do | |
- echo "$l.ISO_8859-1 ISO-8859-1" | |
- echo "$l.DIS_8859-15 ISO-8859-15" | |
- done | |
- for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do | |
- echo "$l.ISO_8859-2 ISO-8859-2" | |
- done | |
- for l in la_LN lt_LT; do | |
- echo "$l.ISO_8859-4 ISO-8859-4" | |
- done | |
- for l in ru_RU ru_SU; do | |
- echo "$l.KOI8-R KOI8-R" | |
- echo "$l.ISO_8859-5 ISO-8859-5" | |
- echo "$l.CP866 CP866" | |
- done | |
- echo "uk_UA.KOI8-U KOI8-U" | |
- echo "zh_TW.BIG5 BIG5" | |
- echo "zh_TW.Big5 BIG5" | |
- echo "zh_CN.EUC GB2312" | |
- echo "ja_JP.EUC EUC-JP" | |
- echo "ja_JP.SJIS SHIFT_JIS" | |
- echo "ja_JP.Shift_JIS SHIFT_JIS" | |
- echo "ko_KR.EUC EUC-KR" | |
- ;; | |
- netbsd*) | |
- echo "646 ASCII" | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-4 ISO-8859-4" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-13 ISO-8859-13" | |
- echo "ISO8859-15 ISO-8859-15" | |
- echo "eucCN GB2312" | |
- echo "eucJP EUC-JP" | |
- echo "eucKR EUC-KR" | |
- echo "eucTW EUC-TW" | |
- echo "BIG5 BIG5" | |
- echo "SJIS SHIFT_JIS" | |
- ;; | |
- openbsd*) | |
- echo "646 ASCII" | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-4 ISO-8859-4" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-13 ISO-8859-13" | |
- echo "ISO8859-15 ISO-8859-15" | |
- ;; | |
- darwin[56]*) | |
- # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore | |
- # localcharset.c falls back to using the full locale name | |
- # from the environment variables. | |
- echo "C ASCII" | |
- for l in en_AU en_CA en_GB en_US la_LN; do | |
- echo "$l.US-ASCII ASCII" | |
- done | |
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ | |
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \ | |
- nl_NL no_NO pt_PT sv_SE; do | |
- echo "$l ISO-8859-1" | |
- echo "$l.ISO8859-1 ISO-8859-1" | |
- echo "$l.ISO8859-15 ISO-8859-15" | |
- done | |
- for l in la_LN; do | |
- echo "$l.ISO8859-1 ISO-8859-1" | |
- echo "$l.ISO8859-15 ISO-8859-15" | |
- done | |
- for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do | |
- echo "$l.ISO8859-2 ISO-8859-2" | |
- done | |
- for l in la_LN lt_LT; do | |
- echo "$l.ISO8859-4 ISO-8859-4" | |
- done | |
- for l in ru_RU; do | |
- echo "$l.KOI8-R KOI8-R" | |
- echo "$l.ISO8859-5 ISO-8859-5" | |
- echo "$l.CP866 CP866" | |
- done | |
- for l in bg_BG; do | |
- echo "$l.CP1251 CP1251" | |
- done | |
- echo "uk_UA.KOI8-U KOI8-U" | |
- echo "zh_TW.BIG5 BIG5" | |
- echo "zh_TW.Big5 BIG5" | |
- echo "zh_CN.EUC GB2312" | |
- echo "ja_JP.EUC EUC-JP" | |
- echo "ja_JP.SJIS SHIFT_JIS" | |
- echo "ko_KR.EUC EUC-KR" | |
- ;; | |
- darwin*) | |
- # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is | |
- # useless: | |
- # - It returns the empty string when LANG is set to a locale of the | |
- # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8 | |
- # LC_CTYPE file. | |
- # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by | |
- # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case. | |
- # - The documentation says: | |
- # "... all code that calls BSD system routines should ensure | |
- # that the const *char parameters of these routines are in UTF-8 | |
- # encoding. All BSD system functions expect their string | |
- # parameters to be in UTF-8 encoding and nothing else." | |
- # It also says | |
- # "An additional caveat is that string parameters for files, | |
- # paths, and other file-system entities must be in canonical | |
- # UTF-8. In a canonical UTF-8 Unicode string, all decomposable | |
- # characters are decomposed ..." | |
- # but this is not true: You can pass non-decomposed UTF-8 strings | |
- # to file system functions, and it is the OS which will convert | |
- # them to decomposed UTF-8 before accessing the file system. | |
- # - The Apple Terminal application displays UTF-8 by default. | |
- # - However, other applications are free to use different encodings: | |
- # - xterm uses ISO-8859-1 by default. | |
- # - TextEdit uses MacRoman by default. | |
- # We prefer UTF-8 over decomposed UTF-8-MAC because one should | |
- # minimize the use of decomposed Unicode. Unfortunately, through the | |
- # Darwin file system, decomposed UTF-8 strings are leaked into user | |
- # space nevertheless. | |
- # Then there are also the locales with encodings other than US-ASCII | |
- # and UTF-8. These locales can be occasionally useful to users (e.g. | |
- # when grepping through ISO-8859-1 encoded text files), when all their | |
- # file names are in US-ASCII. | |
- echo "ISO8859-1 ISO-8859-1" | |
- echo "ISO8859-2 ISO-8859-2" | |
- echo "ISO8859-4 ISO-8859-4" | |
- echo "ISO8859-5 ISO-8859-5" | |
- echo "ISO8859-7 ISO-8859-7" | |
- echo "ISO8859-9 ISO-8859-9" | |
- echo "ISO8859-13 ISO-8859-13" | |
- echo "ISO8859-15 ISO-8859-15" | |
- echo "KOI8-R KOI8-R" | |
- echo "KOI8-U KOI8-U" | |
- echo "CP866 CP866" | |
- echo "CP949 CP949" | |
- echo "CP1131 CP1131" | |
- echo "CP1251 CP1251" | |
- echo "eucCN GB2312" | |
- echo "GB2312 GB2312" | |
- echo "eucJP EUC-JP" | |
- echo "eucKR EUC-KR" | |
- echo "Big5 BIG5" | |
- echo "Big5HKSCS BIG5-HKSCS" | |
- echo "GBK GBK" | |
- echo "GB18030 GB18030" | |
- echo "SJIS SHIFT_JIS" | |
- echo "ARMSCII-8 ARMSCII-8" | |
- echo "PT154 PT154" | |
- #echo "ISCII-DEV ?" | |
- echo "* UTF-8" | |
- ;; | |
- beos* | haiku*) | |
- # BeOS and Haiku have a single locale, and it has UTF-8 encoding. | |
- echo "* UTF-8" | |
- ;; | |
- msdosdjgpp*) | |
- # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore | |
- # localcharset.c falls back to using the full locale name | |
- # from the environment variables. | |
- echo "#" | |
- echo "# The encodings given here may not all be correct." | |
- echo "# If you find that the encoding given for your language and" | |
- echo "# country is not the one your DOS machine actually uses, just" | |
- echo "# correct it in this file, and send a mail to" | |
- echo "# Juan Manuel Guerrero <[email protected]>" | |
- echo "# and Bruno Haible <[email protected]>." | |
- echo "#" | |
- echo "C ASCII" | |
- # ISO-8859-1 languages | |
- echo "ca CP850" | |
- echo "ca_ES CP850" | |
- echo "da CP865" # not CP850 ?? | |
- echo "da_DK CP865" # not CP850 ?? | |
- echo "de CP850" | |
- echo "de_AT CP850" | |
- echo "de_CH CP850" | |
- echo "de_DE CP850" | |
- echo "en CP850" | |
- echo "en_AU CP850" # not CP437 ?? | |
- echo "en_CA CP850" | |
- echo "en_GB CP850" | |
- echo "en_NZ CP437" | |
- echo "en_US CP437" | |
- echo "en_ZA CP850" # not CP437 ?? | |
- echo "es CP850" | |
- echo "es_AR CP850" | |
- echo "es_BO CP850" | |
- echo "es_CL CP850" | |
- echo "es_CO CP850" | |
- echo "es_CR CP850" | |
- echo "es_CU CP850" | |
- echo "es_DO CP850" | |
- echo "es_EC CP850" | |
- echo "es_ES CP850" | |
- echo "es_GT CP850" | |
- echo "es_HN CP850" | |
- echo "es_MX CP850" | |
- echo "es_NI CP850" | |
- echo "es_PA CP850" | |
- echo "es_PY CP850" | |
- echo "es_PE CP850" | |
- echo "es_SV CP850" | |
- echo "es_UY CP850" | |
- echo "es_VE CP850" | |
- echo "et CP850" | |
- echo "et_EE CP850" | |
- echo "eu CP850" | |
- echo "eu_ES CP850" | |
- echo "fi CP850" | |
- echo "fi_FI CP850" | |
- echo "fr CP850" | |
- echo "fr_BE CP850" | |
- echo "fr_CA CP850" | |
- echo "fr_CH CP850" | |
- echo "fr_FR CP850" | |
- echo "ga CP850" | |
- echo "ga_IE CP850" | |
- echo "gd CP850" | |
- echo "gd_GB CP850" | |
- echo "gl CP850" | |
- echo "gl_ES CP850" | |
- echo "id CP850" # not CP437 ?? | |
- echo "id_ID CP850" # not CP437 ?? | |
- echo "is CP861" # not CP850 ?? | |
- echo "is_IS CP861" # not CP850 ?? | |
- echo "it CP850" | |
- echo "it_CH CP850" | |
- echo "it_IT CP850" | |
- echo "lt CP775" | |
- echo "lt_LT CP775" | |
- echo "lv CP775" | |
- echo "lv_LV CP775" | |
- echo "nb CP865" # not CP850 ?? | |
- echo "nb_NO CP865" # not CP850 ?? | |
- echo "nl CP850" | |
- echo "nl_BE CP850" | |
- echo "nl_NL CP850" | |
- echo "nn CP865" # not CP850 ?? | |
- echo "nn_NO CP865" # not CP850 ?? | |
- echo "no CP865" # not CP850 ?? | |
- echo "no_NO CP865" # not CP850 ?? | |
- echo "pt CP850" | |
- echo "pt_BR CP850" | |
- echo "pt_PT CP850" | |
- echo "sv CP850" | |
- echo "sv_SE CP850" | |
- # ISO-8859-2 languages | |
- echo "cs CP852" | |
- echo "cs_CZ CP852" | |
- echo "hr CP852" | |
- echo "hr_HR CP852" | |
- echo "hu CP852" | |
- echo "hu_HU CP852" | |
- echo "pl CP852" | |
- echo "pl_PL CP852" | |
- echo "ro CP852" | |
- echo "ro_RO CP852" | |
- echo "sk CP852" | |
- echo "sk_SK CP852" | |
- echo "sl CP852" | |
- echo "sl_SI CP852" | |
- echo "sq CP852" | |
- echo "sq_AL CP852" | |
- echo "sr CP852" # CP852 or CP866 or CP855 ?? | |
- echo "sr_CS CP852" # CP852 or CP866 or CP855 ?? | |
- echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? | |
- # ISO-8859-3 languages | |
- echo "mt CP850" | |
- echo "mt_MT CP850" | |
- # ISO-8859-5 languages | |
- echo "be CP866" | |
- echo "be_BE CP866" | |
- echo "bg CP866" # not CP855 ?? | |
- echo "bg_BG CP866" # not CP855 ?? | |
- echo "mk CP866" # not CP855 ?? | |
- echo "mk_MK CP866" # not CP855 ?? | |
- echo "ru CP866" | |
- echo "ru_RU CP866" | |
- echo "uk CP1125" | |
- echo "uk_UA CP1125" | |
- # ISO-8859-6 languages | |
- echo "ar CP864" | |
- echo "ar_AE CP864" | |
- echo "ar_DZ CP864" | |
- echo "ar_EG CP864" | |
- echo "ar_IQ CP864" | |
- echo "ar_IR CP864" | |
- echo "ar_JO CP864" | |
- echo "ar_KW CP864" | |
- echo "ar_MA CP864" | |
- echo "ar_OM CP864" | |
- echo "ar_QA CP864" | |
- echo "ar_SA CP864" | |
- echo "ar_SY CP864" | |
- # ISO-8859-7 languages | |
- echo "el CP869" | |
- echo "el_GR CP869" | |
- # ISO-8859-8 languages | |
- echo "he CP862" | |
- echo "he_IL CP862" | |
- # ISO-8859-9 languages | |
- echo "tr CP857" | |
- echo "tr_TR CP857" | |
- # Japanese | |
- echo "ja CP932" | |
- echo "ja_JP CP932" | |
- # Chinese | |
- echo "zh_CN GBK" | |
- echo "zh_TW CP950" # not CP938 ?? | |
- # Korean | |
- echo "kr CP949" # not CP934 ?? | |
- echo "kr_KR CP949" # not CP934 ?? | |
- # Thai | |
- echo "th CP874" | |
- echo "th_TH CP874" | |
- # Other | |
- echo "eo CP850" | |
- echo "eo_EO CP850" | |
- ;; | |
-esac | |
diff --git a/intl/dcgettext.c b/intl/dcgettext.c | |
t@@ -1,56 +0,0 @@ | |
-/* Implementation of the dcgettext(3) function. | |
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define DCGETTEXT __dcgettext | |
-# define DCIGETTEXT __dcigettext | |
-#else | |
-# define DCGETTEXT libintl_dcgettext | |
-# define DCIGETTEXT libintl_dcigettext | |
-#endif | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY | |
- locale. */ | |
-char * | |
-DCGETTEXT (const char *domainname, const char *msgid, int category) | |
-{ | |
- return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-INTDEF(__dcgettext) | |
-weak_alias (__dcgettext, dcgettext); | |
-#endif | |
diff --git a/intl/dcigettext.c b/intl/dcigettext.c | |
t@@ -1,1705 +0,0 @@ | |
-/* Implementation of the internal dcigettext function. | |
- Copyright (C) 1995-1999, 2000-2009 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* Tell glibc's <string.h> to provide a prototype for mempcpy(). | |
- This must come before <config.h> because <config.h> may include | |
- <features.h>, and once <features.h> has been included, it's too late. */ | |
-#ifndef _GNU_SOURCE | |
-# define _GNU_SOURCE 1 | |
-#endif | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <sys/types.h> | |
- | |
-#ifdef __GNUC__ | |
-# define alloca __builtin_alloca | |
-# define HAVE_ALLOCA 1 | |
-#else | |
-# ifdef _MSC_VER | |
-# include <malloc.h> | |
-# define alloca _alloca | |
-# else | |
-# if defined HAVE_ALLOCA_H || defined _LIBC | |
-# include <alloca.h> | |
-# else | |
-# ifdef _AIX | |
- #pragma alloca | |
-# else | |
-# ifndef alloca | |
-char *alloca (); | |
-# endif | |
-# endif | |
-# endif | |
-# endif | |
-#endif | |
- | |
-#include <errno.h> | |
-#ifndef errno | |
-extern int errno; | |
-#endif | |
-#ifndef __set_errno | |
-# define __set_errno(val) errno = (val) | |
-#endif | |
- | |
-#include <stddef.h> | |
-#include <stdlib.h> | |
-#include <string.h> | |
- | |
-#if defined HAVE_UNISTD_H || defined _LIBC | |
-# include <unistd.h> | |
-#endif | |
- | |
-#include <locale.h> | |
- | |
-#ifdef _LIBC | |
- /* Guess whether integer division by zero raises signal SIGFPE. | |
- Set to 1 only if you know for sure. In case of doubt, set to 0. */ | |
-# if defined __alpha__ || defined __arm__ || defined __i386__ \ | |
- || defined __m68k__ || defined __s390__ | |
-# define INTDIV0_RAISES_SIGFPE 1 | |
-# else | |
-# define INTDIV0_RAISES_SIGFPE 0 | |
-# endif | |
-#endif | |
-#if !INTDIV0_RAISES_SIGFPE | |
-# include <signal.h> | |
-#endif | |
- | |
-#if defined HAVE_SYS_PARAM_H || defined _LIBC | |
-# include <sys/param.h> | |
-#endif | |
- | |
-#if !defined _LIBC | |
-# include "localcharset.h" | |
-#endif | |
- | |
-#include "gettextP.h" | |
-#include "plural-exp.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# ifdef IN_LIBGLOCALE | |
-# include <libintl.h> | |
-# endif | |
-# include "libgnuintl.h" | |
-#endif | |
-#include "hash-string.h" | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-# define gl_rwlock_define_initialized __libc_rwlock_define_initialized | |
-# define gl_rwlock_rdlock __libc_rwlock_rdlock | |
-# define gl_rwlock_wrlock __libc_rwlock_wrlock | |
-# define gl_rwlock_unlock __libc_rwlock_unlock | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-/* Alignment of types. */ | |
-#if defined __GNUC__ && __GNUC__ >= 2 | |
-# define alignof(TYPE) __alignof__ (TYPE) | |
-#else | |
-# define alignof(TYPE) \ | |
- ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) | |
-#endif | |
- | |
-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ | |
-#ifndef offsetof | |
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-#ifdef _LIBC | |
-/* Rename the non ANSI C functions. This is required by the standard | |
- because some ANSI C functions will require linking with this object | |
- file and the name space must not be polluted. */ | |
-# define getcwd __getcwd | |
-# ifndef stpcpy | |
-# define stpcpy __stpcpy | |
-# endif | |
-# define tfind __tfind | |
-#else | |
-# if !defined HAVE_GETCWD | |
-char *getwd (); | |
-# define getcwd(buf, max) getwd (buf) | |
-# else | |
-# if VMS | |
-# define getcwd(buf, max) (getcwd) (buf, max, 0) | |
-# else | |
-char *getcwd (); | |
-# endif | |
-# endif | |
-# ifndef HAVE_STPCPY | |
-static char *stpcpy (char *dest, const char *src); | |
-# endif | |
-# ifndef HAVE_MEMPCPY | |
-static void *mempcpy (void *dest, const void *src, size_t n); | |
-# endif | |
-#endif | |
- | |
-/* Use a replacement if the system does not provide the `tsearch' function | |
- family. */ | |
-#if HAVE_TSEARCH || defined _LIBC | |
-# include <search.h> | |
-#else | |
-# define tsearch libintl_tsearch | |
-# define tfind libintl_tfind | |
-# define tdelete libintl_tdelete | |
-# define twalk libintl_twalk | |
-# include "tsearch.h" | |
-#endif | |
- | |
-#ifdef _LIBC | |
-# define tsearch __tsearch | |
-#endif | |
- | |
-/* Amount to increase buffer size by in each try. */ | |
-#define PATH_INCR 32 | |
- | |
-/* The following is from pathmax.h. */ | |
-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define | |
- PATH_MAX but might cause redefinition warnings when sys/param.h is | |
- later included (as on MORE/BSD 4.3). */ | |
-#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) | |
-# include <limits.h> | |
-#endif | |
- | |
-#ifndef _POSIX_PATH_MAX | |
-# define _POSIX_PATH_MAX 255 | |
-#endif | |
- | |
-#if !defined PATH_MAX && defined _PC_PATH_MAX | |
-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _P… | |
-#endif | |
- | |
-/* Don't include sys/param.h if it already has been. */ | |
-#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN | |
-# include <sys/param.h> | |
-#endif | |
- | |
-#if !defined PATH_MAX && defined MAXPATHLEN | |
-# define PATH_MAX MAXPATHLEN | |
-#endif | |
- | |
-#ifndef PATH_MAX | |
-# define PATH_MAX _POSIX_PATH_MAX | |
-#endif | |
- | |
-/* Pathname support. | |
- ISSLASH(C) tests whether C is a directory separator character. | |
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, | |
- it may be concatenated to a directory pathname. | |
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. | |
- */ | |
-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX… | |
- /* Win32, Cygwin, OS/2, DOS */ | |
-# define ISSLASH(C) ((C) == '/' || (C) == '\\') | |
-# define HAS_DEVICE(P) \ | |
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ | |
- && (P)[1] == ':') | |
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) | |
-# define IS_PATH_WITH_DIR(P) \ | |
- (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) | |
-#else | |
- /* Unix */ | |
-# define ISSLASH(C) ((C) == '/') | |
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) | |
-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) | |
-#endif | |
- | |
-/* Whether to support different locales in different threads. */ | |
-#if defined _LIBC || HAVE_USELOCALE || defined IN_LIBGLOCALE | |
-# define HAVE_PER_THREAD_LOCALE | |
-#endif | |
- | |
-/* This is the type used for the search tree where known translations | |
- are stored. */ | |
-struct known_translation_t | |
-{ | |
- /* Domain in which to search. */ | |
- const char *domainname; | |
- | |
- /* The category. */ | |
- int category; | |
- | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
- /* Name of the relevant locale category, or "" for the global locale. */ | |
- const char *localename; | |
-#endif | |
- | |
-#ifdef IN_LIBGLOCALE | |
- /* The character encoding. */ | |
- const char *encoding; | |
-#endif | |
- | |
- /* State of the catalog counter at the point the string was found. */ | |
- int counter; | |
- | |
- /* Catalog where the string was found. */ | |
- struct loaded_l10nfile *domain; | |
- | |
- /* And finally the translation. */ | |
- const char *translation; | |
- size_t translation_length; | |
- | |
- /* Pointer to the string in question. */ | |
- union | |
- { | |
- char appended[ZERO]; /* used if domain != NULL */ | |
- const char *ptr; /* used if domain == NULL */ | |
- } | |
- msgid; | |
-}; | |
- | |
-gl_rwlock_define_initialized (static, tree_lock) | |
- | |
-/* Root of the search tree with known translations. */ | |
-static void *root; | |
- | |
-/* Function to compare two entries in the table of known translations. */ | |
-static int | |
-transcmp (const void *p1, const void *p2) | |
-{ | |
- const struct known_translation_t *s1; | |
- const struct known_translation_t *s2; | |
- int result; | |
- | |
- s1 = (const struct known_translation_t *) p1; | |
- s2 = (const struct known_translation_t *) p2; | |
- | |
- result = strcmp (s1->domain != NULL ? s1->msgid.appended : s1->msgid.ptr, | |
- s2->domain != NULL ? s2->msgid.appended : s2->msgid.ptr); | |
- if (result == 0) | |
- { | |
- result = strcmp (s1->domainname, s2->domainname); | |
- if (result == 0) | |
- { | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
- result = strcmp (s1->localename, s2->localename); | |
- if (result == 0) | |
-#endif | |
- { | |
-#ifdef IN_LIBGLOCALE | |
- result = strcmp (s1->encoding, s2->encoding); | |
- if (result == 0) | |
-#endif | |
- /* We compare the category last (though this is the cheapest | |
- operation) since it is hopefully always the same (namely | |
- LC_MESSAGES). */ | |
- result = s1->category - s2->category; | |
- } | |
- } | |
- } | |
- | |
- return result; | |
-} | |
- | |
-/* Name of the default domain used for gettext(3) prior any call to | |
- textdomain(3). The default value for this is "messages". */ | |
-const char _nl_default_default_domain[] attribute_hidden = "messages"; | |
- | |
-#ifndef IN_LIBGLOCALE | |
-/* Value used as the default domain for gettext(3). */ | |
-const char *_nl_current_default_domain attribute_hidden | |
- = _nl_default_default_domain; | |
-#endif | |
- | |
-/* Contains the default location of the message catalogs. */ | |
-#if defined __EMX__ | |
-extern const char _nl_default_dirname[]; | |
-#else | |
-# ifdef _LIBC | |
-extern const char _nl_default_dirname[]; | |
-libc_hidden_proto (_nl_default_dirname) | |
-# endif | |
-const char _nl_default_dirname[] = LOCALEDIR; | |
-# ifdef _LIBC | |
-libc_hidden_data_def (_nl_default_dirname) | |
-# endif | |
-#endif | |
- | |
-#ifndef IN_LIBGLOCALE | |
-/* List with bindings of specific domains created by bindtextdomain() | |
- calls. */ | |
-struct binding *_nl_domain_bindings; | |
-#endif | |
- | |
-/* Prototypes for local functions. */ | |
-static char *plural_lookup (struct loaded_l10nfile *domain, | |
- unsigned long int n, | |
- const char *translation, size_t translation_len) | |
- internal_function; | |
- | |
-#ifdef IN_LIBGLOCALE | |
-static const char *guess_category_value (int category, | |
- const char *categoryname, | |
- const char *localename) | |
- internal_function; | |
-#else | |
-static const char *guess_category_value (int category, | |
- const char *categoryname) | |
- internal_function; | |
-#endif | |
- | |
-#ifdef _LIBC | |
-# include "../locale/localeinfo.h" | |
-# define category_to_name(category) \ | |
- _nl_category_names.str + _nl_category_name_idxs[category] | |
-#else | |
-static const char *category_to_name (int category) internal_function; | |
-#endif | |
-#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE | |
-static const char *get_output_charset (struct binding *domainbinding) | |
- internal_function; | |
-#endif | |
- | |
- | |
-/* For those loosing systems which don't have `alloca' we have to add | |
- some additional code emulating it. */ | |
-#ifdef HAVE_ALLOCA | |
-/* Nothing has to be done. */ | |
-# define freea(p) /* nothing */ | |
-# define ADD_BLOCK(list, address) /* nothing */ | |
-# define FREE_BLOCKS(list) /* nothing */ | |
-#else | |
-struct block_list | |
-{ | |
- void *address; | |
- struct block_list *next; | |
-}; | |
-# define ADD_BLOCK(list, addr) … | |
- do { … | |
- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ | |
- /* If we cannot get a free block we cannot add the new element to … | |
- the list. */ … | |
- if (newp != NULL) { … | |
- newp->address = (addr); … | |
- newp->next = (list); … | |
- (list) = newp; … | |
- } … | |
- } while (0) | |
-# define FREE_BLOCKS(list) … | |
- do { … | |
- while (list != NULL) { … | |
- struct block_list *old = list; … | |
- list = list->next; \ | |
- free (old->address); … | |
- free (old); … | |
- } … | |
- } while (0) | |
-# undef alloca | |
-# define alloca(size) (malloc (size)) | |
-# define freea(p) free (p) | |
-#endif /* have alloca */ | |
- | |
- | |
-#ifdef _LIBC | |
-/* List of blocks allocated for translations. */ | |
-typedef struct transmem_list | |
-{ | |
- struct transmem_list *next; | |
- char data[ZERO]; | |
-} transmem_block_t; | |
-static struct transmem_list *transmem_list; | |
-#else | |
-typedef unsigned char transmem_block_t; | |
-#endif | |
- | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define DCIGETTEXT __dcigettext | |
-#else | |
-# define DCIGETTEXT libintl_dcigettext | |
-#endif | |
- | |
-/* Lock variable to protect the global data in the gettext implementation. */ | |
-gl_rwlock_define_initialized (, _nl_state_lock attribute_hidden) | |
- | |
-/* Checking whether the binaries runs SUID must be done and glibc provides | |
- easier methods therefore we make a difference here. */ | |
-#ifdef _LIBC | |
-# define ENABLE_SECURE __libc_enable_secure | |
-# define DETERMINE_SECURE | |
-#else | |
-# ifndef HAVE_GETUID | |
-# define getuid() 0 | |
-# endif | |
-# ifndef HAVE_GETGID | |
-# define getgid() 0 | |
-# endif | |
-# ifndef HAVE_GETEUID | |
-# define geteuid() getuid() | |
-# endif | |
-# ifndef HAVE_GETEGID | |
-# define getegid() getgid() | |
-# endif | |
-static int enable_secure; | |
-# define ENABLE_SECURE (enable_secure == 1) | |
-# define DETERMINE_SECURE \ | |
- if (enable_secure == 0) … | |
- { … | |
- if (getuid () != geteuid () || getgid () != getegid ()) … | |
- enable_secure = 1; … | |
- else … | |
- enable_secure = -1; … | |
- } | |
-#endif | |
- | |
-/* Get the function to evaluate the plural expression. */ | |
-#include "eval-plural.h" | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog for the current | |
- CATEGORY locale and, if PLURAL is nonzero, search over string | |
- depending on the plural form determined by N. */ | |
-#ifdef IN_LIBGLOCALE | |
-char * | |
-gl_dcigettext (const char *domainname, | |
- const char *msgid1, const char *msgid2, | |
- int plural, unsigned long int n, | |
- int category, | |
- const char *localename, const char *encoding) | |
-#else | |
-char * | |
-DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2, | |
- int plural, unsigned long int n, int category) | |
-#endif | |
-{ | |
-#ifndef HAVE_ALLOCA | |
- struct block_list *block_list = NULL; | |
-#endif | |
- struct loaded_l10nfile *domain; | |
- struct binding *binding; | |
- const char *categoryname; | |
- const char *categoryvalue; | |
- const char *dirname; | |
- char *xdomainname; | |
- char *single_locale; | |
- char *retval; | |
- size_t retlen; | |
- int saved_errno; | |
- struct known_translation_t search; | |
- struct known_translation_t **foundp = NULL; | |
-#if defined HAVE_PER_THREAD_LOCALE && !defined IN_LIBGLOCALE | |
- const char *localename; | |
-#endif | |
- size_t domainname_len; | |
- | |
- /* If no real MSGID is given return NULL. */ | |
- if (msgid1 == NULL) | |
- return NULL; | |
- | |
-#ifdef _LIBC | |
- if (category < 0 || category >= __LC_LAST || category == LC_ALL) | |
- /* Bogus. */ | |
- return (plural == 0 | |
- ? (char *) msgid1 | |
- /* Use the Germanic plural rule. */ | |
- : n == 1 ? (char *) msgid1 : (char *) msgid2); | |
-#endif | |
- | |
- /* Preserve the `errno' value. */ | |
- saved_errno = errno; | |
- | |
-#ifdef _LIBC | |
- __libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden) | |
- __libc_rwlock_rdlock (__libc_setlocale_lock); | |
-#endif | |
- | |
- gl_rwlock_rdlock (_nl_state_lock); | |
- | |
- /* If DOMAINNAME is NULL, we are interested in the default domain. If | |
- CATEGORY is not LC_MESSAGES this might not make much sense but the | |
- definition left this undefined. */ | |
- if (domainname == NULL) | |
- domainname = _nl_current_default_domain; | |
- | |
- /* OS/2 specific: backward compatibility with older libintl versions */ | |
-#ifdef LC_MESSAGES_COMPAT | |
- if (category == LC_MESSAGES_COMPAT) | |
- category = LC_MESSAGES; | |
-#endif | |
- | |
- /* Try to find the translation among those which we found at | |
- some time. */ | |
- search.domain = NULL; | |
- search.msgid.ptr = msgid1; | |
- search.domainname = domainname; | |
- search.category = category; | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
-# ifndef IN_LIBGLOCALE | |
-# ifdef _LIBC | |
- localename = _strdupa (_current_locale_name (category)); | |
-# else | |
- categoryname = category_to_name (category); | |
-# define CATEGORYNAME_INITIALIZED | |
- localename = _nl_locale_name_thread_unsafe (category, categoryname); | |
- if (localename == NULL) | |
- localename = ""; | |
-# endif | |
-# endif | |
- search.localename = localename; | |
-# ifdef IN_LIBGLOCALE | |
- search.encoding = encoding; | |
-# endif | |
- | |
- /* Since tfind/tsearch manage a balanced tree, concurrent tfind and | |
- tsearch calls can be fatal. */ | |
- gl_rwlock_rdlock (tree_lock); | |
- | |
- foundp = (struct known_translation_t **) tfind (&search, &root, transcmp); | |
- | |
- gl_rwlock_unlock (tree_lock); | |
- | |
- if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) | |
- { | |
- /* Now deal with plural. */ | |
- if (plural) | |
- retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, | |
- (*foundp)->translation_length); | |
- else | |
- retval = (char *) (*foundp)->translation; | |
- | |
- gl_rwlock_unlock (_nl_state_lock); | |
-# ifdef _LIBC | |
- __libc_rwlock_unlock (__libc_setlocale_lock); | |
-# endif | |
- __set_errno (saved_errno); | |
- return retval; | |
- } | |
-#endif | |
- | |
- /* See whether this is a SUID binary or not. */ | |
- DETERMINE_SECURE; | |
- | |
- /* First find matching binding. */ | |
-#ifdef IN_LIBGLOCALE | |
- /* We can use a trivial binding, since _nl_find_msg will ignore it anyway, | |
- and _nl_load_domain and _nl_find_domain just pass it through. */ | |
- binding = NULL; | |
- dirname = bindtextdomain (domainname, NULL); | |
-#else | |
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) | |
- { | |
- int compare = strcmp (domainname, binding->domainname); | |
- if (compare == 0) | |
- /* We found it! */ | |
- break; | |
- if (compare < 0) | |
- { | |
- /* It is not in the list. */ | |
- binding = NULL; | |
- break; | |
- } | |
- } | |
- | |
- if (binding == NULL) | |
- dirname = _nl_default_dirname; | |
- else | |
- { | |
- dirname = binding->dirname; | |
-#endif | |
- if (!IS_ABSOLUTE_PATH (dirname)) | |
- { | |
- /* We have a relative path. Make it absolute now. */ | |
- size_t dirname_len = strlen (dirname) + 1; | |
- size_t path_max; | |
- char *resolved_dirname; | |
- char *ret; | |
- | |
- path_max = (unsigned int) PATH_MAX; | |
- path_max += 2; /* The getcwd docs say to do this. */ | |
- | |
- for (;;) | |
- { | |
- resolved_dirname = (char *) alloca (path_max + dirname_len); | |
- ADD_BLOCK (block_list, tmp_dirname); | |
- | |
- __set_errno (0); | |
- ret = getcwd (resolved_dirname, path_max); | |
- if (ret != NULL || errno != ERANGE) | |
- break; | |
- | |
- path_max += path_max / 2; | |
- path_max += PATH_INCR; | |
- } | |
- | |
- if (ret == NULL) | |
- /* We cannot get the current working directory. Don't signal an | |
- error but simply return the default string. */ | |
- goto return_untranslated; | |
- | |
- stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname); | |
- dirname = resolved_dirname; | |
- } | |
-#ifndef IN_LIBGLOCALE | |
- } | |
-#endif | |
- | |
- /* Now determine the symbolic name of CATEGORY and its value. */ | |
-#ifndef CATEGORYNAME_INITIALIZED | |
- categoryname = category_to_name (category); | |
-#endif | |
-#ifdef IN_LIBGLOCALE | |
- categoryvalue = guess_category_value (category, categoryname, localename); | |
-#else | |
- categoryvalue = guess_category_value (category, categoryname); | |
-#endif | |
- | |
- domainname_len = strlen (domainname); | |
- xdomainname = (char *) alloca (strlen (categoryname) | |
- + domainname_len + 5); | |
- ADD_BLOCK (block_list, xdomainname); | |
- | |
- stpcpy ((char *) mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), | |
- domainname, domainname_len), | |
- ".mo"); | |
- | |
- /* Creating working area. */ | |
- single_locale = (char *) alloca (strlen (categoryvalue) + 1); | |
- ADD_BLOCK (block_list, single_locale); | |
- | |
- | |
- /* Search for the given string. This is a loop because we perhaps | |
- got an ordered list of languages to consider for the translation. */ | |
- while (1) | |
- { | |
- /* Make CATEGORYVALUE point to the next element of the list. */ | |
- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') | |
- ++categoryvalue; | |
- if (categoryvalue[0] == '\0') | |
- { | |
- /* The whole contents of CATEGORYVALUE has been searched but | |
- no valid entry has been found. We solve this situation | |
- by implicitly appending a "C" entry, i.e. no translation | |
- will take place. */ | |
- single_locale[0] = 'C'; | |
- single_locale[1] = '\0'; | |
- } | |
- else | |
- { | |
- char *cp = single_locale; | |
- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') | |
- *cp++ = *categoryvalue++; | |
- *cp = '\0'; | |
- | |
- /* When this is a SUID binary we must not allow accessing files | |
- outside the dedicated directories. */ | |
- if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) | |
- /* Ingore this entry. */ | |
- continue; | |
- } | |
- | |
- /* If the current locale value is C (or POSIX) we don't load a | |
- domain. Return the MSGID. */ | |
- if (strcmp (single_locale, "C") == 0 | |
- || strcmp (single_locale, "POSIX") == 0) | |
- break; | |
- | |
- /* Find structure describing the message catalog matching the | |
- DOMAINNAME and CATEGORY. */ | |
- domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); | |
- | |
- if (domain != NULL) | |
- { | |
-#if defined IN_LIBGLOCALE | |
- retval = _nl_find_msg (domain, binding, encoding, msgid1, &retlen); | |
-#else | |
- retval = _nl_find_msg (domain, binding, msgid1, 1, &retlen); | |
-#endif | |
- | |
- if (retval == NULL) | |
- { | |
- int cnt; | |
- | |
- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) | |
- { | |
-#if defined IN_LIBGLOCALE | |
- retval = _nl_find_msg (domain->successor[cnt], binding, | |
- encoding, msgid1, &retlen); | |
-#else | |
- retval = _nl_find_msg (domain->successor[cnt], binding, | |
- msgid1, 1, &retlen); | |
-#endif | |
- | |
- if (retval != NULL) | |
- { | |
- domain = domain->successor[cnt]; | |
- break; | |
- } | |
- } | |
- } | |
- | |
- /* Returning -1 means that some resource problem exists | |
- (likely memory) and that the strings could not be | |
- converted. Return the original strings. */ | |
- if (__builtin_expect (retval == (char *) -1, 0)) | |
- break; | |
- | |
- if (retval != NULL) | |
- { | |
- /* Found the translation of MSGID1 in domain DOMAIN: | |
- starting at RETVAL, RETLEN bytes. */ | |
- FREE_BLOCKS (block_list); | |
- if (foundp == NULL) | |
- { | |
- /* Create a new entry and add it to the search tree. */ | |
- size_t msgid_len; | |
- size_t size; | |
- struct known_translation_t *newp; | |
- | |
- msgid_len = strlen (msgid1) + 1; | |
- size = offsetof (struct known_translation_t, msgid) | |
- + msgid_len + domainname_len + 1; | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
- size += strlen (localename) + 1; | |
-#endif | |
- newp = (struct known_translation_t *) malloc (size); | |
- if (newp != NULL) | |
- { | |
- char *new_domainname; | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
- char *new_localename; | |
-#endif | |
- | |
- new_domainname = | |
- (char *) mempcpy (newp->msgid.appended, msgid1, | |
- msgid_len); | |
- memcpy (new_domainname, domainname, domainname_len + 1); | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
- new_localename = new_domainname + domainname_len + 1; | |
- strcpy (new_localename, localename); | |
-#endif | |
- newp->domainname = new_domainname; | |
- newp->category = category; | |
-#ifdef HAVE_PER_THREAD_LOCALE | |
- newp->localename = new_localename; | |
-#endif | |
-#ifdef IN_LIBGLOCALE | |
- newp->encoding = encoding; | |
-#endif | |
- newp->counter = _nl_msg_cat_cntr; | |
- newp->domain = domain; | |
- newp->translation = retval; | |
- newp->translation_length = retlen; | |
- | |
- gl_rwlock_wrlock (tree_lock); | |
- | |
- /* Insert the entry in the search tree. */ | |
- foundp = (struct known_translation_t **) | |
- tsearch (newp, &root, transcmp); | |
- | |
- gl_rwlock_unlock (tree_lock); | |
- | |
- if (foundp == NULL | |
- || __builtin_expect (*foundp != newp, 0)) | |
- /* The insert failed. */ | |
- free (newp); | |
- } | |
- } | |
- else | |
- { | |
- /* We can update the existing entry. */ | |
- (*foundp)->counter = _nl_msg_cat_cntr; | |
- (*foundp)->domain = domain; | |
- (*foundp)->translation = retval; | |
- (*foundp)->translation_length = retlen; | |
- } | |
- | |
- __set_errno (saved_errno); | |
- | |
- /* Now deal with plural. */ | |
- if (plural) | |
- retval = plural_lookup (domain, n, retval, retlen); | |
- | |
- gl_rwlock_unlock (_nl_state_lock); | |
-#ifdef _LIBC | |
- __libc_rwlock_unlock (__libc_setlocale_lock); | |
-#endif | |
- return retval; | |
- } | |
- } | |
- } | |
- | |
- return_untranslated: | |
- /* Return the untranslated MSGID. */ | |
- FREE_BLOCKS (block_list); | |
- gl_rwlock_unlock (_nl_state_lock); | |
-#ifdef _LIBC | |
- __libc_rwlock_unlock (__libc_setlocale_lock); | |
-#endif | |
-#ifndef _LIBC | |
- if (!ENABLE_SECURE) | |
- { | |
- extern void _nl_log_untranslated (const char *logfilename, | |
- const char *domainname, | |
- const char *msgid1, const char *msgid2, | |
- int plural); | |
- const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); | |
- | |
- if (logfilename != NULL && logfilename[0] != '\0') | |
- _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); | |
- } | |
-#endif | |
- __set_errno (saved_errno); | |
- return (plural == 0 | |
- ? (char *) msgid1 | |
- /* Use the Germanic plural rule. */ | |
- : n == 1 ? (char *) msgid1 : (char *) msgid2); | |
-} | |
- | |
- | |
-/* Look up the translation of msgid within DOMAIN_FILE and DOMAINBINDING. | |
- Return it if found. Return NULL if not found or in case of a conversion | |
- failure (problem in the particular message catalog). Return (char *) -1 | |
- in case of a memory allocation failure during conversion (only if | |
- ENCODING != NULL resp. CONVERT == true). */ | |
-char * | |
-internal_function | |
-#ifdef IN_LIBGLOCALE | |
-_nl_find_msg (struct loaded_l10nfile *domain_file, | |
- struct binding *domainbinding, const char *encoding, | |
- const char *msgid, | |
- size_t *lengthp) | |
-#else | |
-_nl_find_msg (struct loaded_l10nfile *domain_file, | |
- struct binding *domainbinding, | |
- const char *msgid, int convert, | |
- size_t *lengthp) | |
-#endif | |
-{ | |
- struct loaded_domain *domain; | |
- nls_uint32 nstrings; | |
- size_t act; | |
- char *result; | |
- size_t resultlen; | |
- | |
- if (domain_file->decided <= 0) | |
- _nl_load_domain (domain_file, domainbinding); | |
- | |
- if (domain_file->data == NULL) | |
- return NULL; | |
- | |
- domain = (struct loaded_domain *) domain_file->data; | |
- | |
- nstrings = domain->nstrings; | |
- | |
- /* Locate the MSGID and its translation. */ | |
- if (domain->hash_tab != NULL) | |
- { | |
- /* Use the hashing table. */ | |
- nls_uint32 len = strlen (msgid); | |
- nls_uint32 hash_val = __hash_string (msgid); | |
- nls_uint32 idx = hash_val % domain->hash_size; | |
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); | |
- | |
- while (1) | |
- { | |
- nls_uint32 nstr = | |
- W (domain->must_swap_hash_tab, domain->hash_tab[idx]); | |
- | |
- if (nstr == 0) | |
- /* Hash table entry is empty. */ | |
- return NULL; | |
- | |
- nstr--; | |
- | |
- /* Compare msgid with the original string at index nstr. | |
- We compare the lengths with >=, not ==, because plural entries | |
- are represented by strings with an embedded NUL. */ | |
- if (nstr < nstrings | |
- ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len | |
- && (strcmp (msgid, | |
- domain->data + W (domain->must_swap, | |
- domain->orig_tab[nstr].offset)) | |
- == 0) | |
- : domain->orig_sysdep_tab[nstr - nstrings].length > len | |
- && (strcmp (msgid, | |
- domain->orig_sysdep_tab[nstr - nstrings].pointer) | |
- == 0)) | |
- { | |
- act = nstr; | |
- goto found; | |
- } | |
- | |
- if (idx >= domain->hash_size - incr) | |
- idx -= domain->hash_size - incr; | |
- else | |
- idx += incr; | |
- } | |
- /* NOTREACHED */ | |
- } | |
- else | |
- { | |
- /* Try the default method: binary search in the sorted array of | |
- messages. */ | |
- size_t top, bottom; | |
- | |
- bottom = 0; | |
- top = nstrings; | |
- while (bottom < top) | |
- { | |
- int cmp_val; | |
- | |
- act = (bottom + top) / 2; | |
- cmp_val = strcmp (msgid, (domain->data | |
- + W (domain->must_swap, | |
- domain->orig_tab[act].offset))); | |
- if (cmp_val < 0) | |
- top = act; | |
- else if (cmp_val > 0) | |
- bottom = act + 1; | |
- else | |
- goto found; | |
- } | |
- /* No translation was found. */ | |
- return NULL; | |
- } | |
- | |
- found: | |
- /* The translation was found at index ACT. If we have to convert the | |
- string to use a different character set, this is the time. */ | |
- if (act < nstrings) | |
- { | |
- result = (char *) | |
- (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); | |
- resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; | |
- } | |
- else | |
- { | |
- result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; | |
- resultlen = domain->trans_sysdep_tab[act - nstrings].length; | |
- } | |
- | |
-#if defined _LIBC || HAVE_ICONV | |
-# ifdef IN_LIBGLOCALE | |
- if (encoding != NULL) | |
-# else | |
- if (convert) | |
-# endif | |
- { | |
- /* We are supposed to do a conversion. */ | |
-# ifndef IN_LIBGLOCALE | |
- const char *encoding = get_output_charset (domainbinding); | |
-# endif | |
- size_t nconversions; | |
- struct converted_domain *convd; | |
- size_t i; | |
- | |
- /* Protect against reallocation of the table. */ | |
- gl_rwlock_rdlock (domain->conversions_lock); | |
- | |
- /* Search whether a table with converted translations for this | |
- encoding has already been allocated. */ | |
- nconversions = domain->nconversions; | |
- convd = NULL; | |
- | |
- for (i = nconversions; i > 0; ) | |
- { | |
- i--; | |
- if (strcmp (domain->conversions[i].encoding, encoding) == 0) | |
- { | |
- convd = &domain->conversions[i]; | |
- break; | |
- } | |
- } | |
- | |
- gl_rwlock_unlock (domain->conversions_lock); | |
- | |
- if (convd == NULL) | |
- { | |
- /* We have to allocate a new conversions table. */ | |
- gl_rwlock_wrlock (domain->conversions_lock); | |
- nconversions = domain->nconversions; | |
- | |
- /* Maybe in the meantime somebody added the translation. | |
- Recheck. */ | |
- for (i = nconversions; i > 0; ) | |
- { | |
- i--; | |
- if (strcmp (domain->conversions[i].encoding, encoding) == 0) | |
- { | |
- convd = &domain->conversions[i]; | |
- goto found_convd; | |
- } | |
- } | |
- | |
- { | |
- /* Allocate a table for the converted translations for this | |
- encoding. */ | |
- struct converted_domain *new_conversions = | |
- (struct converted_domain *) | |
- (domain->conversions != NULL | |
- ? realloc (domain->conversions, | |
- (nconversions + 1) * sizeof (struct converted_domain… | |
- : malloc ((nconversions + 1) * sizeof (struct converted_domain)… | |
- | |
- if (__builtin_expect (new_conversions == NULL, 0)) | |
- { | |
- /* Nothing we can do, no more memory. We cannot use the | |
- translation because it might be encoded incorrectly. */ | |
- unlock_fail: | |
- gl_rwlock_unlock (domain->conversions_lock); | |
- return (char *) -1; | |
- } | |
- | |
- domain->conversions = new_conversions; | |
- | |
- /* Copy the 'encoding' string to permanent storage. */ | |
- encoding = strdup (encoding); | |
- if (__builtin_expect (encoding == NULL, 0)) | |
- /* Nothing we can do, no more memory. We cannot use the | |
- translation because it might be encoded incorrectly. */ | |
- goto unlock_fail; | |
- | |
- convd = &new_conversions[nconversions]; | |
- convd->encoding = encoding; | |
- | |
- /* Find out about the character set the file is encoded with. | |
- This can be found (in textual form) in the entry "". If this | |
- entry does not exist or if this does not contain the 'charset=' | |
- information, we will assume the charset matches the one the | |
- current locale and we don't have to perform any conversion. */ | |
-# ifdef _LIBC | |
- convd->conv = (__gconv_t) -1; | |
-# else | |
-# if HAVE_ICONV | |
- convd->conv = (iconv_t) -1; | |
-# endif | |
-# endif | |
- { | |
- char *nullentry; | |
- size_t nullentrylen; | |
- | |
- /* Get the header entry. This is a recursion, but it doesn't | |
- reallocate domain->conversions because we pass | |
- encoding = NULL or convert = 0, respectively. */ | |
- nullentry = | |
-# ifdef IN_LIBGLOCALE | |
- _nl_find_msg (domain_file, domainbinding, NULL, "", | |
- &nullentrylen); | |
-# else | |
- _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen… | |
-# endif | |
- | |
- if (nullentry != NULL) | |
- { | |
- const char *charsetstr; | |
- | |
- charsetstr = strstr (nullentry, "charset="); | |
- if (charsetstr != NULL) | |
- { | |
- size_t len; | |
- char *charset; | |
- const char *outcharset; | |
- | |
- charsetstr += strlen ("charset="); | |
- len = strcspn (charsetstr, " \t\n"); | |
- | |
- charset = (char *) alloca (len + 1); | |
-# if defined _LIBC || HAVE_MEMPCPY | |
- *((char *) mempcpy (charset, charsetstr, len)) = '\0'; | |
-# else | |
- memcpy (charset, charsetstr, len); | |
- charset[len] = '\0'; | |
-# endif | |
- | |
- outcharset = encoding; | |
- | |
-# ifdef _LIBC | |
- /* We always want to use transliteration. */ | |
- outcharset = norm_add_slashes (outcharset, "TRANSLIT"); | |
- charset = norm_add_slashes (charset, ""); | |
- int r = __gconv_open (outcharset, charset, &convd->conv, | |
- GCONV_AVOID_NOCONV); | |
- if (__builtin_expect (r != __GCONV_OK, 0)) | |
- { | |
- /* If the output encoding is the same there is | |
- nothing to do. Otherwise do not use the | |
- translation at all. */ | |
- if (__builtin_expect (r != __GCONV_NULCONV, 1)) | |
- { | |
- gl_rwlock_unlock (domain->conversions_lock); | |
- free ((char *) encoding); | |
- return NULL; | |
- } | |
- | |
- convd->conv = (__gconv_t) -1; | |
- } | |
-# else | |
-# if HAVE_ICONV | |
- /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, | |
- we want to use transliteration. */ | |
-# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ | |
- || _LIBICONV_VERSION >= 0x0105 | |
- if (strchr (outcharset, '/') == NULL) | |
- { | |
- char *tmp; | |
- | |
- len = strlen (outcharset); | |
- tmp = (char *) alloca (len + 10 + 1); | |
- memcpy (tmp, outcharset, len); | |
- memcpy (tmp + len, "//TRANSLIT", 10 + 1); | |
- outcharset = tmp; | |
- | |
- convd->conv = iconv_open (outcharset, charset); | |
- | |
- freea (outcharset); | |
- } | |
- else | |
-# endif | |
- convd->conv = iconv_open (outcharset, charset); | |
-# endif | |
-# endif | |
- | |
- freea (charset); | |
- } | |
- } | |
- } | |
- convd->conv_tab = NULL; | |
- /* Here domain->conversions is still == new_conversions. */ | |
- domain->nconversions++; | |
- } | |
- | |
- found_convd: | |
- gl_rwlock_unlock (domain->conversions_lock); | |
- } | |
- | |
- if ( | |
-# ifdef _LIBC | |
- convd->conv != (__gconv_t) -1 | |
-# else | |
-# if HAVE_ICONV | |
- convd->conv != (iconv_t) -1 | |
-# endif | |
-# endif | |
- ) | |
- { | |
- /* We are supposed to do a conversion. First allocate an | |
- appropriate table with the same structure as the table | |
- of translations in the file, where we can put the pointers | |
- to the converted strings in. | |
- There is a slight complication with plural entries. They | |
- are represented by consecutive NUL terminated strings. We | |
- handle this case by converting RESULTLEN bytes, including | |
- NULs. */ | |
- | |
- /* This lock primarily protects the memory management variables | |
- freemem, freemem_size. It also protects write accesses to | |
- convd->conv_tab. It's not worth using a separate lock (such | |
- as domain->conversions_lock) for this purpose, because when | |
- modifying convd->conv_tab, we also need to lock freemem, | |
- freemem_size for most of the time. */ | |
- __libc_lock_define_initialized (static, lock) | |
- | |
- if (__builtin_expect (convd->conv_tab == NULL, 0)) | |
- { | |
- __libc_lock_lock (lock); | |
- if (convd->conv_tab == NULL) | |
- { | |
- convd->conv_tab = | |
- (char **) calloc (nstrings + domain->n_sysdep_strings, | |
- sizeof (char *)); | |
- if (convd->conv_tab != NULL) | |
- goto not_translated_yet; | |
- /* Mark that we didn't succeed allocating a table. */ | |
- convd->conv_tab = (char **) -1; | |
- } | |
- __libc_lock_unlock (lock); | |
- } | |
- | |
- if (__builtin_expect (convd->conv_tab == (char **) -1, 0)) | |
- /* Nothing we can do, no more memory. We cannot use the | |
- translation because it might be encoded incorrectly. */ | |
- return (char *) -1; | |
- | |
- if (convd->conv_tab[act] == NULL) | |
- { | |
- /* We haven't used this string so far, so it is not | |
- translated yet. Do this now. */ | |
- /* We use a bit more efficient memory handling. | |
- We allocate always larger blocks which get used over | |
- time. This is faster than many small allocations. */ | |
-# define INITIAL_BLOCK_SIZE 4080 | |
- static unsigned char *freemem; | |
- static size_t freemem_size; | |
- | |
- const unsigned char *inbuf; | |
- unsigned char *outbuf; | |
- int malloc_count; | |
-# ifndef _LIBC | |
- transmem_block_t *transmem_list; | |
-# endif | |
- | |
- __libc_lock_lock (lock); | |
- not_translated_yet: | |
- | |
- inbuf = (const unsigned char *) result; | |
- outbuf = freemem + sizeof (size_t); | |
-# ifndef _LIBC | |
- transmem_list = NULL; | |
-# endif | |
- | |
- malloc_count = 0; | |
- while (1) | |
- { | |
- transmem_block_t *newmem; | |
-# ifdef _LIBC | |
- size_t non_reversible; | |
- int res; | |
- | |
- if (freemem_size < sizeof (size_t)) | |
- goto resize_freemem; | |
- | |
- res = __gconv (convd->conv, | |
- &inbuf, inbuf + resultlen, | |
- &outbuf, | |
- outbuf + freemem_size - sizeof (size_t), | |
- &non_reversible); | |
- | |
- if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) | |
- break; | |
- | |
- if (res != __GCONV_FULL_OUTPUT) | |
- { | |
- /* We should not use the translation at all, it | |
- is incorrectly encoded. */ | |
- __libc_lock_unlock (lock); | |
- return NULL; | |
- } | |
- | |
- inbuf = (const unsigned char *) result; | |
-# else | |
-# if HAVE_ICONV | |
- const char *inptr = (const char *) inbuf; | |
- size_t inleft = resultlen; | |
- char *outptr = (char *) outbuf; | |
- size_t outleft; | |
- | |
- if (freemem_size < sizeof (size_t)) | |
- goto resize_freemem; | |
- | |
- outleft = freemem_size - sizeof (size_t); | |
- if (iconv (convd->conv, | |
- (ICONV_CONST char **) &inptr, &inleft, | |
- &outptr, &outleft) | |
- != (size_t) (-1)) | |
- { | |
- outbuf = (unsigned char *) outptr; | |
- break; | |
- } | |
- if (errno != E2BIG) | |
- { | |
- __libc_lock_unlock (lock); | |
- return NULL; | |
- } | |
-# endif | |
-# endif | |
- | |
- resize_freemem: | |
- /* We must allocate a new buffer or resize the old one. */ | |
- if (malloc_count > 0) | |
- { | |
- ++malloc_count; | |
- freemem_size = malloc_count * INITIAL_BLOCK_SIZE; | |
- newmem = (transmem_block_t *) realloc (transmem_list, | |
- freemem_size); | |
-# ifdef _LIBC | |
- if (newmem != NULL) | |
- transmem_list = transmem_list->next; | |
- else | |
- { | |
- struct transmem_list *old = transmem_list; | |
- | |
- transmem_list = transmem_list->next; | |
- free (old); | |
- } | |
-# endif | |
- } | |
- else | |
- { | |
- malloc_count = 1; | |
- freemem_size = INITIAL_BLOCK_SIZE; | |
- newmem = (transmem_block_t *) malloc (freemem_size); | |
- } | |
- if (__builtin_expect (newmem == NULL, 0)) | |
- { | |
- freemem = NULL; | |
- freemem_size = 0; | |
- __libc_lock_unlock (lock); | |
- return (char *) -1; | |
- } | |
- | |
-# ifdef _LIBC | |
- /* Add the block to the list of blocks we have to free | |
- at some point. */ | |
- newmem->next = transmem_list; | |
- transmem_list = newmem; | |
- | |
- freemem = (unsigned char *) newmem->data; | |
- freemem_size -= offsetof (struct transmem_list, data); | |
-# else | |
- transmem_list = newmem; | |
- freemem = newmem; | |
-# endif | |
- | |
- outbuf = freemem + sizeof (size_t); | |
- } | |
- | |
- /* We have now in our buffer a converted string. Put this | |
- into the table of conversions. */ | |
- *(size_t *) freemem = outbuf - freemem - sizeof (size_t); | |
- convd->conv_tab[act] = (char *) freemem; | |
- /* Shrink freemem, but keep it aligned. */ | |
- freemem_size -= outbuf - freemem; | |
- freemem = outbuf; | |
- freemem += freemem_size & (alignof (size_t) - 1); | |
- freemem_size = freemem_size & ~ (alignof (size_t) - 1); | |
- | |
- __libc_lock_unlock (lock); | |
- } | |
- | |
- /* Now convd->conv_tab[act] contains the translation of all | |
- the plural variants. */ | |
- result = convd->conv_tab[act] + sizeof (size_t); | |
- resultlen = *(size_t *) convd->conv_tab[act]; | |
- } | |
- } | |
- | |
- /* The result string is converted. */ | |
- | |
-#endif /* _LIBC || HAVE_ICONV */ | |
- | |
- *lengthp = resultlen; | |
- return result; | |
-} | |
- | |
- | |
-/* Look up a plural variant. */ | |
-static char * | |
-internal_function | |
-plural_lookup (struct loaded_l10nfile *domain, unsigned long int n, | |
- const char *translation, size_t translation_len) | |
-{ | |
- struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; | |
- unsigned long int index; | |
- const char *p; | |
- | |
- index = plural_eval (domaindata->plural, n); | |
- if (index >= domaindata->nplurals) | |
- /* This should never happen. It means the plural expression and the | |
- given maximum value do not match. */ | |
- index = 0; | |
- | |
- /* Skip INDEX strings at TRANSLATION. */ | |
- p = translation; | |
- while (index-- > 0) | |
- { | |
-#ifdef _LIBC | |
- p = __rawmemchr (p, '\0'); | |
-#else | |
- p = strchr (p, '\0'); | |
-#endif | |
- /* And skip over the NUL byte. */ | |
- p++; | |
- | |
- if (p >= translation + translation_len) | |
- /* This should never happen. It means the plural expression | |
- evaluated to a value larger than the number of variants | |
- available for MSGID1. */ | |
- return (char *) translation; | |
- } | |
- return (char *) p; | |
-} | |
- | |
-#ifndef _LIBC | |
-/* Return string representation of locale CATEGORY. */ | |
-static const char * | |
-internal_function | |
-category_to_name (int category) | |
-{ | |
- const char *retval; | |
- | |
- switch (category) | |
- { | |
-#ifdef LC_COLLATE | |
- case LC_COLLATE: | |
- retval = "LC_COLLATE"; | |
- break; | |
-#endif | |
-#ifdef LC_CTYPE | |
- case LC_CTYPE: | |
- retval = "LC_CTYPE"; | |
- break; | |
-#endif | |
-#ifdef LC_MONETARY | |
- case LC_MONETARY: | |
- retval = "LC_MONETARY"; | |
- break; | |
-#endif | |
-#ifdef LC_NUMERIC | |
- case LC_NUMERIC: | |
- retval = "LC_NUMERIC"; | |
- break; | |
-#endif | |
-#ifdef LC_TIME | |
- case LC_TIME: | |
- retval = "LC_TIME"; | |
- break; | |
-#endif | |
-#ifdef LC_MESSAGES | |
- case LC_MESSAGES: | |
- retval = "LC_MESSAGES"; | |
- break; | |
-#endif | |
-#ifdef LC_RESPONSE | |
- case LC_RESPONSE: | |
- retval = "LC_RESPONSE"; | |
- break; | |
-#endif | |
-#ifdef LC_ALL | |
- case LC_ALL: | |
- /* This might not make sense but is perhaps better than any other | |
- value. */ | |
- retval = "LC_ALL"; | |
- break; | |
-#endif | |
- default: | |
- /* If you have a better idea for a default value let me know. */ | |
- retval = "LC_XXX"; | |
- } | |
- | |
- return retval; | |
-} | |
-#endif | |
- | |
-/* Guess value of current locale from value of the environment variables | |
- or system-dependent defaults. */ | |
-static const char * | |
-internal_function | |
-#ifdef IN_LIBGLOCALE | |
-guess_category_value (int category, const char *categoryname, | |
- const char *locale) | |
- | |
-#else | |
-guess_category_value (int category, const char *categoryname) | |
-#endif | |
-{ | |
- const char *language; | |
-#ifndef IN_LIBGLOCALE | |
- const char *locale; | |
-# ifndef _LIBC | |
- const char *language_default; | |
- int locale_defaulted; | |
-# endif | |
-#endif | |
- | |
- /* We use the settings in the following order: | |
- 1. The value of the environment variable 'LANGUAGE'. This is a GNU | |
- extension. Its value can be a colon-separated list of locale names. | |
- 2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'. | |
- More precisely, the first among these that is set to a non-empty value. | |
- This is how POSIX specifies it. The value is a single locale name. | |
- 3. A system-dependent preference list of languages. Its value can be a | |
- colon-separated list of locale names. | |
- 4. A system-dependent default locale name. | |
- This way: | |
- - System-dependent settings can be overridden by environment variables. | |
- - If the system provides both a list of languages and a default locale, | |
- the former is used. */ | |
- | |
-#ifndef IN_LIBGLOCALE | |
- /* Fetch the locale name, through the POSIX method of looking to `LC_ALL', | |
- `LC_xxx', and `LANG'. On some systems this can be done by the | |
- `setlocale' function itself. */ | |
-# ifdef _LIBC | |
- locale = __current_locale_name (category); | |
-# else | |
- locale_defaulted = 0; | |
-# if HAVE_USELOCALE | |
- locale = _nl_locale_name_thread_unsafe (category, categoryname); | |
- if (locale == NULL) | |
-# endif | |
- { | |
- locale = _nl_locale_name_posix (category, categoryname); | |
- if (locale == NULL) | |
- { | |
- locale = _nl_locale_name_default (); | |
- locale_defaulted = 1; | |
- } | |
- } | |
-# endif | |
-#endif | |
- | |
- /* Ignore LANGUAGE and its system-dependent analogon if the locale is set | |
- to "C" because | |
- 1. "C" locale usually uses the ASCII encoding, and most international | |
- messages use non-ASCII characters. These characters get displayed | |
- as question marks (if using glibc's iconv()) or as invalid 8-bit | |
- characters (because other iconv()s refuse to convert most non-ASCII | |
- characters to ASCII). In any case, the output is ugly. | |
- 2. The precise output of some programs in the "C" locale is specified | |
- by POSIX and should not depend on environment variables like | |
- "LANGUAGE" or system-dependent information. We allow such programs | |
- to use gettext(). */ | |
- if (strcmp (locale, "C") == 0) | |
- return locale; | |
- | |
- /* The highest priority value is the value of the 'LANGUAGE' environment | |
- variable. */ | |
- language = getenv ("LANGUAGE"); | |
- if (language != NULL && language[0] != '\0') | |
- return language; | |
-#if !defined IN_LIBGLOCALE && !defined _LIBC | |
- /* The next priority value is the locale name, if not defaulted. */ | |
- if (locale_defaulted) | |
- { | |
- /* The next priority value is the default language preferences list. */ | |
- language_default = _nl_language_preferences_default (); | |
- if (language_default != NULL) | |
- return language_default; | |
- } | |
- /* The least priority value is the locale name, if defaulted. */ | |
-#endif | |
- return locale; | |
-} | |
- | |
-#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE | |
-/* Returns the output charset. */ | |
-static const char * | |
-internal_function | |
-get_output_charset (struct binding *domainbinding) | |
-{ | |
- /* The output charset should normally be determined by the locale. But | |
- sometimes the locale is not used or not correctly set up, so we provide | |
- a possibility for the user to override this: the OUTPUT_CHARSET | |
- environment variable. Moreover, the value specified through | |
- bind_textdomain_codeset overrides both. */ | |
- if (domainbinding != NULL && domainbinding->codeset != NULL) | |
- return domainbinding->codeset; | |
- else | |
- { | |
- /* For speed reasons, we look at the value of OUTPUT_CHARSET only | |
- once. This is a user variable that is not supposed to change | |
- during a program run. */ | |
- static char *output_charset_cache; | |
- static int output_charset_cached; | |
- | |
- if (!output_charset_cached) | |
- { | |
- const char *value = getenv ("OUTPUT_CHARSET"); | |
- | |
- if (value != NULL && value[0] != '\0') | |
- { | |
- size_t len = strlen (value) + 1; | |
- char *value_copy = (char *) malloc (len); | |
- | |
- if (value_copy != NULL) | |
- memcpy (value_copy, value, len); | |
- output_charset_cache = value_copy; | |
- } | |
- output_charset_cached = 1; | |
- } | |
- | |
- if (output_charset_cache != NULL) | |
- return output_charset_cache; | |
- else | |
- { | |
-# ifdef _LIBC | |
- return _NL_CURRENT (LC_CTYPE, CODESET); | |
-# else | |
-# if HAVE_ICONV | |
- return locale_charset (); | |
-# endif | |
-# endif | |
- } | |
- } | |
-} | |
-#endif | |
- | |
-/* @@ begin of epilog @@ */ | |
- | |
-/* We don't want libintl.a to depend on any other library. So we | |
- avoid the non-standard function stpcpy. In GNU C Library this | |
- function is available, though. Also allow the symbol HAVE_STPCPY | |
- to be defined. */ | |
-#if !_LIBC && !HAVE_STPCPY | |
-static char * | |
-stpcpy (char *dest, const char *src) | |
-{ | |
- while ((*dest++ = *src++) != '\0') | |
- /* Do nothing. */ ; | |
- return dest - 1; | |
-} | |
-#endif | |
- | |
-#if !_LIBC && !HAVE_MEMPCPY | |
-static void * | |
-mempcpy (void *dest, const void *src, size_t n) | |
-{ | |
- return (void *) ((char *) memcpy (dest, src, n) + n); | |
-} | |
-#endif | |
- | |
-#if !_LIBC && !HAVE_TSEARCH | |
-# include "tsearch.c" | |
-#endif | |
- | |
- | |
-#ifdef _LIBC | |
-/* If we want to free all resources we have to do some work at | |
- program's end. */ | |
-libc_freeres_fn (free_mem) | |
-{ | |
- void *old; | |
- | |
- while (_nl_domain_bindings != NULL) | |
- { | |
- struct binding *oldp = _nl_domain_bindings; | |
- _nl_domain_bindings = _nl_domain_bindings->next; | |
- if (oldp->dirname != _nl_default_dirname) | |
- /* Yes, this is a pointer comparison. */ | |
- free (oldp->dirname); | |
- free (oldp->codeset); | |
- free (oldp); | |
- } | |
- | |
- if (_nl_current_default_domain != _nl_default_default_domain) | |
- /* Yes, again a pointer comparison. */ | |
- free ((char *) _nl_current_default_domain); | |
- | |
- /* Remove the search tree with the known translations. */ | |
- __tdestroy (root, free); | |
- root = NULL; | |
- | |
- while (transmem_list != NULL) | |
- { | |
- old = transmem_list; | |
- transmem_list = transmem_list->next; | |
- free (old); | |
- } | |
-} | |
-#endif | |
diff --git a/intl/dcngettext.c b/intl/dcngettext.c | |
t@@ -1,57 +0,0 @@ | |
-/* Implementation of the dcngettext(3) function. | |
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define DCNGETTEXT __dcngettext | |
-# define DCIGETTEXT __dcigettext | |
-#else | |
-# define DCNGETTEXT libintl_dcngettext | |
-# define DCIGETTEXT libintl_dcigettext | |
-#endif | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY | |
- locale. */ | |
-char * | |
-DCNGETTEXT (const char *domainname, | |
- const char *msgid1, const char *msgid2, unsigned long int n, | |
- int category) | |
-{ | |
- return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-weak_alias (__dcngettext, dcngettext); | |
-#endif | |
diff --git a/intl/dgettext.c b/intl/dgettext.c | |
t@@ -1,58 +0,0 @@ | |
-/* Implementation of the dgettext(3) function. | |
- Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include "gettextP.h" | |
- | |
-#include <locale.h> | |
- | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define DGETTEXT __dgettext | |
-# define DCGETTEXT INTUSE(__dcgettext) | |
-#else | |
-# define DGETTEXT libintl_dgettext | |
-# define DCGETTEXT libintl_dcgettext | |
-#endif | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog of the current | |
- LC_MESSAGES locale. */ | |
-char * | |
-DGETTEXT (const char *domainname, const char *msgid) | |
-{ | |
- return DCGETTEXT (domainname, msgid, LC_MESSAGES); | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-weak_alias (__dgettext, dgettext); | |
-#endif | |
diff --git a/intl/dngettext.c b/intl/dngettext.c | |
t@@ -1,59 +0,0 @@ | |
-/* Implementation of the dngettext(3) function. | |
- Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include "gettextP.h" | |
- | |
-#include <locale.h> | |
- | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define DNGETTEXT __dngettext | |
-# define DCNGETTEXT __dcngettext | |
-#else | |
-# define DNGETTEXT libintl_dngettext | |
-# define DCNGETTEXT libintl_dcngettext | |
-#endif | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog of the current | |
- LC_MESSAGES locale and skip message according to the plural form. */ | |
-char * | |
-DNGETTEXT (const char *domainname, | |
- const char *msgid1, const char *msgid2, unsigned long int n) | |
-{ | |
- return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-weak_alias (__dngettext, dngettext); | |
-#endif | |
diff --git a/intl/explodename.c b/intl/explodename.c | |
t@@ -1,135 +0,0 @@ | |
-/* Copyright (C) 1995-1998, 2000-2001, 2003, 2005, 2007 Free Software Foundati… | |
- Contributed by Ulrich Drepper <[email protected]>, 1995. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <stdlib.h> | |
-#include <string.h> | |
-#include <sys/types.h> | |
- | |
-#include "loadinfo.h" | |
- | |
-/* On some strange systems still no definition of NULL is found. Sigh! */ | |
-#ifndef NULL | |
-# if defined __STDC__ && __STDC__ | |
-# define NULL ((void *) 0) | |
-# else | |
-# define NULL 0 | |
-# endif | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Split a locale name NAME into a leading language part and all the | |
- rest. Return a pointer to the first character after the language, | |
- i.e. to the first byte of the rest. */ | |
-static char *_nl_find_language (const char *name); | |
- | |
-static char * | |
-_nl_find_language (const char *name) | |
-{ | |
- while (name[0] != '\0' && name[0] != '_' && name[0] != '@' && name[0] != '.') | |
- ++name; | |
- | |
- return (char *) name; | |
-} | |
- | |
- | |
-int | |
-_nl_explode_name (char *name, | |
- const char **language, const char **modifier, | |
- const char **territory, const char **codeset, | |
- const char **normalized_codeset) | |
-{ | |
- char *cp; | |
- int mask; | |
- | |
- *modifier = NULL; | |
- *territory = NULL; | |
- *codeset = NULL; | |
- *normalized_codeset = NULL; | |
- | |
- /* Now we determine the single parts of the locale name. First | |
- look for the language. Termination symbols are `_', '.', and `@'. */ | |
- mask = 0; | |
- *language = cp = name; | |
- cp = _nl_find_language (*language); | |
- | |
- if (*language == cp) | |
- /* This does not make sense: language has to be specified. Use | |
- this entry as it is without exploding. Perhaps it is an alias. */ | |
- cp = strchr (*language, '\0'); | |
- else | |
- { | |
- if (cp[0] == '_') | |
- { | |
- /* Next is the territory. */ | |
- cp[0] = '\0'; | |
- *territory = ++cp; | |
- | |
- while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@') | |
- ++cp; | |
- | |
- mask |= XPG_TERRITORY; | |
- } | |
- | |
- if (cp[0] == '.') | |
- { | |
- /* Next is the codeset. */ | |
- cp[0] = '\0'; | |
- *codeset = ++cp; | |
- | |
- while (cp[0] != '\0' && cp[0] != '@') | |
- ++cp; | |
- | |
- mask |= XPG_CODESET; | |
- | |
- if (*codeset != cp && (*codeset)[0] != '\0') | |
- { | |
- *normalized_codeset = _nl_normalize_codeset (*codeset, | |
- cp - *codeset); | |
- if (*normalized_codeset == NULL) | |
- return -1; | |
- else if (strcmp (*codeset, *normalized_codeset) == 0) | |
- free ((char *) *normalized_codeset); | |
- else | |
- mask |= XPG_NORM_CODESET; | |
- } | |
- } | |
- } | |
- | |
- if (cp[0] == '@') | |
- { | |
- /* Next is the modifier. */ | |
- cp[0] = '\0'; | |
- *modifier = ++cp; | |
- | |
- if (cp[0] != '\0') | |
- mask |= XPG_MODIFIER; | |
- } | |
- | |
- if (*territory != NULL && (*territory)[0] == '\0') | |
- mask &= ~XPG_TERRITORY; | |
- | |
- if (*codeset != NULL && (*codeset)[0] == '\0') | |
- mask &= ~XPG_CODESET; | |
- | |
- return mask; | |
-} | |
diff --git a/intl/finddomain.c b/intl/finddomain.c | |
t@@ -1,212 +0,0 @@ | |
-/* Handle list of needed message catalogs | |
- Copyright (C) 1995-1999, 2000-2001, 2003-2007 Free Software Foundation, Inc. | |
- Written by Ulrich Drepper <[email protected]>, 1995. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <stdio.h> | |
-#include <sys/types.h> | |
-#include <stdlib.h> | |
-#include <string.h> | |
- | |
-#if defined HAVE_UNISTD_H || defined _LIBC | |
-# include <unistd.h> | |
-#endif | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-# define gl_rwlock_define_initialized __libc_rwlock_define_initialized | |
-# define gl_rwlock_rdlock __libc_rwlock_rdlock | |
-# define gl_rwlock_wrlock __libc_rwlock_wrlock | |
-# define gl_rwlock_unlock __libc_rwlock_unlock | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
-/* List of already loaded domains. */ | |
-static struct loaded_l10nfile *_nl_loaded_domains; | |
- | |
- | |
-/* Return a data structure describing the message catalog described by | |
- the DOMAINNAME and CATEGORY parameters with respect to the currently | |
- established bindings. */ | |
-struct loaded_l10nfile * | |
-internal_function | |
-_nl_find_domain (const char *dirname, char *locale, | |
- const char *domainname, struct binding *domainbinding) | |
-{ | |
- struct loaded_l10nfile *retval; | |
- const char *language; | |
- const char *modifier; | |
- const char *territory; | |
- const char *codeset; | |
- const char *normalized_codeset; | |
- const char *alias_value; | |
- int mask; | |
- | |
- /* LOCALE can consist of up to four recognized parts for the XPG syntax: | |
- | |
- language[_territory][.codeset][@modifier] | |
- | |
- Beside the first part all of them are allowed to be missing. If | |
- the full specified locale is not found, the less specific one are | |
- looked for. The various parts will be stripped off according to | |
- the following order: | |
- (1) codeset | |
- (2) normalized codeset | |
- (3) territory | |
- (4) modifier | |
- */ | |
- | |
- /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ | |
- gl_rwlock_define_initialized (static, lock); | |
- gl_rwlock_rdlock (lock); | |
- | |
- /* If we have already tested for this locale entry there has to | |
- be one data set in the list of loaded domains. */ | |
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, | |
- strlen (dirname) + 1, 0, locale, NULL, NULL, | |
- NULL, NULL, domainname, 0); | |
- | |
- gl_rwlock_unlock (lock); | |
- | |
- if (retval != NULL) | |
- { | |
- /* We know something about this locale. */ | |
- int cnt; | |
- | |
- if (retval->decided <= 0) | |
- _nl_load_domain (retval, domainbinding); | |
- | |
- if (retval->data != NULL) | |
- return retval; | |
- | |
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) | |
- { | |
- if (retval->successor[cnt]->decided <= 0) | |
- _nl_load_domain (retval->successor[cnt], domainbinding); | |
- | |
- if (retval->successor[cnt]->data != NULL) | |
- break; | |
- } | |
- | |
- return retval; | |
- /* NOTREACHED */ | |
- } | |
- | |
- /* See whether the locale value is an alias. If yes its value | |
- *overwrites* the alias name. No test for the original value is | |
- done. */ | |
- alias_value = _nl_expand_alias (locale); | |
- if (alias_value != NULL) | |
- { | |
-#if defined _LIBC || defined HAVE_STRDUP | |
- locale = strdup (alias_value); | |
- if (locale == NULL) | |
- return NULL; | |
-#else | |
- size_t len = strlen (alias_value) + 1; | |
- locale = (char *) malloc (len); | |
- if (locale == NULL) | |
- return NULL; | |
- | |
- memcpy (locale, alias_value, len); | |
-#endif | |
- } | |
- | |
- /* Now we determine the single parts of the locale name. First | |
- look for the language. Termination symbols are `_', '.', and `@'. */ | |
- mask = _nl_explode_name (locale, &language, &modifier, &territory, | |
- &codeset, &normalized_codeset); | |
- if (mask == -1) | |
- /* This means we are out of core. */ | |
- return NULL; | |
- | |
- /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ | |
- gl_rwlock_wrlock (lock); | |
- | |
- /* Create all possible locale entries which might be interested in | |
- generalization. */ | |
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, | |
- strlen (dirname) + 1, mask, language, territory, | |
- codeset, normalized_codeset, modifier, | |
- domainname, 1); | |
- | |
- gl_rwlock_unlock (lock); | |
- | |
- if (retval == NULL) | |
- /* This means we are out of core. */ | |
- goto out; | |
- | |
- if (retval->decided <= 0) | |
- _nl_load_domain (retval, domainbinding); | |
- if (retval->data == NULL) | |
- { | |
- int cnt; | |
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) | |
- { | |
- if (retval->successor[cnt]->decided <= 0) | |
- _nl_load_domain (retval->successor[cnt], domainbinding); | |
- if (retval->successor[cnt]->data != NULL) | |
- break; | |
- } | |
- } | |
- | |
- /* The room for an alias was dynamically allocated. Free it now. */ | |
- if (alias_value != NULL) | |
- free (locale); | |
- | |
-out: | |
- /* The space for normalized_codeset is dynamically allocated. Free it. */ | |
- if (mask & XPG_NORM_CODESET) | |
- free ((void *) normalized_codeset); | |
- | |
- return retval; | |
-} | |
- | |
- | |
-#ifdef _LIBC | |
-/* This is called from iconv/gconv_db.c's free_mem, as locales must | |
- be freed before freeing gconv steps arrays. */ | |
-void __libc_freeres_fn_section | |
-_nl_finddomain_subfreeres () | |
-{ | |
- struct loaded_l10nfile *runp = _nl_loaded_domains; | |
- | |
- while (runp != NULL) | |
- { | |
- struct loaded_l10nfile *here = runp; | |
- if (runp->data != NULL) | |
- _nl_unload_domain ((struct loaded_domain *) runp->data); | |
- runp = runp->next; | |
- free ((char *) here->filename); | |
- free (here); | |
- } | |
-} | |
-#endif | |
diff --git a/intl/gettext.c b/intl/gettext.c | |
t@@ -1,63 +0,0 @@ | |
-/* Implementation of gettext(3) function. | |
- Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#ifdef _LIBC | |
-# define __need_NULL | |
-# include <stddef.h> | |
-#else | |
-# include <stdlib.h> /* Just for NULL. */ | |
-#endif | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define GETTEXT __gettext | |
-# define DCGETTEXT INTUSE(__dcgettext) | |
-#else | |
-# define GETTEXT libintl_gettext | |
-# define DCGETTEXT libintl_dcgettext | |
-#endif | |
- | |
-/* Look up MSGID in the current default message catalog for the current | |
- LC_MESSAGES locale. If not found, returns MSGID itself (the default | |
- text). */ | |
-char * | |
-GETTEXT (const char *msgid) | |
-{ | |
- return DCGETTEXT (NULL, msgid, LC_MESSAGES); | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-weak_alias (__gettext, gettext); | |
-#endif | |
diff --git a/intl/gettext.h b/intl/gettext.h | |
t@@ -1,101 +0,0 @@ | |
-/* Description of GNU message catalog format: general file layout. | |
- Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify | |
- it under the terms of the GNU General Public License as published by | |
- the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
- GNU General Public License for more details. | |
- | |
- You should have received a copy of the GNU General Public License | |
- along with this program; if not, write to the Free Software Foundation, | |
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
- | |
-#ifndef _GETTEXT_H | |
-#define _GETTEXT_H 1 | |
- | |
-#if HAVE_LIMITS_H || _LIBC | |
-# include <limits.h> | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* The magic number of the GNU message catalog format. */ | |
-#define _MAGIC 0x950412de | |
-#define _MAGIC_SWAPPED 0xde120495 | |
- | |
-/* Revision number of the currently used .mo (binary) file format. */ | |
-#define MO_REVISION_NUMBER 0 | |
- | |
-/* The following contortions are an attempt to use the C preprocessor | |
- to determine an unsigned integral type that is 32 bits wide. An | |
- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but | |
- as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work | |
- when cross-compiling. */ | |
- | |
-#if __STDC__ | |
-# define UINT_MAX_32_BITS 4294967295U | |
-#else | |
-# define UINT_MAX_32_BITS 0xFFFFFFFF | |
-#endif | |
- | |
-/* If UINT_MAX isn't defined, assume it's a 32-bit type. | |
- This should be valid for all systems GNU cares about because | |
- that doesn't include 16-bit systems, and only modern systems | |
- (that certainly have <limits.h>) have 64+-bit integral types. */ | |
- | |
-#ifndef UINT_MAX | |
-# define UINT_MAX UINT_MAX_32_BITS | |
-#endif | |
- | |
-#if UINT_MAX == UINT_MAX_32_BITS | |
-typedef unsigned nls_uint32; | |
-#else | |
-# if USHRT_MAX == UINT_MAX_32_BITS | |
-typedef unsigned short nls_uint32; | |
-# else | |
-# if ULONG_MAX == UINT_MAX_32_BITS | |
-typedef unsigned long nls_uint32; | |
-# else | |
- /* The following line is intended to throw an error. Using #error is | |
- not portable enough. */ | |
- "Cannot determine unsigned 32-bit data type." | |
-# endif | |
-# endif | |
-#endif | |
- | |
- | |
-/* Header for binary .mo file format. */ | |
-struct mo_file_header | |
-{ | |
- /* The magic number. */ | |
- nls_uint32 magic; | |
- /* The revision number of the file format. */ | |
- nls_uint32 revision; | |
- /* The number of strings pairs. */ | |
- nls_uint32 nstrings; | |
- /* Offset of table with start offsets of original strings. */ | |
- nls_uint32 orig_tab_offset; | |
- /* Offset of table with start offsets of translation strings. */ | |
- nls_uint32 trans_tab_offset; | |
- /* Size of hashing table. */ | |
- nls_uint32 hash_tab_size; | |
- /* Offset of first hashing entry. */ | |
- nls_uint32 hash_tab_offset; | |
-}; | |
- | |
-struct string_desc | |
-{ | |
- /* Length of addressed string. */ | |
- nls_uint32 length; | |
- /* Offset of string in file. */ | |
- nls_uint32 offset; | |
-}; | |
- | |
-/* @@ begin of epilog @@ */ | |
- | |
-#endif /* gettext.h */ | |
diff --git a/intl/gettextP.h b/intl/gettextP.h | |
t@@ -1,311 +0,0 @@ | |
-/* Header describing internals of libintl library. | |
- Copyright (C) 1995-1999, 2000-2007, 2009-2010 Free Software Foundation, Inc. | |
- Written by Ulrich Drepper <[email protected]>, 1995. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifndef _GETTEXTP_H | |
-#define _GETTEXTP_H | |
- | |
-#include <stddef.h> /* Get size_t. */ | |
- | |
-#ifdef _LIBC | |
-# include "../iconv/gconv_int.h" | |
-#else | |
-# if HAVE_ICONV | |
-# include <iconv.h> | |
-# endif | |
-#endif | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-# define gl_rwlock_define __libc_rwlock_define | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-#ifdef _LIBC | |
-extern char *__gettext (const char *__msgid); | |
-extern char *__dgettext (const char *__domainname, const char *__msgid); | |
-extern char *__dcgettext (const char *__domainname, const char *__msgid, | |
- int __category); | |
-extern char *__ngettext (const char *__msgid1, const char *__msgid2, | |
- unsigned long int __n); | |
-extern char *__dngettext (const char *__domainname, | |
- const char *__msgid1, const char *__msgid2, | |
- unsigned long int n); | |
-extern char *__dcngettext (const char *__domainname, | |
- const char *__msgid1, const char *__msgid2, | |
- unsigned long int __n, int __category); | |
-extern char *__dcigettext (const char *__domainname, | |
- const char *__msgid1, const char *__msgid2, | |
- int __plural, unsigned long int __n, | |
- int __category); | |
-extern char *__textdomain (const char *__domainname); | |
-extern char *__bindtextdomain (const char *__domainname, | |
- const char *__dirname); | |
-extern char *__bind_textdomain_codeset (const char *__domainname, | |
- const char *__codeset); | |
-extern void _nl_finddomain_subfreeres (void) attribute_hidden; | |
-extern void _nl_unload_domain (struct loaded_domain *__domain) | |
- internal_function attribute_hidden; | |
-#else | |
-/* Declare the exported libintl_* functions, in a way that allows us to | |
- call them under their real name. */ | |
-# undef _INTL_REDIRECT_INLINE | |
-# undef _INTL_REDIRECT_MACROS | |
-# define _INTL_REDIRECT_MACROS | |
-# include "libgnuintl.h" | |
-# ifdef IN_LIBGLOCALE | |
-extern char *gl_dcigettext (const char *__domainname, | |
- const char *__msgid1, const char *__msgid2, | |
- int __plural, unsigned long int __n, | |
- int __category, | |
- const char *__localename, const char *__encoding); | |
-# else | |
-extern char *libintl_dcigettext (const char *__domainname, | |
- const char *__msgid1, const char *__msgid2, | |
- int __plural, unsigned long int __n, | |
- int __category); | |
-# endif | |
-#endif | |
- | |
-#include "loadinfo.h" | |
- | |
-#include "gmo.h" /* Get nls_uint32. */ | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-#ifndef internal_function | |
-# define internal_function | |
-#endif | |
- | |
-#ifndef attribute_hidden | |
-# define attribute_hidden | |
-#endif | |
- | |
-/* Tell the compiler when a conditional or integer expression is | |
- almost always true or almost always false. */ | |
-#ifndef HAVE_BUILTIN_EXPECT | |
-# define __builtin_expect(expr, val) (expr) | |
-#endif | |
- | |
-#ifndef W | |
-# define W(flag, data) ((flag) ? SWAP (data) : (data)) | |
-#endif | |
- | |
- | |
-#ifdef _LIBC | |
-# include <byteswap.h> | |
-# define SWAP(i) bswap_32 (i) | |
-#else | |
-static inline nls_uint32 | |
-# ifdef __cplusplus | |
-SWAP (nls_uint32 i) | |
-# else | |
-SWAP (i) | |
- nls_uint32 i; | |
-# endif | |
-{ | |
- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); | |
-} | |
-#endif | |
- | |
- | |
-/* In-memory representation of system dependent string. */ | |
-struct sysdep_string_desc | |
-{ | |
- /* Length of addressed string, including the trailing NUL. */ | |
- size_t length; | |
- /* Pointer to addressed string. */ | |
- const char *pointer; | |
-}; | |
- | |
-/* Cache of translated strings after charset conversion. | |
- Note: The strings are converted to the target encoding only on an as-needed | |
- basis. */ | |
-struct converted_domain | |
-{ | |
- /* The target encoding name. */ | |
- const char *encoding; | |
- /* The descriptor for conversion from the message catalog's encoding to | |
- this target encoding. */ | |
-#ifdef _LIBC | |
- __gconv_t conv; | |
-#else | |
-# if HAVE_ICONV | |
- iconv_t conv; | |
-# endif | |
-#endif | |
- /* The table of translated strings after charset conversion. */ | |
- char **conv_tab; | |
-}; | |
- | |
-/* The representation of an opened message catalog. */ | |
-struct loaded_domain | |
-{ | |
- /* Pointer to memory containing the .mo file. */ | |
- const char *data; | |
- /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ | |
- int use_mmap; | |
- /* Size of mmap()ed memory. */ | |
- size_t mmap_size; | |
- /* 1 if the .mo file uses a different endianness than this machine. */ | |
- int must_swap; | |
- /* Pointer to additional malloc()ed memory. */ | |
- void *malloced; | |
- | |
- /* Number of static strings pairs. */ | |
- nls_uint32 nstrings; | |
- /* Pointer to descriptors of original strings in the file. */ | |
- const struct string_desc *orig_tab; | |
- /* Pointer to descriptors of translated strings in the file. */ | |
- const struct string_desc *trans_tab; | |
- | |
- /* Number of system dependent strings pairs. */ | |
- nls_uint32 n_sysdep_strings; | |
- /* Pointer to descriptors of original sysdep strings. */ | |
- const struct sysdep_string_desc *orig_sysdep_tab; | |
- /* Pointer to descriptors of translated sysdep strings. */ | |
- const struct sysdep_string_desc *trans_sysdep_tab; | |
- | |
- /* Size of hash table. */ | |
- nls_uint32 hash_size; | |
- /* Pointer to hash table. */ | |
- const nls_uint32 *hash_tab; | |
- /* 1 if the hash table uses a different endianness than this machine. */ | |
- int must_swap_hash_tab; | |
- | |
- /* Cache of charset conversions of the translated strings. */ | |
- struct converted_domain *conversions; | |
- size_t nconversions; | |
- gl_rwlock_define (, conversions_lock) | |
- | |
- const struct expression *plural; | |
- unsigned long int nplurals; | |
-}; | |
- | |
-/* We want to allocate a string at the end of the struct. But ISO C | |
- doesn't allow zero sized arrays. */ | |
-#ifdef __GNUC__ | |
-# define ZERO 0 | |
-#else | |
-# define ZERO 1 | |
-#endif | |
- | |
-/* A set of settings bound to a message domain. Used to store settings | |
- from bindtextdomain() and bind_textdomain_codeset(). */ | |
-struct binding | |
-{ | |
- struct binding *next; | |
- char *dirname; | |
- char *codeset; | |
- char domainname[ZERO]; | |
-}; | |
- | |
-/* A counter which is incremented each time some previous translations | |
- become invalid. | |
- This variable is part of the external ABI of the GNU libintl. */ | |
-#ifdef IN_LIBGLOCALE | |
-# include <glocale/config.h> | |
-extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr; | |
-#else | |
-extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr; | |
-#endif | |
- | |
-#ifndef _LIBC | |
-extern const char *_nl_language_preferences_default (void); | |
-# define gl_locale_name_canonicalize _nl_locale_name_canonicalize | |
-extern void _nl_locale_name_canonicalize (char *name); | |
-# define gl_locale_name_from_win32_LANGID _nl_locale_name_from_win32_LANGID | |
-/* extern const char *_nl_locale_name_from_win32_LANGID (LANGID langid); */ | |
-# define gl_locale_name_from_win32_LCID _nl_locale_name_from_win32_LCID | |
-/* extern const char *_nl_locale_name_from_win32_LCID (LCID lcid); */ | |
-# define gl_locale_name_thread_unsafe _nl_locale_name_thread_unsafe | |
-extern const char *_nl_locale_name_thread_unsafe (int category, | |
- const char *categoryname); | |
-# define gl_locale_name_thread _nl_locale_name_thread | |
-/* extern const char *_nl_locale_name_thread (int category, | |
- const char *categoryname); */ | |
-# define gl_locale_name_posix _nl_locale_name_posix | |
-extern const char *_nl_locale_name_posix (int category, | |
- const char *categoryname); | |
-# define gl_locale_name_environ _nl_locale_name_environ | |
-extern const char *_nl_locale_name_environ (int category, | |
- const char *categoryname); | |
-# define gl_locale_name_default _nl_locale_name_default | |
-extern const char *_nl_locale_name_default (void); | |
-# define gl_locale_name _nl_locale_name | |
-/* extern const char *_nl_locale_name (int category, | |
- const char *categoryname); */ | |
-#endif | |
- | |
-struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale, | |
- const char *__domainname, | |
- struct binding *__domainbinding) | |
- internal_function; | |
-void _nl_load_domain (struct loaded_l10nfile *__domain, | |
- struct binding *__domainbinding) | |
- internal_function; | |
- | |
-#ifdef IN_LIBGLOCALE | |
-char *_nl_find_msg (struct loaded_l10nfile *domain_file, | |
- struct binding *domainbinding, const char *encoding, | |
- const char *msgid, | |
- size_t *lengthp) | |
- internal_function; | |
-#else | |
-char *_nl_find_msg (struct loaded_l10nfile *domain_file, | |
- struct binding *domainbinding, const char *msgid, | |
- int convert, size_t *lengthp) | |
- internal_function; | |
-#endif | |
- | |
-/* The internal variables in the standalone libintl.a must have different | |
- names than the internal variables in GNU libc, otherwise programs | |
- using libintl.a cannot be linked statically. */ | |
-#if !defined _LIBC | |
-# define _nl_default_dirname libintl_nl_default_dirname | |
-# define _nl_domain_bindings libintl_nl_domain_bindings | |
-#endif | |
- | |
-/* Contains the default location of the message catalogs. */ | |
-extern const char _nl_default_dirname[]; | |
-#ifdef _LIBC | |
-libc_hidden_proto (_nl_default_dirname) | |
-#endif | |
- | |
-/* List with bindings of specific domains. */ | |
-extern struct binding *_nl_domain_bindings; | |
- | |
-/* The internal variables in the standalone libintl.a must have different | |
- names than the internal variables in GNU libc, otherwise programs | |
- using libintl.a cannot be linked statically. */ | |
-#if !defined _LIBC | |
-# define _nl_default_default_domain libintl_nl_default_default_domain | |
-# define _nl_current_default_domain libintl_nl_current_default_domain | |
-#endif | |
- | |
-/* Name of the default text domain. */ | |
-extern const char _nl_default_default_domain[] attribute_hidden; | |
- | |
-/* Default text domain in which entries for gettext(3) are to be found. */ | |
-extern const char *_nl_current_default_domain attribute_hidden; | |
- | |
-/* @@ begin of epilog @@ */ | |
- | |
-#endif /* gettextP.h */ | |
diff --git a/intl/hash-string.h b/intl/hash-string.h | |
t@@ -1,36 +0,0 @@ | |
-/* Description of GNU message catalog format: string hashing function. | |
- Copyright (C) 1995, 1997-1998, 2000-2003, 2005 Free Software Foundation, In… | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* We assume to have `unsigned long int' value with at least 32 bits. */ | |
-#define HASHWORDBITS 32 | |
- | |
- | |
-#ifndef _LIBC | |
-# ifdef IN_LIBINTL | |
-# define __hash_string libintl_hash_string | |
-# else | |
-# define __hash_string hash_string | |
-# endif | |
-#endif | |
- | |
-/* Defines the so called `hashpjw' function by P.J. Weinberger | |
- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, | |
- 1986, 1987 Bell Telephone Laboratories, Inc.] */ | |
-extern unsigned long int __hash_string (const char *str_param); | |
diff --git a/intl/intl-compat.c b/intl/intl-compat.c | |
t@@ -1,133 +0,0 @@ | |
-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext | |
- Library. | |
- Copyright (C) 1995, 2000-2003, 2005 Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include "gettextP.h" | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* This file redirects the gettext functions (without prefix) to those | |
- defined in the included GNU libintl library (with "libintl_" prefix). | |
- It is compiled into libintl in order to make the AM_GNU_GETTEXT test | |
- of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which | |
- has the redirections primarily in the <libintl.h> include file. | |
- It is also compiled into libgnuintl so that libgnuintl.so can be used | |
- as LD_PRELOADable library on glibc systems, to provide the extra | |
- features that the functions in the libc don't have (namely, logging). */ | |
- | |
- | |
-#undef gettext | |
-#undef dgettext | |
-#undef dcgettext | |
-#undef ngettext | |
-#undef dngettext | |
-#undef dcngettext | |
-#undef textdomain | |
-#undef bindtextdomain | |
-#undef bind_textdomain_codeset | |
- | |
- | |
-/* When building a DLL, we must export some functions. Note that because | |
- the functions are only defined for binary backward compatibility, we | |
- don't need to use __declspec(dllimport) in any case. */ | |
-#if HAVE_VISIBILITY && BUILDING_DLL | |
-# define DLL_EXPORTED __attribute__((__visibility__("default"))) | |
-#elif defined _MSC_VER && BUILDING_DLL | |
-# define DLL_EXPORTED __declspec(dllexport) | |
-#else | |
-# define DLL_EXPORTED | |
-#endif | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-gettext (const char *msgid) | |
-{ | |
- return libintl_gettext (msgid); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-dgettext (const char *domainname, const char *msgid) | |
-{ | |
- return libintl_dgettext (domainname, msgid); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-dcgettext (const char *domainname, const char *msgid, int category) | |
-{ | |
- return libintl_dcgettext (domainname, msgid, category); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-ngettext (const char *msgid1, const char *msgid2, unsigned long int n) | |
-{ | |
- return libintl_ngettext (msgid1, msgid2, n); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-dngettext (const char *domainname, | |
- const char *msgid1, const char *msgid2, unsigned long int n) | |
-{ | |
- return libintl_dngettext (domainname, msgid1, msgid2, n); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-dcngettext (const char *domainname, | |
- const char *msgid1, const char *msgid2, unsigned long int n, | |
- int category) | |
-{ | |
- return libintl_dcngettext (domainname, msgid1, msgid2, n, category); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-textdomain (const char *domainname) | |
-{ | |
- return libintl_textdomain (domainname); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-bindtextdomain (const char *domainname, const char *dirname) | |
-{ | |
- return libintl_bindtextdomain (domainname, dirname); | |
-} | |
- | |
- | |
-DLL_EXPORTED | |
-char * | |
-bind_textdomain_codeset (const char *domainname, const char *codeset) | |
-{ | |
- return libintl_bind_textdomain_codeset (domainname, codeset); | |
-} | |
diff --git a/intl/l10nflist.c b/intl/l10nflist.c | |
t@@ -1,400 +0,0 @@ | |
-/* Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. | |
- Contributed by Ulrich Drepper <[email protected]>, 1995. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* Tell glibc's <string.h> to provide a prototype for stpcpy(). | |
- This must come before <config.h> because <config.h> may include | |
- <features.h>, and once <features.h> has been included, it's too late. */ | |
-#ifndef _GNU_SOURCE | |
-# define _GNU_SOURCE 1 | |
-#endif | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <string.h> | |
- | |
-#if defined _LIBC || defined HAVE_ARGZ_H | |
-# include <argz.h> | |
-#endif | |
-#include <ctype.h> | |
-#include <sys/types.h> | |
-#include <stdlib.h> | |
- | |
-#include "loadinfo.h" | |
- | |
-/* On some strange systems still no definition of NULL is found. Sigh! */ | |
-#ifndef NULL | |
-# if defined __STDC__ && __STDC__ | |
-# define NULL ((void *) 0) | |
-# else | |
-# define NULL 0 | |
-# endif | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-#ifdef _LIBC | |
-/* Rename the non ANSI C functions. This is required by the standard | |
- because some ANSI C functions will require linking with this object | |
- file and the name space must not be polluted. */ | |
-# ifndef stpcpy | |
-# define stpcpy(dest, src) __stpcpy(dest, src) | |
-# endif | |
-#else | |
-# ifndef HAVE_STPCPY | |
-static char *stpcpy (char *dest, const char *src); | |
-# endif | |
-#endif | |
- | |
-/* Pathname support. | |
- ISSLASH(C) tests whether C is a directory separator character. | |
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, | |
- it may be concatenated to a directory pathname. | |
- */ | |
-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX… | |
- /* Win32, Cygwin, OS/2, DOS */ | |
-# define ISSLASH(C) ((C) == '/' || (C) == '\\') | |
-# define HAS_DEVICE(P) \ | |
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ | |
- && (P)[1] == ':') | |
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) | |
-#else | |
- /* Unix */ | |
-# define ISSLASH(C) ((C) == '/') | |
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) | |
-#endif | |
- | |
-/* Define function which are usually not available. */ | |
- | |
-#ifdef _LIBC | |
-# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) | |
-#elif defined HAVE_ARGZ_COUNT | |
-# undef __argz_count | |
-# define __argz_count argz_count | |
-#else | |
-/* Returns the number of strings in ARGZ. */ | |
-static size_t | |
-argz_count__ (const char *argz, size_t len) | |
-{ | |
- size_t count = 0; | |
- while (len > 0) | |
- { | |
- size_t part_len = strlen (argz); | |
- argz += part_len + 1; | |
- len -= part_len + 1; | |
- count++; | |
- } | |
- return count; | |
-} | |
-# undef __argz_count | |
-# define __argz_count(argz, len) argz_count__ (argz, len) | |
-#endif /* !_LIBC && !HAVE_ARGZ_COUNT */ | |
- | |
-#ifdef _LIBC | |
-# define __argz_stringify(argz, len, sep) \ | |
- INTUSE(__argz_stringify) (argz, len, sep) | |
-#elif defined HAVE_ARGZ_STRINGIFY | |
-# undef __argz_stringify | |
-# define __argz_stringify argz_stringify | |
-#else | |
-/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's | |
- except the last into the character SEP. */ | |
-static void | |
-argz_stringify__ (char *argz, size_t len, int sep) | |
-{ | |
- while (len > 0) | |
- { | |
- size_t part_len = strlen (argz); | |
- argz += part_len; | |
- len -= part_len + 1; | |
- if (len > 0) | |
- *argz++ = sep; | |
- } | |
-} | |
-# undef __argz_stringify | |
-# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) | |
-#endif /* !_LIBC && !HAVE_ARGZ_STRINGIFY */ | |
- | |
-#ifdef _LIBC | |
-#elif defined HAVE_ARGZ_NEXT | |
-# undef __argz_next | |
-# define __argz_next argz_next | |
-#else | |
-static char * | |
-argz_next__ (char *argz, size_t argz_len, const char *entry) | |
-{ | |
- if (entry) | |
- { | |
- if (entry < argz + argz_len) | |
- entry = strchr (entry, '\0') + 1; | |
- | |
- return entry >= argz + argz_len ? NULL : (char *) entry; | |
- } | |
- else | |
- if (argz_len > 0) | |
- return argz; | |
- else | |
- return 0; | |
-} | |
-# undef __argz_next | |
-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) | |
-#endif /* !_LIBC && !HAVE_ARGZ_NEXT */ | |
- | |
- | |
-/* Return number of bits set in X. */ | |
-static inline int | |
-pop (int x) | |
-{ | |
- /* We assume that no more than 16 bits are used. */ | |
- x = ((x & ~0x5555) >> 1) + (x & 0x5555); | |
- x = ((x & ~0x3333) >> 2) + (x & 0x3333); | |
- x = ((x >> 4) + x) & 0x0f0f; | |
- x = ((x >> 8) + x) & 0xff; | |
- | |
- return x; | |
-} | |
- | |
- | |
-struct loaded_l10nfile * | |
-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, | |
- const char *dirlist, size_t dirlist_len, | |
- int mask, const char *language, const char *territory, | |
- const char *codeset, const char *normalized_codeset, | |
- const char *modifier, | |
- const char *filename, int do_allocate) | |
-{ | |
- char *abs_filename; | |
- struct loaded_l10nfile **lastp; | |
- struct loaded_l10nfile *retval; | |
- char *cp; | |
- size_t dirlist_count; | |
- size_t entries; | |
- int cnt; | |
- | |
- /* If LANGUAGE contains an absolute directory specification, we ignore | |
- DIRLIST. */ | |
- if (IS_ABSOLUTE_PATH (language)) | |
- dirlist_len = 0; | |
- | |
- /* Allocate room for the full file name. */ | |
- abs_filename = (char *) malloc (dirlist_len | |
- + strlen (language) | |
- + ((mask & XPG_TERRITORY) != 0 | |
- ? strlen (territory) + 1 : 0) | |
- + ((mask & XPG_CODESET) != 0 | |
- ? strlen (codeset) + 1 : 0) | |
- + ((mask & XPG_NORM_CODESET) != 0 | |
- ? strlen (normalized_codeset) + 1 : 0) | |
- + ((mask & XPG_MODIFIER) != 0 | |
- ? strlen (modifier) + 1 : 0) | |
- + 1 + strlen (filename) + 1); | |
- | |
- if (abs_filename == NULL) | |
- return NULL; | |
- | |
- /* Construct file name. */ | |
- cp = abs_filename; | |
- if (dirlist_len > 0) | |
- { | |
- memcpy (cp, dirlist, dirlist_len); | |
- __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); | |
- cp += dirlist_len; | |
- cp[-1] = '/'; | |
- } | |
- | |
- cp = stpcpy (cp, language); | |
- | |
- if ((mask & XPG_TERRITORY) != 0) | |
- { | |
- *cp++ = '_'; | |
- cp = stpcpy (cp, territory); | |
- } | |
- if ((mask & XPG_CODESET) != 0) | |
- { | |
- *cp++ = '.'; | |
- cp = stpcpy (cp, codeset); | |
- } | |
- if ((mask & XPG_NORM_CODESET) != 0) | |
- { | |
- *cp++ = '.'; | |
- cp = stpcpy (cp, normalized_codeset); | |
- } | |
- if ((mask & XPG_MODIFIER) != 0) | |
- { | |
- *cp++ = '@'; | |
- cp = stpcpy (cp, modifier); | |
- } | |
- | |
- *cp++ = '/'; | |
- stpcpy (cp, filename); | |
- | |
- /* Look in list of already loaded domains whether it is already | |
- available. */ | |
- lastp = l10nfile_list; | |
- for (retval = *l10nfile_list; retval != NULL; retval = retval->next) | |
- if (retval->filename != NULL) | |
- { | |
- int compare = strcmp (retval->filename, abs_filename); | |
- if (compare == 0) | |
- /* We found it! */ | |
- break; | |
- if (compare < 0) | |
- { | |
- /* It's not in the list. */ | |
- retval = NULL; | |
- break; | |
- } | |
- | |
- lastp = &retval->next; | |
- } | |
- | |
- if (retval != NULL || do_allocate == 0) | |
- { | |
- free (abs_filename); | |
- return retval; | |
- } | |
- | |
- dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); | |
- | |
- /* Allocate a new loaded_l10nfile. */ | |
- retval = | |
- (struct loaded_l10nfile *) | |
- malloc (sizeof (*retval) | |
- + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) | |
- * sizeof (struct loaded_l10nfile *))); | |
- if (retval == NULL) | |
- { | |
- free (abs_filename); | |
- return NULL; | |
- } | |
- | |
- retval->filename = abs_filename; | |
- | |
- /* We set retval->data to NULL here; it is filled in later. | |
- Setting retval->decided to 1 here means that retval does not | |
- correspond to a real file (dirlist_count > 1) or is not worth | |
- looking up (if an unnormalized codeset was specified). */ | |
- retval->decided = (dirlist_count > 1 | |
- || ((mask & XPG_CODESET) != 0 | |
- && (mask & XPG_NORM_CODESET) != 0)); | |
- retval->data = NULL; | |
- | |
- retval->next = *lastp; | |
- *lastp = retval; | |
- | |
- entries = 0; | |
- /* Recurse to fill the inheritance list of RETVAL. | |
- If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL | |
- entry does not correspond to a real file; retval->filename contains | |
- colons. In this case we loop across all elements of DIRLIST and | |
- across all bit patterns dominated by MASK. | |
- If the DIRLIST is a single directory or entirely redundant (i.e. | |
- DIRLIST_COUNT == 1), we loop across all bit patterns dominated by | |
- MASK, excluding MASK itself. | |
- In either case, we loop down from MASK to 0. This has the effect | |
- that the extra bits in the locale name are dropped in this order: | |
- first the modifier, then the territory, then the codeset, then the | |
- normalized_codeset. */ | |
- for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) | |
- if ((cnt & ~mask) == 0 | |
- && !((cnt & XPG_CODESET) != 0 && (cnt & XPG_NORM_CODESET) != 0)) | |
- { | |
- if (dirlist_count > 1) | |
- { | |
- /* Iterate over all elements of the DIRLIST. */ | |
- char *dir = NULL; | |
- | |
- while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) | |
- != NULL) | |
- retval->successor[entries++] | |
- = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, | |
- cnt, language, territory, codeset, | |
- normalized_codeset, modifier, filename, | |
- 1); | |
- } | |
- else | |
- retval->successor[entries++] | |
- = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, | |
- cnt, language, territory, codeset, | |
- normalized_codeset, modifier, filename, 1); | |
- } | |
- retval->successor[entries] = NULL; | |
- | |
- return retval; | |
-} | |
- | |
-/* Normalize codeset name. There is no standard for the codeset | |
- names. Normalization allows the user to use any of the common | |
- names. The return value is dynamically allocated and has to be | |
- freed by the caller. */ | |
-const char * | |
-_nl_normalize_codeset (const char *codeset, size_t name_len) | |
-{ | |
- size_t len = 0; | |
- int only_digit = 1; | |
- char *retval; | |
- char *wp; | |
- size_t cnt; | |
- | |
- for (cnt = 0; cnt < name_len; ++cnt) | |
- if (isalnum ((unsigned char) codeset[cnt])) | |
- { | |
- ++len; | |
- | |
- if (isalpha ((unsigned char) codeset[cnt])) | |
- only_digit = 0; | |
- } | |
- | |
- retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); | |
- | |
- if (retval != NULL) | |
- { | |
- if (only_digit) | |
- wp = stpcpy (retval, "iso"); | |
- else | |
- wp = retval; | |
- | |
- for (cnt = 0; cnt < name_len; ++cnt) | |
- if (isalpha ((unsigned char) codeset[cnt])) | |
- *wp++ = tolower ((unsigned char) codeset[cnt]); | |
- else if (isdigit ((unsigned char) codeset[cnt])) | |
- *wp++ = codeset[cnt]; | |
- | |
- *wp = '\0'; | |
- } | |
- | |
- return (const char *) retval; | |
-} | |
- | |
- | |
-/* @@ begin of epilog @@ */ | |
- | |
-/* We don't want libintl.a to depend on any other library. So we | |
- avoid the non-standard function stpcpy. In GNU C Library this | |
- function is available, though. Also allow the symbol HAVE_STPCPY | |
- to be defined. */ | |
-#if !_LIBC && !HAVE_STPCPY | |
-static char * | |
-stpcpy (char *dest, const char *src) | |
-{ | |
- while ((*dest++ = *src++) != '\0') | |
- /* Do nothing. */ ; | |
- return dest - 1; | |
-} | |
-#endif | |
diff --git a/intl/libgettext.h b/intl/libgettext.h | |
t@@ -1,48 +0,0 @@ | |
-/* Convenience header for conditional use of GNU <libintl.h>. | |
- Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify | |
- it under the terms of the GNU General Public License as published by | |
- the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
- GNU General Public License for more details. | |
- | |
- You should have received a copy of the GNU General Public License | |
- along with this program; if not, write to the Free Software Foundation, | |
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
- | |
-#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 <libintl.h> | |
- | |
-#else | |
- | |
-# define gettext(Msgid) (Msgid) | |
-# define dgettext(Domainname, Msgid) (Msgid) | |
-# define dcgettext(Domainname, Msgid, Category) (Msgid) | |
-# define ngettext(Msgid1, Msgid2, N) \ | |
- ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) | |
-# define dngettext(Domainname, Msgid1, Msgid2, N) \ | |
- ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) | |
-# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ | |
- ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) | |
-# define textdomain(Domainname) ((char *) (Domainname)) | |
-# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname)) | |
-# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset)) | |
- | |
-#endif | |
- | |
-/* For automatical extraction of messages sometimes no real | |
- translation is needed. Instead the string itself is the result. */ | |
-#define gettext_noop(Str) (Str) | |
- | |
-#endif /* _LIBGETTEXT_H */ | |
diff --git a/intl/libgnuintl.h b/intl/libgnuintl.h | |
t@@ -1,127 +0,0 @@ | |
-/* Message catalogs for internationalization. | |
- Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify | |
- it under the terms of the GNU General Public License as published by | |
- the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
- GNU General Public License for more details. | |
- | |
- You should have received a copy of the GNU General Public License | |
- along with this program; if not, write to the Free Software Foundation, | |
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
- | |
-#ifndef _LIBINTL_H | |
-#define _LIBINTL_H 1 | |
- | |
-#include <locale.h> | |
- | |
-/* The LC_MESSAGES locale category is the category used by the functions | |
- gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. | |
- On systems that don't define it, use an arbitrary value instead. | |
- On Solaris, <locale.h> defines __LOCALE_H then includes <libintl.h> (i.e. | |
- this file!) and then only defines LC_MESSAGES. To avoid a redefinition | |
- warning, don't define LC_MESSAGES in this case. */ | |
-#if !defined LC_MESSAGES && !defined __LOCALE_H | |
-# define LC_MESSAGES 1729 | |
-#endif | |
- | |
-/* We define an additional symbol to signal that we use the GNU | |
- implementation of gettext. */ | |
-#define __USE_GNU_GETTEXT 1 | |
- | |
-/* Resolve a platform specific conflict on DJGPP. GNU gettext takes | |
- precedence over _conio_gettext. */ | |
-#ifdef __DJGPP__ | |
-# undef gettext | |
-# define gettext gettext | |
-#endif | |
- | |
-#ifndef PARAMS | |
-# if __STDC__ || defined __cplusplus | |
-# define PARAMS(args) args | |
-# else | |
-# define PARAMS(args) () | |
-# endif | |
-#endif | |
- | |
-#ifdef __cplusplus | |
-extern "C" { | |
-#endif | |
- | |
-/* Look up MSGID in the current default message catalog for the current | |
- LC_MESSAGES locale. If not found, returns MSGID itself (the default | |
- text). */ | |
-extern char *gettext PARAMS ((const char *__msgid)); | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog for the current | |
- LC_MESSAGES locale. */ | |
-extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); | |
- | |
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY | |
- locale. */ | |
-extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, | |
- int __category)); | |
- | |
- | |
-/* Similar to `gettext' but select the plural form corresponding to the | |
- number N. */ | |
-extern char *ngettext PARAMS ((const char *__msgid1, const char *__msgid2, | |
- unsigned long int __n)); | |
- | |
-/* Similar to `dgettext' but select the plural form corresponding to the | |
- number N. */ | |
-extern char *dngettext PARAMS ((const char *__domainname, const char *__msgid1, | |
- const char *__msgid2, unsigned long int __n)); | |
- | |
-/* Similar to `dcgettext' but select the plural form corresponding to the | |
- number N. */ | |
-extern char *dcngettext PARAMS ((const char *__domainname, const char *__msgid… | |
- const char *__msgid2, unsigned long int __n, | |
- int __category)); | |
- | |
- | |
-/* Set the current default message catalog to DOMAINNAME. | |
- If DOMAINNAME is null, return the current default. | |
- If DOMAINNAME is "", reset to the default of "messages". */ | |
-extern char *textdomain PARAMS ((const char *__domainname)); | |
- | |
-/* Specify that the DOMAINNAME message catalog will be found | |
- in DIRNAME rather than in the system locale data base. */ | |
-extern char *bindtextdomain PARAMS ((const char *__domainname, | |
- const char *__dirname)); | |
- | |
-/* Specify the character encoding in which the messages from the | |
- DOMAINNAME message catalog will be returned. */ | |
-extern char *bind_textdomain_codeset PARAMS ((const char *__domainname, | |
- const char *__codeset)); | |
- | |
- | |
-/* Optimized version of the functions above. */ | |
-#if defined __OPTIMIZED | |
-/* These are macros, but could also be inline functions. */ | |
- | |
-# define gettext(msgid) … | |
- dgettext (NULL, msgid) | |
- | |
-# define dgettext(domainname, msgid) … | |
- dcgettext (domainname, msgid, LC_MESSAGES) | |
- | |
-# define ngettext(msgid1, msgid2, n) … | |
- dngettext (NULL, msgid1, msgid2, n) | |
- | |
-# define dngettext(domainname, msgid1, msgid2, n) … | |
- dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) | |
- | |
-#endif /* Optimizing. */ | |
- | |
- | |
-#ifdef __cplusplus | |
-} | |
-#endif | |
- | |
-#endif /* libintl.h */ | |
diff --git a/intl/loadinfo.h b/intl/loadinfo.h | |
t@@ -1,132 +0,0 @@ | |
-/* Copyright (C) 1996-1999, 2000-2003, 2005-2006 Free Software Foundation, Inc. | |
- This file is part of the GNU C Library. | |
- Contributed by Ulrich Drepper <[email protected]>, 1996. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifndef _LOADINFO_H | |
-#define _LOADINFO_H 1 | |
- | |
-/* Declarations of locale dependent catalog lookup functions. | |
- Implemented in | |
- | |
- localealias.c Possibly replace a locale name by another. | |
- explodename.c Split a locale name into its various fields. | |
- l10nflist.c Generate a list of filenames of possible message catalog… | |
- finddomain.c Find and open the relevant message catalogs. | |
- | |
- The main function _nl_find_domain() in finddomain.c is declared | |
- in gettextP.h. | |
- */ | |
- | |
-#ifndef internal_function | |
-# define internal_function | |
-#endif | |
- | |
-#ifndef LIBINTL_DLL_EXPORTED | |
-# define LIBINTL_DLL_EXPORTED | |
-#endif | |
- | |
-/* Tell the compiler when a conditional or integer expression is | |
- almost always true or almost always false. */ | |
-#ifndef HAVE_BUILTIN_EXPECT | |
-# define __builtin_expect(expr, val) (expr) | |
-#endif | |
- | |
-/* Separator in PATH like lists of pathnames. */ | |
-#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined … | |
- /* Win32, OS/2, DOS */ | |
-# define PATH_SEPARATOR ';' | |
-#else | |
- /* Unix */ | |
-# define PATH_SEPARATOR ':' | |
-#endif | |
- | |
-/* Encoding of locale name parts. */ | |
-#define XPG_NORM_CODESET 1 | |
-#define XPG_CODESET 2 | |
-#define XPG_TERRITORY 4 | |
-#define XPG_MODIFIER 8 | |
- | |
- | |
-struct loaded_l10nfile | |
-{ | |
- const char *filename; | |
- int decided; | |
- | |
- const void *data; | |
- | |
- struct loaded_l10nfile *next; | |
- struct loaded_l10nfile *successor[1]; | |
-}; | |
- | |
- | |
-/* Normalize codeset name. There is no standard for the codeset | |
- names. Normalization allows the user to use any of the common | |
- names. The return value is dynamically allocated and has to be | |
- freed by the caller. */ | |
-extern const char *_nl_normalize_codeset (const char *codeset, | |
- size_t name_len); | |
- | |
-/* Lookup a locale dependent file. | |
- *L10NFILE_LIST denotes a pool of lookup results of locale dependent | |
- files of the same kind, sorted in decreasing order of ->filename. | |
- DIRLIST and DIRLIST_LEN are an argz list of directories in which to | |
- look, containing at least one directory (i.e. DIRLIST_LEN > 0). | |
- MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER | |
- are the pieces of the locale name, as produced by _nl_explode_name(). | |
- FILENAME is the filename suffix. | |
- The return value is the lookup result, either found in *L10NFILE_LIST, | |
- or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. | |
- If the return value is non-NULL, it is added to *L10NFILE_LIST, and | |
- its ->next field denotes the chaining inside *L10NFILE_LIST, and | |
- furthermore its ->successor[] field contains a list of other lookup | |
- results from which this lookup result inherits. */ | |
-extern struct loaded_l10nfile * | |
-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, | |
- const char *dirlist, size_t dirlist_len, int mask, | |
- const char *language, const char *territory, | |
- const char *codeset, const char *normalized_codeset, | |
- const char *modifier, | |
- const char *filename, int do_allocate); | |
- | |
-/* Lookup the real locale name for a locale alias NAME, or NULL if | |
- NAME is not a locale alias (but possibly a real locale name). | |
- The return value is statically allocated and must not be freed. */ | |
-/* Part of the libintl ABI only for the sake of the gettext.m4 macro. */ | |
-extern LIBINTL_DLL_EXPORTED const char *_nl_expand_alias (const char *name); | |
- | |
-/* Split a locale name NAME into its pieces: language, modifier, | |
- territory, codeset. | |
- NAME gets destructively modified: NUL bytes are inserted here and | |
- there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, | |
- *CODESET gets assigned either a pointer into the old NAME string, or | |
- NULL. *NORMALIZED_CODESET gets assigned the expanded *CODESET, if it | |
- is different from *CODESET; this one is dynamically allocated and has | |
- to be freed by the caller. | |
- The return value is a bitmask, where each bit corresponds to one | |
- filled-in value: | |
- XPG_MODIFIER for *MODIFIER, | |
- XPG_TERRITORY for *TERRITORY, | |
- XPG_CODESET for *CODESET, | |
- XPG_NORM_CODESET for *NORMALIZED_CODESET. | |
- */ | |
-extern int _nl_explode_name (char *name, const char **language, | |
- const char **modifier, const char **territory, | |
- const char **codeset, | |
- const char **normalized_codeset); | |
- | |
-#endif /* loadinfo.h */ | |
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c | |
t@@ -1,1333 +0,0 @@ | |
-/* Load needed message catalogs. | |
- Copyright (C) 1995-1999, 2000-2008 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* Tell glibc's <string.h> to provide a prototype for mempcpy(). | |
- This must come before <config.h> because <config.h> may include | |
- <features.h>, and once <features.h> has been included, it's too late. */ | |
-#ifndef _GNU_SOURCE | |
-# define _GNU_SOURCE 1 | |
-#endif | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <ctype.h> | |
-#include <errno.h> | |
-#include <fcntl.h> | |
-#include <sys/types.h> | |
-#include <sys/stat.h> | |
- | |
-#ifdef __GNUC__ | |
-# undef alloca | |
-# define alloca __builtin_alloca | |
-# define HAVE_ALLOCA 1 | |
-#else | |
-# ifdef _MSC_VER | |
-# include <malloc.h> | |
-# define alloca _alloca | |
-# else | |
-# if defined HAVE_ALLOCA_H || defined _LIBC | |
-# include <alloca.h> | |
-# else | |
-# ifdef _AIX | |
- #pragma alloca | |
-# else | |
-# ifndef alloca | |
-char *alloca (); | |
-# endif | |
-# endif | |
-# endif | |
-# endif | |
-#endif | |
- | |
-#include <stdlib.h> | |
-#include <string.h> | |
- | |
-#if defined HAVE_UNISTD_H || defined _LIBC | |
-# include <unistd.h> | |
-#endif | |
- | |
-#ifdef _LIBC | |
-# include <langinfo.h> | |
-# include <locale.h> | |
-#endif | |
- | |
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ | |
- || (defined _LIBC && defined _POSIX_MAPPED_FILES) | |
-# include <sys/mman.h> | |
-# undef HAVE_MMAP | |
-# define HAVE_MMAP 1 | |
-#else | |
-# undef HAVE_MMAP | |
-#endif | |
- | |
-#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC | |
-# include <stdint.h> | |
-#endif | |
-#if defined HAVE_INTTYPES_H || defined _LIBC | |
-# include <inttypes.h> | |
-#endif | |
- | |
-#include "gmo.h" | |
-#include "gettextP.h" | |
-#include "hash-string.h" | |
-#include "plural-exp.h" | |
- | |
-#ifdef _LIBC | |
-# include "../locale/localeinfo.h" | |
-# include <not-cancel.h> | |
-#endif | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-/* Provide fallback values for macros that ought to be defined in <inttypes.h>. | |
- Note that our fallback values need not be literal strings, because we don't | |
- use them with preprocessor string concatenation. */ | |
-#if !defined PRId8 || PRI_MACROS_BROKEN | |
-# undef PRId8 | |
-# define PRId8 "d" | |
-#endif | |
-#if !defined PRIi8 || PRI_MACROS_BROKEN | |
-# undef PRIi8 | |
-# define PRIi8 "i" | |
-#endif | |
-#if !defined PRIo8 || PRI_MACROS_BROKEN | |
-# undef PRIo8 | |
-# define PRIo8 "o" | |
-#endif | |
-#if !defined PRIu8 || PRI_MACROS_BROKEN | |
-# undef PRIu8 | |
-# define PRIu8 "u" | |
-#endif | |
-#if !defined PRIx8 || PRI_MACROS_BROKEN | |
-# undef PRIx8 | |
-# define PRIx8 "x" | |
-#endif | |
-#if !defined PRIX8 || PRI_MACROS_BROKEN | |
-# undef PRIX8 | |
-# define PRIX8 "X" | |
-#endif | |
-#if !defined PRId16 || PRI_MACROS_BROKEN | |
-# undef PRId16 | |
-# define PRId16 "d" | |
-#endif | |
-#if !defined PRIi16 || PRI_MACROS_BROKEN | |
-# undef PRIi16 | |
-# define PRIi16 "i" | |
-#endif | |
-#if !defined PRIo16 || PRI_MACROS_BROKEN | |
-# undef PRIo16 | |
-# define PRIo16 "o" | |
-#endif | |
-#if !defined PRIu16 || PRI_MACROS_BROKEN | |
-# undef PRIu16 | |
-# define PRIu16 "u" | |
-#endif | |
-#if !defined PRIx16 || PRI_MACROS_BROKEN | |
-# undef PRIx16 | |
-# define PRIx16 "x" | |
-#endif | |
-#if !defined PRIX16 || PRI_MACROS_BROKEN | |
-# undef PRIX16 | |
-# define PRIX16 "X" | |
-#endif | |
-#if !defined PRId32 || PRI_MACROS_BROKEN | |
-# undef PRId32 | |
-# define PRId32 "d" | |
-#endif | |
-#if !defined PRIi32 || PRI_MACROS_BROKEN | |
-# undef PRIi32 | |
-# define PRIi32 "i" | |
-#endif | |
-#if !defined PRIo32 || PRI_MACROS_BROKEN | |
-# undef PRIo32 | |
-# define PRIo32 "o" | |
-#endif | |
-#if !defined PRIu32 || PRI_MACROS_BROKEN | |
-# undef PRIu32 | |
-# define PRIu32 "u" | |
-#endif | |
-#if !defined PRIx32 || PRI_MACROS_BROKEN | |
-# undef PRIx32 | |
-# define PRIx32 "x" | |
-#endif | |
-#if !defined PRIX32 || PRI_MACROS_BROKEN | |
-# undef PRIX32 | |
-# define PRIX32 "X" | |
-#endif | |
-#if !defined PRId64 || PRI_MACROS_BROKEN | |
-# undef PRId64 | |
-# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") | |
-#endif | |
-#if !defined PRIi64 || PRI_MACROS_BROKEN | |
-# undef PRIi64 | |
-# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") | |
-#endif | |
-#if !defined PRIo64 || PRI_MACROS_BROKEN | |
-# undef PRIo64 | |
-# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") | |
-#endif | |
-#if !defined PRIu64 || PRI_MACROS_BROKEN | |
-# undef PRIu64 | |
-# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") | |
-#endif | |
-#if !defined PRIx64 || PRI_MACROS_BROKEN | |
-# undef PRIx64 | |
-# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") | |
-#endif | |
-#if !defined PRIX64 || PRI_MACROS_BROKEN | |
-# undef PRIX64 | |
-# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") | |
-#endif | |
-#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN | |
-# undef PRIdLEAST8 | |
-# define PRIdLEAST8 "d" | |
-#endif | |
-#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN | |
-# undef PRIiLEAST8 | |
-# define PRIiLEAST8 "i" | |
-#endif | |
-#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN | |
-# undef PRIoLEAST8 | |
-# define PRIoLEAST8 "o" | |
-#endif | |
-#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN | |
-# undef PRIuLEAST8 | |
-# define PRIuLEAST8 "u" | |
-#endif | |
-#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN | |
-# undef PRIxLEAST8 | |
-# define PRIxLEAST8 "x" | |
-#endif | |
-#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN | |
-# undef PRIXLEAST8 | |
-# define PRIXLEAST8 "X" | |
-#endif | |
-#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN | |
-# undef PRIdLEAST16 | |
-# define PRIdLEAST16 "d" | |
-#endif | |
-#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN | |
-# undef PRIiLEAST16 | |
-# define PRIiLEAST16 "i" | |
-#endif | |
-#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN | |
-# undef PRIoLEAST16 | |
-# define PRIoLEAST16 "o" | |
-#endif | |
-#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN | |
-# undef PRIuLEAST16 | |
-# define PRIuLEAST16 "u" | |
-#endif | |
-#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN | |
-# undef PRIxLEAST16 | |
-# define PRIxLEAST16 "x" | |
-#endif | |
-#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN | |
-# undef PRIXLEAST16 | |
-# define PRIXLEAST16 "X" | |
-#endif | |
-#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN | |
-# undef PRIdLEAST32 | |
-# define PRIdLEAST32 "d" | |
-#endif | |
-#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN | |
-# undef PRIiLEAST32 | |
-# define PRIiLEAST32 "i" | |
-#endif | |
-#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN | |
-# undef PRIoLEAST32 | |
-# define PRIoLEAST32 "o" | |
-#endif | |
-#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN | |
-# undef PRIuLEAST32 | |
-# define PRIuLEAST32 "u" | |
-#endif | |
-#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN | |
-# undef PRIxLEAST32 | |
-# define PRIxLEAST32 "x" | |
-#endif | |
-#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN | |
-# undef PRIXLEAST32 | |
-# define PRIXLEAST32 "X" | |
-#endif | |
-#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN | |
-# undef PRIdLEAST64 | |
-# define PRIdLEAST64 PRId64 | |
-#endif | |
-#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN | |
-# undef PRIiLEAST64 | |
-# define PRIiLEAST64 PRIi64 | |
-#endif | |
-#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN | |
-# undef PRIoLEAST64 | |
-# define PRIoLEAST64 PRIo64 | |
-#endif | |
-#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN | |
-# undef PRIuLEAST64 | |
-# define PRIuLEAST64 PRIu64 | |
-#endif | |
-#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN | |
-# undef PRIxLEAST64 | |
-# define PRIxLEAST64 PRIx64 | |
-#endif | |
-#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN | |
-# undef PRIXLEAST64 | |
-# define PRIXLEAST64 PRIX64 | |
-#endif | |
-#if !defined PRIdFAST8 || PRI_MACROS_BROKEN | |
-# undef PRIdFAST8 | |
-# define PRIdFAST8 "d" | |
-#endif | |
-#if !defined PRIiFAST8 || PRI_MACROS_BROKEN | |
-# undef PRIiFAST8 | |
-# define PRIiFAST8 "i" | |
-#endif | |
-#if !defined PRIoFAST8 || PRI_MACROS_BROKEN | |
-# undef PRIoFAST8 | |
-# define PRIoFAST8 "o" | |
-#endif | |
-#if !defined PRIuFAST8 || PRI_MACROS_BROKEN | |
-# undef PRIuFAST8 | |
-# define PRIuFAST8 "u" | |
-#endif | |
-#if !defined PRIxFAST8 || PRI_MACROS_BROKEN | |
-# undef PRIxFAST8 | |
-# define PRIxFAST8 "x" | |
-#endif | |
-#if !defined PRIXFAST8 || PRI_MACROS_BROKEN | |
-# undef PRIXFAST8 | |
-# define PRIXFAST8 "X" | |
-#endif | |
-#if !defined PRIdFAST16 || PRI_MACROS_BROKEN | |
-# undef PRIdFAST16 | |
-# define PRIdFAST16 "d" | |
-#endif | |
-#if !defined PRIiFAST16 || PRI_MACROS_BROKEN | |
-# undef PRIiFAST16 | |
-# define PRIiFAST16 "i" | |
-#endif | |
-#if !defined PRIoFAST16 || PRI_MACROS_BROKEN | |
-# undef PRIoFAST16 | |
-# define PRIoFAST16 "o" | |
-#endif | |
-#if !defined PRIuFAST16 || PRI_MACROS_BROKEN | |
-# undef PRIuFAST16 | |
-# define PRIuFAST16 "u" | |
-#endif | |
-#if !defined PRIxFAST16 || PRI_MACROS_BROKEN | |
-# undef PRIxFAST16 | |
-# define PRIxFAST16 "x" | |
-#endif | |
-#if !defined PRIXFAST16 || PRI_MACROS_BROKEN | |
-# undef PRIXFAST16 | |
-# define PRIXFAST16 "X" | |
-#endif | |
-#if !defined PRIdFAST32 || PRI_MACROS_BROKEN | |
-# undef PRIdFAST32 | |
-# define PRIdFAST32 "d" | |
-#endif | |
-#if !defined PRIiFAST32 || PRI_MACROS_BROKEN | |
-# undef PRIiFAST32 | |
-# define PRIiFAST32 "i" | |
-#endif | |
-#if !defined PRIoFAST32 || PRI_MACROS_BROKEN | |
-# undef PRIoFAST32 | |
-# define PRIoFAST32 "o" | |
-#endif | |
-#if !defined PRIuFAST32 || PRI_MACROS_BROKEN | |
-# undef PRIuFAST32 | |
-# define PRIuFAST32 "u" | |
-#endif | |
-#if !defined PRIxFAST32 || PRI_MACROS_BROKEN | |
-# undef PRIxFAST32 | |
-# define PRIxFAST32 "x" | |
-#endif | |
-#if !defined PRIXFAST32 || PRI_MACROS_BROKEN | |
-# undef PRIXFAST32 | |
-# define PRIXFAST32 "X" | |
-#endif | |
-#if !defined PRIdFAST64 || PRI_MACROS_BROKEN | |
-# undef PRIdFAST64 | |
-# define PRIdFAST64 PRId64 | |
-#endif | |
-#if !defined PRIiFAST64 || PRI_MACROS_BROKEN | |
-# undef PRIiFAST64 | |
-# define PRIiFAST64 PRIi64 | |
-#endif | |
-#if !defined PRIoFAST64 || PRI_MACROS_BROKEN | |
-# undef PRIoFAST64 | |
-# define PRIoFAST64 PRIo64 | |
-#endif | |
-#if !defined PRIuFAST64 || PRI_MACROS_BROKEN | |
-# undef PRIuFAST64 | |
-# define PRIuFAST64 PRIu64 | |
-#endif | |
-#if !defined PRIxFAST64 || PRI_MACROS_BROKEN | |
-# undef PRIxFAST64 | |
-# define PRIxFAST64 PRIx64 | |
-#endif | |
-#if !defined PRIXFAST64 || PRI_MACROS_BROKEN | |
-# undef PRIXFAST64 | |
-# define PRIXFAST64 PRIX64 | |
-#endif | |
-#if !defined PRIdMAX || PRI_MACROS_BROKEN | |
-# undef PRIdMAX | |
-# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") | |
-#endif | |
-#if !defined PRIiMAX || PRI_MACROS_BROKEN | |
-# undef PRIiMAX | |
-# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") | |
-#endif | |
-#if !defined PRIoMAX || PRI_MACROS_BROKEN | |
-# undef PRIoMAX | |
-# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") | |
-#endif | |
-#if !defined PRIuMAX || PRI_MACROS_BROKEN | |
-# undef PRIuMAX | |
-# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") | |
-#endif | |
-#if !defined PRIxMAX || PRI_MACROS_BROKEN | |
-# undef PRIxMAX | |
-# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") | |
-#endif | |
-#if !defined PRIXMAX || PRI_MACROS_BROKEN | |
-# undef PRIXMAX | |
-# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") | |
-#endif | |
-#if !defined PRIdPTR || PRI_MACROS_BROKEN | |
-# undef PRIdPTR | |
-# define PRIdPTR \ | |
- (sizeof (void *) == sizeof (long) ? "ld" : \ | |
- sizeof (void *) == sizeof (int) ? "d" : \ | |
- "lld") | |
-#endif | |
-#if !defined PRIiPTR || PRI_MACROS_BROKEN | |
-# undef PRIiPTR | |
-# define PRIiPTR \ | |
- (sizeof (void *) == sizeof (long) ? "li" : \ | |
- sizeof (void *) == sizeof (int) ? "i" : \ | |
- "lli") | |
-#endif | |
-#if !defined PRIoPTR || PRI_MACROS_BROKEN | |
-# undef PRIoPTR | |
-# define PRIoPTR \ | |
- (sizeof (void *) == sizeof (long) ? "lo" : \ | |
- sizeof (void *) == sizeof (int) ? "o" : \ | |
- "llo") | |
-#endif | |
-#if !defined PRIuPTR || PRI_MACROS_BROKEN | |
-# undef PRIuPTR | |
-# define PRIuPTR \ | |
- (sizeof (void *) == sizeof (long) ? "lu" : \ | |
- sizeof (void *) == sizeof (int) ? "u" : \ | |
- "llu") | |
-#endif | |
-#if !defined PRIxPTR || PRI_MACROS_BROKEN | |
-# undef PRIxPTR | |
-# define PRIxPTR \ | |
- (sizeof (void *) == sizeof (long) ? "lx" : \ | |
- sizeof (void *) == sizeof (int) ? "x" : \ | |
- "llx") | |
-#endif | |
-#if !defined PRIXPTR || PRI_MACROS_BROKEN | |
-# undef PRIXPTR | |
-# define PRIXPTR \ | |
- (sizeof (void *) == sizeof (long) ? "lX" : \ | |
- sizeof (void *) == sizeof (int) ? "X" : \ | |
- "llX") | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-#ifdef _LIBC | |
-/* Rename the non ISO C functions. This is required by the standard | |
- because some ISO C functions will require linking with this object | |
- file and the name space must not be polluted. */ | |
-# define open(name, flags) open_not_cancel_2 (name, flags) | |
-# define close(fd) close_not_cancel_no_status (fd) | |
-# define read(fd, buf, n) read_not_cancel (fd, buf, n) | |
-# define mmap(addr, len, prot, flags, fd, offset) \ | |
- __mmap (addr, len, prot, flags, fd, offset) | |
-# define munmap(addr, len) __munmap (addr, len) | |
-#endif | |
- | |
-/* For those losing systems which don't have `alloca' we have to add | |
- some additional code emulating it. */ | |
-#ifdef HAVE_ALLOCA | |
-# define freea(p) /* nothing */ | |
-#else | |
-# define alloca(n) malloc (n) | |
-# define freea(p) free (p) | |
-#endif | |
- | |
-/* For systems that distinguish between text and binary I/O. | |
- O_BINARY is usually declared in <fcntl.h>. */ | |
-#if !defined O_BINARY && defined _O_BINARY | |
- /* For MSC-compatible compilers. */ | |
-# define O_BINARY _O_BINARY | |
-# define O_TEXT _O_TEXT | |
-#endif | |
-#ifdef __BEOS__ | |
- /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ | |
-# undef O_BINARY | |
-# undef O_TEXT | |
-#endif | |
-/* On reasonable systems, binary I/O is the default. */ | |
-#ifndef O_BINARY | |
-# define O_BINARY 0 | |
-#endif | |
- | |
- | |
-/* We need a sign, whether a new catalog was loaded, which can be associated | |
- with all translations. This is important if the translations are | |
- cached by one of GCC's features. */ | |
-int _nl_msg_cat_cntr; | |
- | |
- | |
-/* Expand a system dependent string segment. Return NULL if unsupported. */ | |
-static const char * | |
-get_sysdep_segment_value (const char *name) | |
-{ | |
- /* Test for an ISO C 99 section 7.8.1 format string directive. | |
- Syntax: | |
- P R I { d | i | o | u | x | X } | |
- { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ | |
- /* We don't use a table of 14 times 6 'const char *' strings here, because | |
- data relocations cost startup time. */ | |
- if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') | |
- { | |
- if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' | |
- || name[3] == 'x' || name[3] == 'X') | |
- { | |
- if (name[4] == '8' && name[5] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRId8; | |
- if (name[3] == 'i') | |
- return PRIi8; | |
- if (name[3] == 'o') | |
- return PRIo8; | |
- if (name[3] == 'u') | |
- return PRIu8; | |
- if (name[3] == 'x') | |
- return PRIx8; | |
- if (name[3] == 'X') | |
- return PRIX8; | |
- abort (); | |
- } | |
- if (name[4] == '1' && name[5] == '6' && name[6] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRId16; | |
- if (name[3] == 'i') | |
- return PRIi16; | |
- if (name[3] == 'o') | |
- return PRIo16; | |
- if (name[3] == 'u') | |
- return PRIu16; | |
- if (name[3] == 'x') | |
- return PRIx16; | |
- if (name[3] == 'X') | |
- return PRIX16; | |
- abort (); | |
- } | |
- if (name[4] == '3' && name[5] == '2' && name[6] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRId32; | |
- if (name[3] == 'i') | |
- return PRIi32; | |
- if (name[3] == 'o') | |
- return PRIo32; | |
- if (name[3] == 'u') | |
- return PRIu32; | |
- if (name[3] == 'x') | |
- return PRIx32; | |
- if (name[3] == 'X') | |
- return PRIX32; | |
- abort (); | |
- } | |
- if (name[4] == '6' && name[5] == '4' && name[6] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRId64; | |
- if (name[3] == 'i') | |
- return PRIi64; | |
- if (name[3] == 'o') | |
- return PRIo64; | |
- if (name[3] == 'u') | |
- return PRIu64; | |
- if (name[3] == 'x') | |
- return PRIx64; | |
- if (name[3] == 'X') | |
- return PRIX64; | |
- abort (); | |
- } | |
- if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' | |
- && name[7] == 'S' && name[8] == 'T') | |
- { | |
- if (name[9] == '8' && name[10] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdLEAST8; | |
- if (name[3] == 'i') | |
- return PRIiLEAST8; | |
- if (name[3] == 'o') | |
- return PRIoLEAST8; | |
- if (name[3] == 'u') | |
- return PRIuLEAST8; | |
- if (name[3] == 'x') | |
- return PRIxLEAST8; | |
- if (name[3] == 'X') | |
- return PRIXLEAST8; | |
- abort (); | |
- } | |
- if (name[9] == '1' && name[10] == '6' && name[11] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdLEAST16; | |
- if (name[3] == 'i') | |
- return PRIiLEAST16; | |
- if (name[3] == 'o') | |
- return PRIoLEAST16; | |
- if (name[3] == 'u') | |
- return PRIuLEAST16; | |
- if (name[3] == 'x') | |
- return PRIxLEAST16; | |
- if (name[3] == 'X') | |
- return PRIXLEAST16; | |
- abort (); | |
- } | |
- if (name[9] == '3' && name[10] == '2' && name[11] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdLEAST32; | |
- if (name[3] == 'i') | |
- return PRIiLEAST32; | |
- if (name[3] == 'o') | |
- return PRIoLEAST32; | |
- if (name[3] == 'u') | |
- return PRIuLEAST32; | |
- if (name[3] == 'x') | |
- return PRIxLEAST32; | |
- if (name[3] == 'X') | |
- return PRIXLEAST32; | |
- abort (); | |
- } | |
- if (name[9] == '6' && name[10] == '4' && name[11] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdLEAST64; | |
- if (name[3] == 'i') | |
- return PRIiLEAST64; | |
- if (name[3] == 'o') | |
- return PRIoLEAST64; | |
- if (name[3] == 'u') | |
- return PRIuLEAST64; | |
- if (name[3] == 'x') | |
- return PRIxLEAST64; | |
- if (name[3] == 'X') | |
- return PRIXLEAST64; | |
- abort (); | |
- } | |
- } | |
- if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' | |
- && name[7] == 'T') | |
- { | |
- if (name[8] == '8' && name[9] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdFAST8; | |
- if (name[3] == 'i') | |
- return PRIiFAST8; | |
- if (name[3] == 'o') | |
- return PRIoFAST8; | |
- if (name[3] == 'u') | |
- return PRIuFAST8; | |
- if (name[3] == 'x') | |
- return PRIxFAST8; | |
- if (name[3] == 'X') | |
- return PRIXFAST8; | |
- abort (); | |
- } | |
- if (name[8] == '1' && name[9] == '6' && name[10] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdFAST16; | |
- if (name[3] == 'i') | |
- return PRIiFAST16; | |
- if (name[3] == 'o') | |
- return PRIoFAST16; | |
- if (name[3] == 'u') | |
- return PRIuFAST16; | |
- if (name[3] == 'x') | |
- return PRIxFAST16; | |
- if (name[3] == 'X') | |
- return PRIXFAST16; | |
- abort (); | |
- } | |
- if (name[8] == '3' && name[9] == '2' && name[10] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdFAST32; | |
- if (name[3] == 'i') | |
- return PRIiFAST32; | |
- if (name[3] == 'o') | |
- return PRIoFAST32; | |
- if (name[3] == 'u') | |
- return PRIuFAST32; | |
- if (name[3] == 'x') | |
- return PRIxFAST32; | |
- if (name[3] == 'X') | |
- return PRIXFAST32; | |
- abort (); | |
- } | |
- if (name[8] == '6' && name[9] == '4' && name[10] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdFAST64; | |
- if (name[3] == 'i') | |
- return PRIiFAST64; | |
- if (name[3] == 'o') | |
- return PRIoFAST64; | |
- if (name[3] == 'u') | |
- return PRIuFAST64; | |
- if (name[3] == 'x') | |
- return PRIxFAST64; | |
- if (name[3] == 'X') | |
- return PRIXFAST64; | |
- abort (); | |
- } | |
- } | |
- if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' | |
- && name[7] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdMAX; | |
- if (name[3] == 'i') | |
- return PRIiMAX; | |
- if (name[3] == 'o') | |
- return PRIoMAX; | |
- if (name[3] == 'u') | |
- return PRIuMAX; | |
- if (name[3] == 'x') | |
- return PRIxMAX; | |
- if (name[3] == 'X') | |
- return PRIXMAX; | |
- abort (); | |
- } | |
- if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' | |
- && name[7] == '\0') | |
- { | |
- if (name[3] == 'd') | |
- return PRIdPTR; | |
- if (name[3] == 'i') | |
- return PRIiPTR; | |
- if (name[3] == 'o') | |
- return PRIoPTR; | |
- if (name[3] == 'u') | |
- return PRIuPTR; | |
- if (name[3] == 'x') | |
- return PRIxPTR; | |
- if (name[3] == 'X') | |
- return PRIXPTR; | |
- abort (); | |
- } | |
- } | |
- } | |
- /* Test for a glibc specific printf() format directive flag. */ | |
- if (name[0] == 'I' && name[1] == '\0') | |
- { | |
-#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) | |
- /* The 'I' flag, in numeric format directives, replaces ASCII digits | |
- with the 'outdigits' defined in the LC_CTYPE locale facet. This is | |
- used for Farsi (Persian) and maybe Arabic. */ | |
- return "I"; | |
-#else | |
- return ""; | |
-#endif | |
- } | |
- /* Other system dependent strings are not valid. */ | |
- return NULL; | |
-} | |
- | |
-/* Load the message catalogs specified by FILENAME. If it is no valid | |
- message catalog do nothing. */ | |
-void | |
-internal_function | |
-_nl_load_domain (struct loaded_l10nfile *domain_file, | |
- struct binding *domainbinding) | |
-{ | |
- __libc_lock_define_initialized_recursive (static, lock) | |
- int fd = -1; | |
- size_t size; | |
-#ifdef _LIBC | |
- struct stat64 st; | |
-#else | |
- struct stat st; | |
-#endif | |
- struct mo_file_header *data = (struct mo_file_header *) -1; | |
- int use_mmap = 0; | |
- struct loaded_domain *domain; | |
- int revision; | |
- const char *nullentry; | |
- size_t nullentrylen; | |
- | |
- __libc_lock_lock_recursive (lock); | |
- if (domain_file->decided != 0) | |
- { | |
- /* There are two possibilities: | |
- | |
- + this is the same thread calling again during this initialization | |
- via _nl_find_msg. We have initialized everything this call needs. | |
- | |
- + this is another thread which tried to initialize this object. | |
- Not necessary anymore since if the lock is available this | |
- is finished. | |
- */ | |
- goto done; | |
- } | |
- | |
- domain_file->decided = -1; | |
- domain_file->data = NULL; | |
- | |
- /* Note that it would be useless to store domainbinding in domain_file | |
- because domainbinding might be == NULL now but != NULL later (after | |
- a call to bind_textdomain_codeset). */ | |
- | |
- /* If the record does not represent a valid locale the FILENAME | |
- might be NULL. This can happen when according to the given | |
- specification the locale file name is different for XPG and CEN | |
- syntax. */ | |
- if (domain_file->filename == NULL) | |
- goto out; | |
- | |
- /* Try to open the addressed file. */ | |
- fd = open (domain_file->filename, O_RDONLY | O_BINARY); | |
- if (fd == -1) | |
- goto out; | |
- | |
- /* We must know about the size of the file. */ | |
- if ( | |
-#ifdef _LIBC | |
- __builtin_expect (fstat64 (fd, &st) != 0, 0) | |
-#else | |
- __builtin_expect (fstat (fd, &st) != 0, 0) | |
-#endif | |
- || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) | |
- || __builtin_expect (size < sizeof (struct mo_file_header), 0)) | |
- /* Something went wrong. */ | |
- goto out; | |
- | |
-#ifdef HAVE_MMAP | |
- /* Now we are ready to load the file. If mmap() is available we try | |
- this first. If not available or it failed we try to load it. */ | |
- data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, | |
- MAP_PRIVATE, fd, 0); | |
- | |
- if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) | |
- { | |
- /* mmap() call was successful. */ | |
- close (fd); | |
- fd = -1; | |
- use_mmap = 1; | |
- } | |
-#endif | |
- | |
- /* If the data is not yet available (i.e. mmap'ed) we try to load | |
- it manually. */ | |
- if (data == (struct mo_file_header *) -1) | |
- { | |
- size_t to_read; | |
- char *read_ptr; | |
- | |
- data = (struct mo_file_header *) malloc (size); | |
- if (data == NULL) | |
- goto out; | |
- | |
- to_read = size; | |
- read_ptr = (char *) data; | |
- do | |
- { | |
- long int nb = (long int) read (fd, read_ptr, to_read); | |
- if (nb <= 0) | |
- { | |
-#ifdef EINTR | |
- if (nb == -1 && errno == EINTR) | |
- continue; | |
-#endif | |
- goto out; | |
- } | |
- read_ptr += nb; | |
- to_read -= nb; | |
- } | |
- while (to_read > 0); | |
- | |
- close (fd); | |
- fd = -1; | |
- } | |
- | |
- /* Using the magic number we can test whether it really is a message | |
- catalog file. */ | |
- if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, | |
- 0)) | |
- { | |
- /* The magic number is wrong: not a message catalog file. */ | |
-#ifdef HAVE_MMAP | |
- if (use_mmap) | |
- munmap ((caddr_t) data, size); | |
- else | |
-#endif | |
- free (data); | |
- goto out; | |
- } | |
- | |
- domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); | |
- if (domain == NULL) | |
- goto out; | |
- domain_file->data = domain; | |
- | |
- domain->data = (char *) data; | |
- domain->use_mmap = use_mmap; | |
- domain->mmap_size = size; | |
- domain->must_swap = data->magic != _MAGIC; | |
- domain->malloced = NULL; | |
- | |
- /* Fill in the information about the available tables. */ | |
- revision = W (domain->must_swap, data->revision); | |
- /* We support only the major revisions 0 and 1. */ | |
- switch (revision >> 16) | |
- { | |
- case 0: | |
- case 1: | |
- domain->nstrings = W (domain->must_swap, data->nstrings); | |
- domain->orig_tab = (const struct string_desc *) | |
- ((char *) data + W (domain->must_swap, data->orig_tab_offset)); | |
- domain->trans_tab = (const struct string_desc *) | |
- ((char *) data + W (domain->must_swap, data->trans_tab_offset)); | |
- domain->hash_size = W (domain->must_swap, data->hash_tab_size); | |
- domain->hash_tab = | |
- (domain->hash_size > 2 | |
- ? (const nls_uint32 *) | |
- ((char *) data + W (domain->must_swap, data->hash_tab_offset)) | |
- : NULL); | |
- domain->must_swap_hash_tab = domain->must_swap; | |
- | |
- /* Now dispatch on the minor revision. */ | |
- switch (revision & 0xffff) | |
- { | |
- case 0: | |
- domain->n_sysdep_strings = 0; | |
- domain->orig_sysdep_tab = NULL; | |
- domain->trans_sysdep_tab = NULL; | |
- break; | |
- case 1: | |
- default: | |
- { | |
- nls_uint32 n_sysdep_strings; | |
- | |
- if (domain->hash_tab == NULL) | |
- /* This is invalid. These minor revisions need a hash table. */ | |
- goto invalid; | |
- | |
- n_sysdep_strings = | |
- W (domain->must_swap, data->n_sysdep_strings); | |
- if (n_sysdep_strings > 0) | |
- { | |
- nls_uint32 n_sysdep_segments; | |
- const struct sysdep_segment *sysdep_segments; | |
- const char **sysdep_segment_values; | |
- const nls_uint32 *orig_sysdep_tab; | |
- const nls_uint32 *trans_sysdep_tab; | |
- nls_uint32 n_inmem_sysdep_strings; | |
- size_t memneed; | |
- char *mem; | |
- struct sysdep_string_desc *inmem_orig_sysdep_tab; | |
- struct sysdep_string_desc *inmem_trans_sysdep_tab; | |
- nls_uint32 *inmem_hash_tab; | |
- unsigned int i, j; | |
- | |
- /* Get the values of the system dependent segments. */ | |
- n_sysdep_segments = | |
- W (domain->must_swap, data->n_sysdep_segments); | |
- sysdep_segments = (const struct sysdep_segment *) | |
- ((char *) data | |
- + W (domain->must_swap, data->sysdep_segments_offset)); | |
- sysdep_segment_values = | |
- (const char **) | |
- alloca (n_sysdep_segments * sizeof (const char *)); | |
- for (i = 0; i < n_sysdep_segments; i++) | |
- { | |
- const char *name = | |
- (char *) data | |
- + W (domain->must_swap, sysdep_segments[i].offset); | |
- nls_uint32 namelen = | |
- W (domain->must_swap, sysdep_segments[i].length); | |
- | |
- if (!(namelen > 0 && name[namelen - 1] == '\0')) | |
- { | |
- freea (sysdep_segment_values); | |
- goto invalid; | |
- } | |
- | |
- sysdep_segment_values[i] = get_sysdep_segment_value (name); | |
- } | |
- | |
- orig_sysdep_tab = (const nls_uint32 *) | |
- ((char *) data | |
- + W (domain->must_swap, data->orig_sysdep_tab_offset)); | |
- trans_sysdep_tab = (const nls_uint32 *) | |
- ((char *) data | |
- + W (domain->must_swap, data->trans_sysdep_tab_offset)); | |
- | |
- /* Compute the amount of additional memory needed for the | |
- system dependent strings and the augmented hash table. | |
- At the same time, also drop string pairs which refer to | |
- an undefined system dependent segment. */ | |
- n_inmem_sysdep_strings = 0; | |
- memneed = domain->hash_size * sizeof (nls_uint32); | |
- for (i = 0; i < n_sysdep_strings; i++) | |
- { | |
- int valid = 1; | |
- size_t needs[2]; | |
- | |
- for (j = 0; j < 2; j++) | |
- { | |
- const struct sysdep_string *sysdep_string = | |
- (const struct sysdep_string *) | |
- ((char *) data | |
- + W (domain->must_swap, | |
- j == 0 | |
- ? orig_sysdep_tab[i] | |
- : trans_sysdep_tab[i])); | |
- size_t need = 0; | |
- const struct segment_pair *p = sysdep_string->segments; | |
- | |
- if (W (domain->must_swap, p->sysdepref) != SEGMENTS_EN… | |
- for (p = sysdep_string->segments;; p++) | |
- { | |
- nls_uint32 sysdepref; | |
- | |
- need += W (domain->must_swap, p->segsize); | |
- | |
- sysdepref = W (domain->must_swap, p->sysdepref); | |
- if (sysdepref == SEGMENTS_END) | |
- break; | |
- | |
- if (sysdepref >= n_sysdep_segments) | |
- { | |
- /* Invalid. */ | |
- freea (sysdep_segment_values); | |
- goto invalid; | |
- } | |
- | |
- if (sysdep_segment_values[sysdepref] == NULL) | |
- { | |
- /* This particular string pair is invalid. … | |
- valid = 0; | |
- break; | |
- } | |
- | |
- need += strlen (sysdep_segment_values[sysdepref]… | |
- } | |
- | |
- needs[j] = need; | |
- if (!valid) | |
- break; | |
- } | |
- | |
- if (valid) | |
- { | |
- n_inmem_sysdep_strings++; | |
- memneed += needs[0] + needs[1]; | |
- } | |
- } | |
- memneed += 2 * n_inmem_sysdep_strings | |
- * sizeof (struct sysdep_string_desc); | |
- | |
- if (n_inmem_sysdep_strings > 0) | |
- { | |
- unsigned int k; | |
- | |
- /* Allocate additional memory. */ | |
- mem = (char *) malloc (memneed); | |
- if (mem == NULL) | |
- goto invalid; | |
- | |
- domain->malloced = mem; | |
- inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; | |
- mem += n_inmem_sysdep_strings | |
- * sizeof (struct sysdep_string_desc); | |
- inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; | |
- mem += n_inmem_sysdep_strings | |
- * sizeof (struct sysdep_string_desc); | |
- inmem_hash_tab = (nls_uint32 *) mem; | |
- mem += domain->hash_size * sizeof (nls_uint32); | |
- | |
- /* Compute the system dependent strings. */ | |
- k = 0; | |
- for (i = 0; i < n_sysdep_strings; i++) | |
- { | |
- int valid = 1; | |
- | |
- for (j = 0; j < 2; j++) | |
- { | |
- const struct sysdep_string *sysdep_string = | |
- (const struct sysdep_string *) | |
- ((char *) data | |
- + W (domain->must_swap, | |
- j == 0 | |
- ? orig_sysdep_tab[i] | |
- : trans_sysdep_tab[i])); | |
- const struct segment_pair *p = | |
- sysdep_string->segments; | |
- | |
- if (W (domain->must_swap, p->sysdepref) | |
- != SEGMENTS_END) | |
- for (p = sysdep_string->segments;; p++) | |
- { | |
- nls_uint32 sysdepref; | |
- | |
- sysdepref = | |
- W (domain->must_swap, p->sysdepref); | |
- if (sysdepref == SEGMENTS_END) | |
- break; | |
- | |
- if (sysdep_segment_values[sysdepref] == NULL) | |
- { | |
- /* This particular string pair is | |
- invalid. */ | |
- valid = 0; | |
- break; | |
- } | |
- } | |
- | |
- if (!valid) | |
- break; | |
- } | |
- | |
- if (valid) | |
- { | |
- for (j = 0; j < 2; j++) | |
- { | |
- const struct sysdep_string *sysdep_string = | |
- (const struct sysdep_string *) | |
- ((char *) data | |
- + W (domain->must_swap, | |
- j == 0 | |
- ? orig_sysdep_tab[i] | |
- : trans_sysdep_tab[i])); | |
- const char *static_segments = | |
- (char *) data | |
- + W (domain->must_swap, sysdep_string->offse… | |
- const struct segment_pair *p = | |
- sysdep_string->segments; | |
- | |
- /* Concatenate the segments, and fill | |
- inmem_orig_sysdep_tab[k] (for j == 0) and | |
- inmem_trans_sysdep_tab[k] (for j == 1). */ | |
- | |
- struct sysdep_string_desc *inmem_tab_entry = | |
- (j == 0 | |
- ? inmem_orig_sysdep_tab | |
- : inmem_trans_sysdep_tab) | |
- + k; | |
- | |
- if (W (domain->must_swap, p->sysdepref) | |
- == SEGMENTS_END) | |
- { | |
- /* Only one static segment. */ | |
- inmem_tab_entry->length = | |
- W (domain->must_swap, p->segsize); | |
- inmem_tab_entry->pointer = static_segments; | |
- } | |
- else | |
- { | |
- inmem_tab_entry->pointer = mem; | |
- | |
- for (p = sysdep_string->segments;; p++) | |
- { | |
- nls_uint32 segsize = | |
- W (domain->must_swap, p->segsize); | |
- nls_uint32 sysdepref = | |
- W (domain->must_swap, p->sysdepref); | |
- size_t n; | |
- | |
- if (segsize > 0) | |
- { | |
- memcpy (mem, static_segments, segs… | |
- mem += segsize; | |
- static_segments += segsize; | |
- } | |
- | |
- if (sysdepref == SEGMENTS_END) | |
- break; | |
- | |
- n = strlen (sysdep_segment_values[sysd… | |
- memcpy (mem, sysdep_segment_values[sys… | |
- mem += n; | |
- } | |
- | |
- inmem_tab_entry->length = | |
- mem - inmem_tab_entry->pointer; | |
- } | |
- } | |
- | |
- k++; | |
- } | |
- } | |
- if (k != n_inmem_sysdep_strings) | |
- abort (); | |
- | |
- /* Compute the augmented hash table. */ | |
- for (i = 0; i < domain->hash_size; i++) | |
- inmem_hash_tab[i] = | |
- W (domain->must_swap_hash_tab, domain->hash_tab[i]); | |
- for (i = 0; i < n_inmem_sysdep_strings; i++) | |
- { | |
- const char *msgid = inmem_orig_sysdep_tab[i].pointer; | |
- nls_uint32 hash_val = __hash_string (msgid); | |
- nls_uint32 idx = hash_val % domain->hash_size; | |
- nls_uint32 incr = | |
- 1 + (hash_val % (domain->hash_size - 2)); | |
- | |
- for (;;) | |
- { | |
- if (inmem_hash_tab[idx] == 0) | |
- { | |
- /* Hash table entry is empty. Use it. */ | |
- inmem_hash_tab[idx] = 1 + domain->nstrings + i; | |
- break; | |
- } | |
- | |
- if (idx >= domain->hash_size - incr) | |
- idx -= domain->hash_size - incr; | |
- else | |
- idx += incr; | |
- } | |
- } | |
- | |
- domain->n_sysdep_strings = n_inmem_sysdep_strings; | |
- domain->orig_sysdep_tab = inmem_orig_sysdep_tab; | |
- domain->trans_sysdep_tab = inmem_trans_sysdep_tab; | |
- | |
- domain->hash_tab = inmem_hash_tab; | |
- domain->must_swap_hash_tab = 0; | |
- } | |
- else | |
- { | |
- domain->n_sysdep_strings = 0; | |
- domain->orig_sysdep_tab = NULL; | |
- domain->trans_sysdep_tab = NULL; | |
- } | |
- | |
- freea (sysdep_segment_values); | |
- } | |
- else | |
- { | |
- domain->n_sysdep_strings = 0; | |
- domain->orig_sysdep_tab = NULL; | |
- domain->trans_sysdep_tab = NULL; | |
- } | |
- } | |
- break; | |
- } | |
- break; | |
- default: | |
- /* This is an invalid revision. */ | |
- invalid: | |
- /* This is an invalid .mo file. */ | |
- free (domain->malloced); | |
-#ifdef HAVE_MMAP | |
- if (use_mmap) | |
- munmap ((caddr_t) data, size); | |
- else | |
-#endif | |
- free (data); | |
- free (domain); | |
- domain_file->data = NULL; | |
- goto out; | |
- } | |
- | |
- /* No caches of converted translations so far. */ | |
- domain->conversions = NULL; | |
- domain->nconversions = 0; | |
- gl_rwlock_init (domain->conversions_lock); | |
- | |
- /* Get the header entry and look for a plural specification. */ | |
-#ifdef IN_LIBGLOCALE | |
- nullentry = | |
- _nl_find_msg (domain_file, domainbinding, NULL, "", &nullentrylen); | |
-#else | |
- nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); | |
-#endif | |
- EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); | |
- | |
- out: | |
- if (fd != -1) | |
- close (fd); | |
- | |
- domain_file->decided = 1; | |
- | |
- done: | |
- __libc_lock_unlock_recursive (lock); | |
-} | |
- | |
- | |
-#ifdef _LIBC | |
-void | |
-internal_function __libc_freeres_fn_section | |
-_nl_unload_domain (struct loaded_domain *domain) | |
-{ | |
- size_t i; | |
- | |
- if (domain->plural != &__gettext_germanic_plural) | |
- __gettext_free_exp ((struct expression *) domain->plural); | |
- | |
- for (i = 0; i < domain->nconversions; i++) | |
- { | |
- struct converted_domain *convd = &domain->conversions[i]; | |
- | |
- free (convd->encoding); | |
- if (convd->conv_tab != NULL && convd->conv_tab != (char **) -1) | |
- free (convd->conv_tab); | |
- if (convd->conv != (__gconv_t) -1) | |
- __gconv_close (convd->conv); | |
- } | |
- free (domain->conversions); | |
- __libc_rwlock_fini (domain->conversions_lock); | |
- | |
- free (domain->malloced); | |
- | |
-# ifdef _POSIX_MAPPED_FILES | |
- if (domain->use_mmap) | |
- munmap ((caddr_t) domain->data, domain->mmap_size); | |
- else | |
-# endif /* _POSIX_MAPPED_FILES */ | |
- free ((void *) domain->data); | |
- | |
- free (domain); | |
-} | |
-#endif | |
diff --git a/intl/localcharset.c b/intl/localcharset.c | |
t@@ -1,549 +0,0 @@ | |
-/* Determine a canonical name for the current locale's character encoding. | |
- | |
- Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* Written by Bruno Haible <[email protected]>. */ | |
- | |
-#include <config.h> | |
- | |
-/* Specification. */ | |
-#include "localcharset.h" | |
- | |
-#include <fcntl.h> | |
-#include <stddef.h> | |
-#include <stdio.h> | |
-#include <string.h> | |
-#include <stdlib.h> | |
- | |
-#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET | |
-# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */ | |
-#endif | |
- | |
-#if defined _WIN32 || defined __WIN32__ | |
-# define WIN32_NATIVE | |
-#endif | |
- | |
-#if defined __EMX__ | |
-/* Assume EMX program runs on OS/2, even if compiled under DOS. */ | |
-# ifndef OS2 | |
-# define OS2 | |
-# endif | |
-#endif | |
- | |
-#if !defined WIN32_NATIVE | |
-# include <unistd.h> | |
-# if HAVE_LANGINFO_CODESET | |
-# include <langinfo.h> | |
-# else | |
-# if 0 /* see comment below */ | |
-# include <locale.h> | |
-# endif | |
-# endif | |
-# ifdef __CYGWIN__ | |
-# define WIN32_LEAN_AND_MEAN | |
-# include <windows.h> | |
-# endif | |
-#elif defined WIN32_NATIVE | |
-# define WIN32_LEAN_AND_MEAN | |
-# include <windows.h> | |
-#endif | |
-#if defined OS2 | |
-# define INCL_DOS | |
-# include <os2.h> | |
-#endif | |
- | |
-#if ENABLE_RELOCATABLE | |
-# include "relocatable.h" | |
-#else | |
-# define relocate(pathname) (pathname) | |
-#endif | |
- | |
-/* Get LIBDIR. */ | |
-#ifndef LIBDIR | |
-# include "configmake.h" | |
-#endif | |
- | |
-/* Define O_NOFOLLOW to 0 on platforms where it does not exist. */ | |
-#ifndef O_NOFOLLOW | |
-# define O_NOFOLLOW 0 | |
-#endif | |
- | |
-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX… | |
- /* Win32, Cygwin, OS/2, DOS */ | |
-# define ISSLASH(C) ((C) == '/' || (C) == '\\') | |
-#endif | |
- | |
-#ifndef DIRECTORY_SEPARATOR | |
-# define DIRECTORY_SEPARATOR '/' | |
-#endif | |
- | |
-#ifndef ISSLASH | |
-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) | |
-#endif | |
- | |
-#if HAVE_DECL_GETC_UNLOCKED | |
-# undef getc | |
-# define getc getc_unlocked | |
-#endif | |
- | |
-/* The following static variable is declared 'volatile' to avoid a | |
- possible multithread problem in the function get_charset_aliases. If we | |
- are running in a threaded environment, and if two threads initialize | |
- 'charset_aliases' simultaneously, both will produce the same value, | |
- and everything will be ok if the two assignments to 'charset_aliases' | |
- are atomic. But I don't know what will happen if the two assignments mix. … | |
-#if __STDC__ != 1 | |
-# define volatile /* empty */ | |
-#endif | |
-/* Pointer to the contents of the charset.alias file, if it has already been | |
- read, else NULL. Its format is: | |
- ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ | |
-static const char * volatile charset_aliases; | |
- | |
-/* Return a pointer to the contents of the charset.alias file. */ | |
-static const char * | |
-get_charset_aliases (void) | |
-{ | |
- const char *cp; | |
- | |
- cp = charset_aliases; | |
- if (cp == NULL) | |
- { | |
-#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGW… | |
- const char *dir; | |
- const char *base = "charset.alias"; | |
- char *file_name; | |
- | |
- /* Make it possible to override the charset.alias location. This is | |
- necessary for running the testsuite before "make install". */ | |
- dir = getenv ("CHARSETALIASDIR"); | |
- if (dir == NULL || dir[0] == '\0') | |
- dir = relocate (LIBDIR); | |
- | |
- /* Concatenate dir and base into freshly allocated file_name. */ | |
- { | |
- size_t dir_len = strlen (dir); | |
- size_t base_len = strlen (base); | |
- int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); | |
- file_name = (char *) malloc (dir_len + add_slash + base_len + 1); | |
- if (file_name != NULL) | |
- { | |
- memcpy (file_name, dir, dir_len); | |
- if (add_slash) | |
- file_name[dir_len] = DIRECTORY_SEPARATOR; | |
- memcpy (file_name + dir_len + add_slash, base, base_len + 1); | |
- } | |
- } | |
- | |
- if (file_name == NULL) | |
- /* Out of memory. Treat the file as empty. */ | |
- cp = ""; | |
- else | |
- { | |
- int fd; | |
- | |
- /* Open the file. Reject symbolic links on platforms that support | |
- O_NOFOLLOW. This is a security feature. Without it, an attacker | |
- could retrieve parts of the contents (namely, the tail of the | |
- first line that starts with "* ") of an arbitrary file by placing | |
- a symbolic link to that file under the name "charset.alias" in | |
- some writable directory and defining the environment variable | |
- CHARSETALIASDIR to point to that directory. */ | |
- fd = open (file_name, | |
- O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0)); | |
- if (fd < 0) | |
- /* File not found. Treat it as empty. */ | |
- cp = ""; | |
- else | |
- { | |
- FILE *fp; | |
- | |
- fp = fdopen (fd, "r"); | |
- if (fp == NULL) | |
- { | |
- /* Out of memory. Treat the file as empty. */ | |
- close (fd); | |
- cp = ""; | |
- } | |
- else | |
- { | |
- /* Parse the file's contents. */ | |
- char *res_ptr = NULL; | |
- size_t res_size = 0; | |
- | |
- for (;;) | |
- { | |
- int c; | |
- char buf1[50+1]; | |
- char buf2[50+1]; | |
- size_t l1, l2; | |
- char *old_res_ptr; | |
- | |
- c = getc (fp); | |
- if (c == EOF) | |
- break; | |
- if (c == '\n' || c == ' ' || c == '\t') | |
- continue; | |
- if (c == '#') | |
- { | |
- /* Skip comment, to end of line. */ | |
- do | |
- c = getc (fp); | |
- while (!(c == EOF || c == '\n')); | |
- if (c == EOF) | |
- break; | |
- continue; | |
- } | |
- ungetc (c, fp); | |
- if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) | |
- break; | |
- l1 = strlen (buf1); | |
- l2 = strlen (buf2); | |
- old_res_ptr = res_ptr; | |
- if (res_size == 0) | |
- { | |
- res_size = l1 + 1 + l2 + 1; | |
- res_ptr = (char *) malloc (res_size + 1); | |
- } | |
- else | |
- { | |
- res_size += l1 + 1 + l2 + 1; | |
- res_ptr = (char *) realloc (res_ptr, res_size + 1); | |
- } | |
- if (res_ptr == NULL) | |
- { | |
- /* Out of memory. */ | |
- res_size = 0; | |
- if (old_res_ptr != NULL) | |
- free (old_res_ptr); | |
- break; | |
- } | |
- strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); | |
- strcpy (res_ptr + res_size - (l2 + 1), buf2); | |
- } | |
- fclose (fp); | |
- if (res_size == 0) | |
- cp = ""; | |
- else | |
- { | |
- *(res_ptr + res_size) = '\0'; | |
- cp = res_ptr; | |
- } | |
- } | |
- } | |
- | |
- free (file_name); | |
- } | |
- | |
-#else | |
- | |
-# if defined DARWIN7 | |
- /* To avoid the trouble of installing a file that is shared by many | |
- GNU packages -- many packaging systems have problems with this --, | |
- simply inline the aliases here. */ | |
- cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" | |
- "ISO8859-2" "\0" "ISO-8859-2" "\0" | |
- "ISO8859-4" "\0" "ISO-8859-4" "\0" | |
- "ISO8859-5" "\0" "ISO-8859-5" "\0" | |
- "ISO8859-7" "\0" "ISO-8859-7" "\0" | |
- "ISO8859-9" "\0" "ISO-8859-9" "\0" | |
- "ISO8859-13" "\0" "ISO-8859-13" "\0" | |
- "ISO8859-15" "\0" "ISO-8859-15" "\0" | |
- "KOI8-R" "\0" "KOI8-R" "\0" | |
- "KOI8-U" "\0" "KOI8-U" "\0" | |
- "CP866" "\0" "CP866" "\0" | |
- "CP949" "\0" "CP949" "\0" | |
- "CP1131" "\0" "CP1131" "\0" | |
- "CP1251" "\0" "CP1251" "\0" | |
- "eucCN" "\0" "GB2312" "\0" | |
- "GB2312" "\0" "GB2312" "\0" | |
- "eucJP" "\0" "EUC-JP" "\0" | |
- "eucKR" "\0" "EUC-KR" "\0" | |
- "Big5" "\0" "BIG5" "\0" | |
- "Big5HKSCS" "\0" "BIG5-HKSCS" "\0" | |
- "GBK" "\0" "GBK" "\0" | |
- "GB18030" "\0" "GB18030" "\0" | |
- "SJIS" "\0" "SHIFT_JIS" "\0" | |
- "ARMSCII-8" "\0" "ARMSCII-8" "\0" | |
- "PT154" "\0" "PT154" "\0" | |
- /*"ISCII-DEV" "\0" "?" "\0"*/ | |
- "*" "\0" "UTF-8" "\0"; | |
-# endif | |
- | |
-# if defined VMS | |
- /* To avoid the troubles of an extra file charset.alias_vms in the | |
- sources of many GNU packages, simply inline the aliases here. */ | |
- /* The list of encodings is taken from the OpenVMS 7.3-1 documentation | |
- "Compaq C Run-Time Library Reference Manual for OpenVMS systems" | |
- section 10.7 "Handling Different Character Sets". */ | |
- cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" | |
- "ISO8859-2" "\0" "ISO-8859-2" "\0" | |
- "ISO8859-5" "\0" "ISO-8859-5" "\0" | |
- "ISO8859-7" "\0" "ISO-8859-7" "\0" | |
- "ISO8859-8" "\0" "ISO-8859-8" "\0" | |
- "ISO8859-9" "\0" "ISO-8859-9" "\0" | |
- /* Japanese */ | |
- "eucJP" "\0" "EUC-JP" "\0" | |
- "SJIS" "\0" "SHIFT_JIS" "\0" | |
- "DECKANJI" "\0" "DEC-KANJI" "\0" | |
- "SDECKANJI" "\0" "EUC-JP" "\0" | |
- /* Chinese */ | |
- "eucTW" "\0" "EUC-TW" "\0" | |
- "DECHANYU" "\0" "DEC-HANYU" "\0" | |
- "DECHANZI" "\0" "GB2312" "\0" | |
- /* Korean */ | |
- "DECKOREAN" "\0" "EUC-KR" "\0"; | |
-# endif | |
- | |
-# if defined WIN32_NATIVE || defined __CYGWIN__ | |
- /* To avoid the troubles of installing a separate file in the same | |
- directory as the DLL and of retrieving the DLL's directory at | |
- runtime, simply inline the aliases here. */ | |
- | |
- cp = "CP936" "\0" "GBK" "\0" | |
- "CP1361" "\0" "JOHAB" "\0" | |
- "CP20127" "\0" "ASCII" "\0" | |
- "CP20866" "\0" "KOI8-R" "\0" | |
- "CP20936" "\0" "GB2312" "\0" | |
- "CP21866" "\0" "KOI8-RU" "\0" | |
- "CP28591" "\0" "ISO-8859-1" "\0" | |
- "CP28592" "\0" "ISO-8859-2" "\0" | |
- "CP28593" "\0" "ISO-8859-3" "\0" | |
- "CP28594" "\0" "ISO-8859-4" "\0" | |
- "CP28595" "\0" "ISO-8859-5" "\0" | |
- "CP28596" "\0" "ISO-8859-6" "\0" | |
- "CP28597" "\0" "ISO-8859-7" "\0" | |
- "CP28598" "\0" "ISO-8859-8" "\0" | |
- "CP28599" "\0" "ISO-8859-9" "\0" | |
- "CP28605" "\0" "ISO-8859-15" "\0" | |
- "CP38598" "\0" "ISO-8859-8" "\0" | |
- "CP51932" "\0" "EUC-JP" "\0" | |
- "CP51936" "\0" "GB2312" "\0" | |
- "CP51949" "\0" "EUC-KR" "\0" | |
- "CP51950" "\0" "EUC-TW" "\0" | |
- "CP54936" "\0" "GB18030" "\0" | |
- "CP65001" "\0" "UTF-8" "\0"; | |
-# endif | |
-#endif | |
- | |
- charset_aliases = cp; | |
- } | |
- | |
- return cp; | |
-} | |
- | |
-/* Determine the current locale's character encoding, and canonicalize it | |
- into one of the canonical names listed in config.charset. | |
- The result must not be freed; it is statically allocated. | |
- If the canonical name cannot be determined, the result is a non-canonical | |
- name. */ | |
- | |
-#ifdef STATIC | |
-STATIC | |
-#endif | |
-const char * | |
-locale_charset (void) | |
-{ | |
- const char *codeset; | |
- const char *aliases; | |
- | |
-#if !(defined WIN32_NATIVE || defined OS2) | |
- | |
-# if HAVE_LANGINFO_CODESET | |
- | |
- /* Most systems support nl_langinfo (CODESET) nowadays. */ | |
- codeset = nl_langinfo (CODESET); | |
- | |
-# ifdef __CYGWIN__ | |
- /* Cygwin < 1.7 does not have locales. nl_langinfo (CODESET) always | |
- returns "US-ASCII". Return the suffix of the locale name from the | |
- environment variables (if present) or the codepage as a number. */ | |
- if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) | |
- { | |
- const char *locale; | |
- static char buf[2 + 10 + 1]; | |
- | |
- locale = getenv ("LC_ALL"); | |
- if (locale == NULL || locale[0] == '\0') | |
- { | |
- locale = getenv ("LC_CTYPE"); | |
- if (locale == NULL || locale[0] == '\0') | |
- locale = getenv ("LANG"); | |
- } | |
- if (locale != NULL && locale[0] != '\0') | |
- { | |
- /* If the locale name contains an encoding after the dot, return | |
- it. */ | |
- const char *dot = strchr (locale, '.'); | |
- | |
- if (dot != NULL) | |
- { | |
- const char *modifier; | |
- | |
- dot++; | |
- /* Look for the possible @... trailer and remove it, if any. */ | |
- modifier = strchr (dot, '@'); | |
- if (modifier == NULL) | |
- return dot; | |
- if (modifier - dot < sizeof (buf)) | |
- { | |
- memcpy (buf, dot, modifier - dot); | |
- buf [modifier - dot] = '\0'; | |
- return buf; | |
- } | |
- } | |
- } | |
- | |
- /* Woe32 has a function returning the locale's codepage as a number: | |
- GetACP(). This encoding is used by Cygwin, unless the user has set | |
- the environment variable CYGWIN=codepage:oem (which very few people | |
- do). | |
- Output directed to console windows needs to be converted (to | |
- GetOEMCP() if the console is using a raster font, or to | |
- GetConsoleOutputCP() if it is using a TrueType font). Cygwin does | |
- this conversion transparently (see winsup/cygwin/fhandler_console.cc), | |
- converting to GetConsoleOutputCP(). This leads to correct results, | |
- except when SetConsoleOutputCP has been called and a raster font is | |
- in use. */ | |
- sprintf (buf, "CP%u", GetACP ()); | |
- codeset = buf; | |
- } | |
-# endif | |
- | |
-# else | |
- | |
- /* On old systems which lack it, use setlocale or getenv. */ | |
- const char *locale = NULL; | |
- | |
- /* But most old systems don't have a complete set of locales. Some | |
- (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't | |
- use setlocale here; it would return "C" when it doesn't support the | |
- locale name the user has set. */ | |
-# if 0 | |
- locale = setlocale (LC_CTYPE, NULL); | |
-# endif | |
- if (locale == NULL || locale[0] == '\0') | |
- { | |
- locale = getenv ("LC_ALL"); | |
- if (locale == NULL || locale[0] == '\0') | |
- { | |
- locale = getenv ("LC_CTYPE"); | |
- if (locale == NULL || locale[0] == '\0') | |
- locale = getenv ("LANG"); | |
- } | |
- } | |
- | |
- /* On some old systems, one used to set locale = "iso8859_1". On others, | |
- you set it to "language_COUNTRY.charset". In any case, we resolve it | |
- through the charset.alias file. */ | |
- codeset = locale; | |
- | |
-# endif | |
- | |
-#elif defined WIN32_NATIVE | |
- | |
- static char buf[2 + 10 + 1]; | |
- | |
- /* Woe32 has a function returning the locale's codepage as a number: | |
- GetACP(). | |
- When the output goes to a console window, it needs to be provided in | |
- GetOEMCP() encoding if the console is using a raster font, or in | |
- GetConsoleOutputCP() encoding if it is using a TrueType font. | |
- But in GUI programs and for output sent to files and pipes, GetACP() | |
- encoding is the best bet. */ | |
- sprintf (buf, "CP%u", GetACP ()); | |
- codeset = buf; | |
- | |
-#elif defined OS2 | |
- | |
- const char *locale; | |
- static char buf[2 + 10 + 1]; | |
- ULONG cp[3]; | |
- ULONG cplen; | |
- | |
- /* Allow user to override the codeset, as set in the operating system, | |
- with standard language environment variables. */ | |
- locale = getenv ("LC_ALL"); | |
- if (locale == NULL || locale[0] == '\0') | |
- { | |
- locale = getenv ("LC_CTYPE"); | |
- if (locale == NULL || locale[0] == '\0') | |
- locale = getenv ("LANG"); | |
- } | |
- if (locale != NULL && locale[0] != '\0') | |
- { | |
- /* If the locale name contains an encoding after the dot, return it. */ | |
- const char *dot = strchr (locale, '.'); | |
- | |
- if (dot != NULL) | |
- { | |
- const char *modifier; | |
- | |
- dot++; | |
- /* Look for the possible @... trailer and remove it, if any. */ | |
- modifier = strchr (dot, '@'); | |
- if (modifier == NULL) | |
- return dot; | |
- if (modifier - dot < sizeof (buf)) | |
- { | |
- memcpy (buf, dot, modifier - dot); | |
- buf [modifier - dot] = '\0'; | |
- return buf; | |
- } | |
- } | |
- | |
- /* Resolve through the charset.alias file. */ | |
- codeset = locale; | |
- } | |
- else | |
- { | |
- /* OS/2 has a function returning the locale's codepage as a number. */ | |
- if (DosQueryCp (sizeof (cp), cp, &cplen)) | |
- codeset = ""; | |
- else | |
- { | |
- sprintf (buf, "CP%u", cp[0]); | |
- codeset = buf; | |
- } | |
- } | |
- | |
-#endif | |
- | |
- if (codeset == NULL) | |
- /* The canonical name cannot be determined. */ | |
- codeset = ""; | |
- | |
- /* Resolve alias. */ | |
- for (aliases = get_charset_aliases (); | |
- *aliases != '\0'; | |
- aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) | |
- if (strcmp (codeset, aliases) == 0 | |
- || (aliases[0] == '*' && aliases[1] == '\0')) | |
- { | |
- codeset = aliases + strlen (aliases) + 1; | |
- break; | |
- } | |
- | |
- /* Don't return an empty string. GNU libc and GNU libiconv interpret | |
- the empty string as denoting "the locale's character encoding", | |
- thus GNU libiconv would call this function a second time. */ | |
- if (codeset[0] == '\0') | |
- codeset = "ASCII"; | |
- | |
- return codeset; | |
-} | |
diff --git a/intl/locale.alias b/intl/locale.alias | |
t@@ -1,77 +0,0 @@ | |
-# Locale name alias data base. | |
-# Copyright (C) 1996-2001,2003,2007 Free Software Foundation, Inc. | |
-# | |
-# This program is free software; you can redistribute it and/or modify it | |
-# under the terms of the GNU Library General Public License as published | |
-# by the Free Software Foundation; either version 2, or (at your option) | |
-# any later version. | |
-# | |
-# This program is distributed in the hope that it will be useful, | |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
-# Library General Public License for more details. | |
-# | |
-# You should have received a copy of the GNU Library General Public | |
-# License along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
-# USA. | |
- | |
-# The format of this file is the same as for the corresponding file of | |
-# the X Window System, which normally can be found in | |
-# /usr/lib/X11/locale/locale.alias | |
-# A single line contains two fields: an alias and a substitution value. | |
-# All entries are case independent. | |
- | |
-# Note: This file is obsolete and is kept around for the time being for | |
-# backward compatibility. Nobody should rely on the names defined here. | |
-# Locales should always be specified by their full name. | |
- | |
-# Packages using this file: | |
- | |
-bokmal nb_NO.ISO-8859-1 | |
-bokm�l nb_NO.ISO-8859-1 | |
-catalan ca_ES.ISO-8859-1 | |
-croatian hr_HR.ISO-8859-2 | |
-czech cs_CZ.ISO-8859-2 | |
-danish da_DK.ISO-8859-1 | |
-dansk da_DK.ISO-8859-1 | |
-deutsch de_DE.ISO-8859-1 | |
-dutch nl_NL.ISO-8859-1 | |
-eesti et_EE.ISO-8859-1 | |
-estonian et_EE.ISO-8859-1 | |
-finnish fi_FI.ISO-8859-1 | |
-fran�ais fr_FR.ISO-8859-1 | |
-french fr_FR.ISO-8859-1 | |
-galego gl_ES.ISO-8859-1 | |
-galician gl_ES.ISO-8859-1 | |
-german de_DE.ISO-8859-1 | |
-greek el_GR.ISO-8859-7 | |
-hebrew he_IL.ISO-8859-8 | |
-hrvatski hr_HR.ISO-8859-2 | |
-hungarian hu_HU.ISO-8859-2 | |
-icelandic is_IS.ISO-8859-1 | |
-italian it_IT.ISO-8859-1 | |
-japanese ja_JP.eucJP | |
-japanese.euc ja_JP.eucJP | |
-ja_JP ja_JP.eucJP | |
-ja_JP.ujis ja_JP.eucJP | |
-japanese.sjis ja_JP.SJIS | |
-korean ko_KR.eucKR | |
-korean.euc ko_KR.eucKR | |
-ko_KR ko_KR.eucKR | |
-lithuanian lt_LT.ISO-8859-13 | |
-no_NO nb_NO.ISO-8859-1 | |
-no_NO.ISO-8859-1 nb_NO.ISO-8859-1 | |
-norwegian nb_NO.ISO-8859-1 | |
-nynorsk nn_NO.ISO-8859-1 | |
-polish pl_PL.ISO-8859-2 | |
-portuguese pt_PT.ISO-8859-1 | |
-romanian ro_RO.ISO-8859-2 | |
-russian ru_RU.ISO-8859-5 | |
-slovak sk_SK.ISO-8859-2 | |
-slovene sl_SI.ISO-8859-2 | |
-slovenian sl_SI.ISO-8859-2 | |
-spanish es_ES.ISO-8859-1 | |
-swedish sv_SE.ISO-8859-1 | |
-thai th_TH.TIS-620 | |
-turkish tr_TR.ISO-8859-9 | |
diff --git a/intl/localealias.c b/intl/localealias.c | |
t@@ -1,439 +0,0 @@ | |
-/* Handle aliases for locale names. | |
- Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2006 Free Software Foundatio… | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* Tell glibc's <string.h> to provide a prototype for mempcpy(). | |
- This must come before <config.h> because <config.h> may include | |
- <features.h>, and once <features.h> has been included, it's too late. */ | |
-#ifndef _GNU_SOURCE | |
-# define _GNU_SOURCE 1 | |
-#endif | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <ctype.h> | |
-#include <stdio.h> | |
-#if defined _LIBC || defined HAVE___FSETLOCKING | |
-# include <stdio_ext.h> | |
-#endif | |
-#include <sys/types.h> | |
- | |
-#ifdef __GNUC__ | |
-# undef alloca | |
-# define alloca __builtin_alloca | |
-# define HAVE_ALLOCA 1 | |
-#else | |
-# ifdef _MSC_VER | |
-# include <malloc.h> | |
-# define alloca _alloca | |
-# else | |
-# if defined HAVE_ALLOCA_H || defined _LIBC | |
-# include <alloca.h> | |
-# else | |
-# ifdef _AIX | |
- #pragma alloca | |
-# else | |
-# ifndef alloca | |
-char *alloca (); | |
-# endif | |
-# endif | |
-# endif | |
-# endif | |
-#endif | |
- | |
-#include <stdlib.h> | |
-#include <string.h> | |
- | |
-#include "gettextP.h" | |
- | |
-#if ENABLE_RELOCATABLE | |
-# include "relocatable.h" | |
-#else | |
-# define relocate(pathname) (pathname) | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-#ifdef _LIBC | |
-/* Rename the non ANSI C functions. This is required by the standard | |
- because some ANSI C functions will require linking with this object | |
- file and the name space must not be polluted. */ | |
-# define strcasecmp __strcasecmp | |
- | |
-# ifndef mempcpy | |
-# define mempcpy __mempcpy | |
-# endif | |
-# define HAVE_MEMPCPY 1 | |
-# define HAVE___FSETLOCKING 1 | |
-#endif | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-#ifndef internal_function | |
-# define internal_function | |
-#endif | |
- | |
-/* Some optimizations for glibc. */ | |
-#ifdef _LIBC | |
-# define FEOF(fp) feof_unlocked (fp) | |
-# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) | |
-#else | |
-# define FEOF(fp) feof (fp) | |
-# define FGETS(buf, n, fp) fgets (buf, n, fp) | |
-#endif | |
- | |
-/* For those losing systems which don't have `alloca' we have to add | |
- some additional code emulating it. */ | |
-#ifdef HAVE_ALLOCA | |
-# define freea(p) /* nothing */ | |
-#else | |
-# define alloca(n) malloc (n) | |
-# define freea(p) free (p) | |
-#endif | |
- | |
-#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED | |
-# undef fgets | |
-# define fgets(buf, len, s) fgets_unlocked (buf, len, s) | |
-#endif | |
-#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED | |
-# undef feof | |
-# define feof(s) feof_unlocked (s) | |
-#endif | |
- | |
- | |
-__libc_lock_define_initialized (static, lock) | |
- | |
- | |
-struct alias_map | |
-{ | |
- const char *alias; | |
- const char *value; | |
-}; | |
- | |
- | |
-#ifndef _LIBC | |
-# define libc_freeres_ptr(decl) decl | |
-#endif | |
- | |
-libc_freeres_ptr (static char *string_space); | |
-static size_t string_space_act; | |
-static size_t string_space_max; | |
-libc_freeres_ptr (static struct alias_map *map); | |
-static size_t nmap; | |
-static size_t maxmap; | |
- | |
- | |
-/* Prototypes for local functions. */ | |
-static size_t read_alias_file (const char *fname, int fname_len) | |
- internal_function; | |
-static int extend_alias_table (void); | |
-static int alias_compare (const struct alias_map *map1, | |
- const struct alias_map *map2); | |
- | |
- | |
-const char * | |
-_nl_expand_alias (const char *name) | |
-{ | |
- static const char *locale_alias_path; | |
- struct alias_map *retval; | |
- const char *result = NULL; | |
- size_t added; | |
- | |
- __libc_lock_lock (lock); | |
- | |
- if (locale_alias_path == NULL) | |
- locale_alias_path = LOCALE_ALIAS_PATH; | |
- | |
- do | |
- { | |
- struct alias_map item; | |
- | |
- item.alias = name; | |
- | |
- if (nmap > 0) | |
- retval = (struct alias_map *) bsearch (&item, map, nmap, | |
- sizeof (struct alias_map), | |
- (int (*) (const void *, | |
- const void *) | |
- ) alias_compare); | |
- else | |
- retval = NULL; | |
- | |
- /* We really found an alias. Return the value. */ | |
- if (retval != NULL) | |
- { | |
- result = retval->value; | |
- break; | |
- } | |
- | |
- /* Perhaps we can find another alias file. */ | |
- added = 0; | |
- while (added == 0 && locale_alias_path[0] != '\0') | |
- { | |
- const char *start; | |
- | |
- while (locale_alias_path[0] == PATH_SEPARATOR) | |
- ++locale_alias_path; | |
- start = locale_alias_path; | |
- | |
- while (locale_alias_path[0] != '\0' | |
- && locale_alias_path[0] != PATH_SEPARATOR) | |
- ++locale_alias_path; | |
- | |
- if (start < locale_alias_path) | |
- added = read_alias_file (start, locale_alias_path - start); | |
- } | |
- } | |
- while (added != 0); | |
- | |
- __libc_lock_unlock (lock); | |
- | |
- return result; | |
-} | |
- | |
- | |
-static size_t | |
-internal_function | |
-read_alias_file (const char *fname, int fname_len) | |
-{ | |
- FILE *fp; | |
- char *full_fname; | |
- size_t added; | |
- static const char aliasfile[] = "/locale.alias"; | |
- | |
- full_fname = (char *) alloca (fname_len + sizeof aliasfile); | |
-#ifdef HAVE_MEMPCPY | |
- mempcpy (mempcpy (full_fname, fname, fname_len), | |
- aliasfile, sizeof aliasfile); | |
-#else | |
- memcpy (full_fname, fname, fname_len); | |
- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); | |
-#endif | |
- | |
-#ifdef _LIBC | |
- /* Note the file is opened with cancellation in the I/O functions | |
- disabled. */ | |
- fp = fopen (relocate (full_fname), "rc"); | |
-#else | |
- fp = fopen (relocate (full_fname), "r"); | |
-#endif | |
- freea (full_fname); | |
- if (fp == NULL) | |
- return 0; | |
- | |
-#ifdef HAVE___FSETLOCKING | |
- /* No threads present. */ | |
- __fsetlocking (fp, FSETLOCKING_BYCALLER); | |
-#endif | |
- | |
- added = 0; | |
- while (!FEOF (fp)) | |
- { | |
- /* It is a reasonable approach to use a fix buffer here because | |
- a) we are only interested in the first two fields | |
- b) these fields must be usable as file names and so must not | |
- be that long | |
- We avoid a multi-kilobyte buffer here since this would use up | |
- stack space which we might not have if the program ran out of | |
- memory. */ | |
- char buf[400]; | |
- char *alias; | |
- char *value; | |
- char *cp; | |
- int complete_line; | |
- | |
- if (FGETS (buf, sizeof buf, fp) == NULL) | |
- /* EOF reached. */ | |
- break; | |
- | |
- /* Determine whether the line is complete. */ | |
- complete_line = strchr (buf, '\n') != NULL; | |
- | |
- cp = buf; | |
- /* Ignore leading white space. */ | |
- while (isspace ((unsigned char) cp[0])) | |
- ++cp; | |
- | |
- /* A leading '#' signals a comment line. */ | |
- if (cp[0] != '\0' && cp[0] != '#') | |
- { | |
- alias = cp++; | |
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) | |
- ++cp; | |
- /* Terminate alias name. */ | |
- if (cp[0] != '\0') | |
- *cp++ = '\0'; | |
- | |
- /* Now look for the beginning of the value. */ | |
- while (isspace ((unsigned char) cp[0])) | |
- ++cp; | |
- | |
- if (cp[0] != '\0') | |
- { | |
- value = cp++; | |
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) | |
- ++cp; | |
- /* Terminate value. */ | |
- if (cp[0] == '\n') | |
- { | |
- /* This has to be done to make the following test | |
- for the end of line possible. We are looking for | |
- the terminating '\n' which do not overwrite here. */ | |
- *cp++ = '\0'; | |
- *cp = '\n'; | |
- } | |
- else if (cp[0] != '\0') | |
- *cp++ = '\0'; | |
- | |
-#ifdef IN_LIBGLOCALE | |
- /* glibc's locale.alias contains entries for ja_JP and ko_KR | |
- that make it impossible to use a Japanese or Korean UTF-8 | |
- locale under the name "ja_JP" or "ko_KR". Ignore these | |
- entries. */ | |
- if (strchr (alias, '_') == NULL) | |
-#endif | |
- { | |
- size_t alias_len; | |
- size_t value_len; | |
- | |
- if (nmap >= maxmap) | |
- if (__builtin_expect (extend_alias_table (), 0)) | |
- goto out; | |
- | |
- alias_len = strlen (alias) + 1; | |
- value_len = strlen (value) + 1; | |
- | |
- if (string_space_act + alias_len + value_len > string_space_… | |
- { | |
- /* Increase size of memory pool. */ | |
- size_t new_size = (string_space_max | |
- + (alias_len + value_len > 1024 | |
- ? alias_len + value_len : 1024)); | |
- char *new_pool = (char *) realloc (string_space, new_siz… | |
- if (new_pool == NULL) | |
- goto out; | |
- | |
- if (__builtin_expect (string_space != new_pool, 0)) | |
- { | |
- size_t i; | |
- | |
- for (i = 0; i < nmap; i++) | |
- { | |
- map[i].alias += new_pool - string_space; | |
- map[i].value += new_pool - string_space; | |
- } | |
- } | |
- | |
- string_space = new_pool; | |
- string_space_max = new_size; | |
- } | |
- | |
- map[nmap].alias = | |
- (const char *) memcpy (&string_space[string_space_act], | |
- alias, alias_len); | |
- string_space_act += alias_len; | |
- | |
- map[nmap].value = | |
- (const char *) memcpy (&string_space[string_space_act], | |
- value, value_len); | |
- string_space_act += value_len; | |
- | |
- ++nmap; | |
- ++added; | |
- } | |
- } | |
- } | |
- | |
- /* Possibly not the whole line fits into the buffer. Ignore | |
- the rest of the line. */ | |
- if (! complete_line) | |
- do | |
- if (FGETS (buf, sizeof buf, fp) == NULL) | |
- /* Make sure the inner loop will be left. The outer loop | |
- will exit at the `feof' test. */ | |
- break; | |
- while (strchr (buf, '\n') == NULL); | |
- } | |
- | |
- out: | |
- /* Should we test for ferror()? I think we have to silently ignore | |
- errors. --drepper */ | |
- fclose (fp); | |
- | |
- if (added > 0) | |
- qsort (map, nmap, sizeof (struct alias_map), | |
- (int (*) (const void *, const void *)) alias_compare); | |
- | |
- return added; | |
-} | |
- | |
- | |
-static int | |
-extend_alias_table () | |
-{ | |
- size_t new_size; | |
- struct alias_map *new_map; | |
- | |
- new_size = maxmap == 0 ? 100 : 2 * maxmap; | |
- new_map = (struct alias_map *) realloc (map, (new_size | |
- * sizeof (struct alias_map))); | |
- if (new_map == NULL) | |
- /* Simply don't extend: we don't have any more core. */ | |
- return -1; | |
- | |
- map = new_map; | |
- maxmap = new_size; | |
- return 0; | |
-} | |
- | |
- | |
-static int | |
-alias_compare (const struct alias_map *map1, const struct alias_map *map2) | |
-{ | |
-#if defined _LIBC || defined HAVE_STRCASECMP | |
- return strcasecmp (map1->alias, map2->alias); | |
-#else | |
- const unsigned char *p1 = (const unsigned char *) map1->alias; | |
- const unsigned char *p2 = (const unsigned char *) map2->alias; | |
- unsigned char c1, c2; | |
- | |
- if (p1 == p2) | |
- return 0; | |
- | |
- do | |
- { | |
- /* I know this seems to be odd but the tolower() function in | |
- some systems libc cannot handle nonalpha characters. */ | |
- c1 = isupper (*p1) ? tolower (*p1) : *p1; | |
- c2 = isupper (*p2) ? tolower (*p2) : *p2; | |
- if (c1 == '\0') | |
- break; | |
- ++p1; | |
- ++p2; | |
- } | |
- while (c1 == c2); | |
- | |
- return c1 - c2; | |
-#endif | |
-} | |
diff --git a/intl/ngettext.c b/intl/ngettext.c | |
t@@ -1,65 +0,0 @@ | |
-/* Implementation of ngettext(3) function. | |
- Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#ifdef _LIBC | |
-# define __need_NULL | |
-# include <stddef.h> | |
-#else | |
-# include <stdlib.h> /* Just for NULL. */ | |
-#endif | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-#include <locale.h> | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define NGETTEXT __ngettext | |
-# define DCNGETTEXT __dcngettext | |
-#else | |
-# define NGETTEXT libintl_ngettext | |
-# define DCNGETTEXT libintl_dcngettext | |
-#endif | |
- | |
-/* Look up MSGID in the current default message catalog for the current | |
- LC_MESSAGES locale. If not found, returns MSGID itself (the default | |
- text). */ | |
-char * | |
-NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n) | |
-{ | |
- return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-weak_alias (__ngettext, ngettext); | |
-#endif | |
diff --git a/intl/plural.c b/intl/plural.c | |
t@@ -1,1961 +0,0 @@ | |
-/* A Bison parser, made by GNU Bison 2.3a. */ | |
- | |
-/* Skeleton implementation for Bison's Yacc-like parsers in C | |
- | |
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 | |
- Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify | |
- it under the terms of the GNU General Public License as published by | |
- the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
- GNU General Public License for more details. | |
- | |
- You should have received a copy of the GNU General Public License | |
- along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
- Boston, MA 02110-1301, USA. */ | |
- | |
-/* As a special exception, you may create a larger work that contains | |
- part or all of the Bison parser skeleton and distribute that work | |
- under terms of your choice, so long as that work isn't itself a | |
- parser generator using the skeleton or a modified version thereof | |
- as a parser skeleton. Alternatively, if you modify or redistribute | |
- the parser skeleton itself, you may (at your option) remove this | |
- special exception, which will cause the skeleton and the resulting | |
- Bison output files to be licensed under the GNU General Public | |
- License without this special exception. | |
- | |
- This special exception was added by the Free Software Foundation in | |
- version 2.2 of Bison. */ | |
- | |
-/* C LALR(1) parser skeleton written by Richard Stallman, by | |
- simplifying the original so-called "semantic" parser. */ | |
- | |
-/* All symbols defined below should begin with yy or YY, to avoid | |
- infringing on user name space. This should be done even for local | |
- variables, as they might otherwise be expanded by user macros. | |
- There are some unavoidable exceptions within include files to | |
- define necessary library symbols; they are noted "INFRINGES ON | |
- USER NAME SPACE" below. */ | |
- | |
-/* Identify Bison output. */ | |
-#define YYBISON 1 | |
- | |
-/* Bison version. */ | |
-#define YYBISON_VERSION "2.3a" | |
- | |
-/* Skeleton name. */ | |
-#define YYSKELETON_NAME "yacc.c" | |
- | |
-/* Pure parsers. */ | |
-#define YYPURE 1 | |
- | |
-/* Using locations. */ | |
-#define YYLSP_NEEDED 0 | |
- | |
-/* Substitute the variable and function names. */ | |
-#define yyparse __gettextparse | |
-#define yylex __gettextlex | |
-#define yyerror __gettexterror | |
-#define yylval __gettextlval | |
-#define yychar __gettextchar | |
-#define yydebug __gettextdebug | |
-#define yynerrs __gettextnerrs | |
- | |
- | |
-/* Copy the first part of user declarations. */ | |
-/* Line 164 of yacc.c. */ | |
-#line 1 "plural.y" | |
- | |
-/* Expression parsing for plural form selection. | |
- Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. | |
- Written by Ulrich Drepper <[email protected]>, 2000. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us | |
- to put this declaration at the beginning of the file. The declaration in | |
- bison's skeleton file comes too late. This must come before <config.h> | |
- because <config.h> may include arbitrary system headers. | |
- This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ | |
-#if defined _AIX && !defined __GNUC__ | |
- #pragma alloca | |
-#endif | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <stddef.h> | |
-#include <stdlib.h> | |
-#include <string.h> | |
-#include "plural-exp.h" | |
- | |
-/* The main function generated by the parser is called __gettextparse, | |
- but we want it to be called PLURAL_PARSE. */ | |
-#ifndef _LIBC | |
-# define __gettextparse PLURAL_PARSE | |
-#endif | |
- | |
-#define YYLEX_PARAM &((struct parse_args *) arg)->cp | |
-#define YYPARSE_PARAM arg | |
- | |
- | |
-/* Enabling traces. */ | |
-#ifndef YYDEBUG | |
-# define YYDEBUG 0 | |
-#endif | |
- | |
-/* Enabling verbose error messages. */ | |
-#ifdef YYERROR_VERBOSE | |
-# undef YYERROR_VERBOSE | |
-# define YYERROR_VERBOSE 1 | |
-#else | |
-# define YYERROR_VERBOSE 0 | |
-#endif | |
- | |
-/* Enabling the token table. */ | |
-#ifndef YYTOKEN_TABLE | |
-# define YYTOKEN_TABLE 0 | |
-#endif | |
- | |
- | |
-/* Tokens. */ | |
-#ifndef YYTOKENTYPE | |
-# define YYTOKENTYPE | |
- /* Put the tokens into the symbol table, so that GDB and other debuggers | |
- know about them. */ | |
- enum yytokentype { | |
- EQUOP2 = 258, | |
- CMPOP2 = 259, | |
- ADDOP2 = 260, | |
- MULOP2 = 261, | |
- NUMBER = 262 | |
- }; | |
-#endif | |
-/* Tokens. */ | |
-#define EQUOP2 258 | |
-#define CMPOP2 259 | |
-#define ADDOP2 260 | |
-#define MULOP2 261 | |
-#define NUMBER 262 | |
- | |
- | |
- | |
- | |
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED | |
-typedef union YYSTYPE | |
-{/* Line 191 of yacc.c. */ | |
-#line 51 "plural.y" | |
- | |
- unsigned long int num; | |
- enum expression_operator op; | |
- struct expression *exp; | |
-} | |
-/* Line 191 of yacc.c. */ | |
-#line 175 "plural.c" | |
- YYSTYPE; | |
-# define YYSTYPE_IS_TRIVIAL 1 | |
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */ | |
-# define YYSTYPE_IS_DECLARED 1 | |
-#endif | |
- | |
- | |
- | |
- | |
-/* Copy the second part of user declarations. */ | |
-/* Line 221 of yacc.c. */ | |
-#line 57 "plural.y" | |
- | |
-/* Prototypes for local functions. */ | |
-static int yylex (YYSTYPE *lval, const char **pexp); | |
-static void yyerror (const char *str); | |
- | |
-/* Allocation of expressions. */ | |
- | |
-static struct expression * | |
-new_exp (int nargs, enum expression_operator op, | |
- struct expression * const *args) | |
-{ | |
- int i; | |
- struct expression *newp; | |
- | |
- /* If any of the argument could not be malloc'ed, just return NULL. */ | |
- for (i = nargs - 1; i >= 0; i--) | |
- if (args[i] == NULL) | |
- goto fail; | |
- | |
- /* Allocate a new expression. */ | |
- newp = (struct expression *) malloc (sizeof (*newp)); | |
- if (newp != NULL) | |
- { | |
- newp->nargs = nargs; | |
- newp->operation = op; | |
- for (i = nargs - 1; i >= 0; i--) | |
- newp->val.args[i] = args[i]; | |
- return newp; | |
- } | |
- | |
- fail: | |
- for (i = nargs - 1; i >= 0; i--) | |
- FREE_EXPRESSION (args[i]); | |
- | |
- return NULL; | |
-} | |
- | |
-static inline struct expression * | |
-new_exp_0 (enum expression_operator op) | |
-{ | |
- return new_exp (0, op, NULL); | |
-} | |
- | |
-static inline struct expression * | |
-new_exp_1 (enum expression_operator op, struct expression *right) | |
-{ | |
- struct expression *args[1]; | |
- | |
- args[0] = right; | |
- return new_exp (1, op, args); | |
-} | |
- | |
-static struct expression * | |
-new_exp_2 (enum expression_operator op, struct expression *left, | |
- struct expression *right) | |
-{ | |
- struct expression *args[2]; | |
- | |
- args[0] = left; | |
- args[1] = right; | |
- return new_exp (2, op, args); | |
-} | |
- | |
-static inline struct expression * | |
-new_exp_3 (enum expression_operator op, struct expression *bexp, | |
- struct expression *tbranch, struct expression *fbranch) | |
-{ | |
- struct expression *args[3]; | |
- | |
- args[0] = bexp; | |
- args[1] = tbranch; | |
- args[2] = fbranch; | |
- return new_exp (3, op, args); | |
-} | |
- | |
- | |
-/* Line 221 of yacc.c. */ | |
-#line 265 "plural.c" | |
- | |
-#ifdef short | |
-# undef short | |
-#endif | |
- | |
-#ifdef YYTYPE_UINT8 | |
-typedef YYTYPE_UINT8 yytype_uint8; | |
-#else | |
-typedef unsigned char yytype_uint8; | |
-#endif | |
- | |
-#ifdef YYTYPE_INT8 | |
-typedef YYTYPE_INT8 yytype_int8; | |
-#elif (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-typedef signed char yytype_int8; | |
-#else | |
-typedef short int yytype_int8; | |
-#endif | |
- | |
-#ifdef YYTYPE_UINT16 | |
-typedef YYTYPE_UINT16 yytype_uint16; | |
-#else | |
-typedef unsigned short int yytype_uint16; | |
-#endif | |
- | |
-#ifdef YYTYPE_INT16 | |
-typedef YYTYPE_INT16 yytype_int16; | |
-#else | |
-typedef short int yytype_int16; | |
-#endif | |
- | |
-#ifndef YYSIZE_T | |
-# ifdef __SIZE_TYPE__ | |
-# define YYSIZE_T __SIZE_TYPE__ | |
-# elif defined size_t | |
-# define YYSIZE_T size_t | |
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ | |
-# define YYSIZE_T size_t | |
-# else | |
-# define YYSIZE_T unsigned int | |
-# endif | |
-#endif | |
- | |
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) | |
- | |
-#ifndef YY_ | |
-# if YYENABLE_NLS | |
-# if ENABLE_NLS | |
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ | |
-# define YY_(msgid) dgettext ("bison-runtime", msgid) | |
-# endif | |
-# endif | |
-# ifndef YY_ | |
-# define YY_(msgid) msgid | |
-# endif | |
-#endif | |
- | |
-/* Suppress unused-variable warnings by "using" E. */ | |
-#if ! defined lint || defined __GNUC__ | |
-# define YYUSE(e) ((void) (e)) | |
-#else | |
-# define YYUSE(e) /* empty */ | |
-#endif | |
- | |
-/* Identity function, used to suppress warnings about constant conditions. */ | |
-#ifndef lint | |
-# define YYID(n) (n) | |
-#else | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static int | |
-YYID (int yyi) | |
-#else | |
-static int | |
-YYID (yyi) | |
- int yyi; | |
-#endif | |
-{ | |
- return yyi; | |
-} | |
-#endif | |
- | |
-#if ! defined yyoverflow || YYERROR_VERBOSE | |
- | |
-/* The parser invokes alloca or malloc; define the necessary symbols. */ | |
- | |
-# ifdef YYSTACK_USE_ALLOCA | |
-# if YYSTACK_USE_ALLOCA | |
-# ifdef __GNUC__ | |
-# define YYSTACK_ALLOC __builtin_alloca | |
-# elif defined __BUILTIN_VA_ARG_INCR | |
-# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ | |
-# elif defined _AIX | |
-# define YYSTACK_ALLOC __alloca | |
-# elif defined _MSC_VER | |
-# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ | |
-# define alloca _alloca | |
-# else | |
-# define YYSTACK_ALLOC alloca | |
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || def… | |
- || defined __cplusplus || defined _MSC_VER) | |
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ | |
-# ifndef _STDLIB_H | |
-# define _STDLIB_H 1 | |
-# endif | |
-# endif | |
-# endif | |
-# endif | |
-# endif | |
- | |
-# ifdef YYSTACK_ALLOC | |
- /* Pacify GCC's `empty if-body' warning. */ | |
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) | |
-# ifndef YYSTACK_ALLOC_MAXIMUM | |
- /* The OS might guarantee only one guard page at the bottom of the stack, | |
- and a page size can be as small as 4096 bytes. So we cannot safely | |
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number | |
- to allow for a few compiler-allocated temporary stack slots. */ | |
-# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ | |
-# endif | |
-# else | |
-# define YYSTACK_ALLOC YYMALLOC | |
-# define YYSTACK_FREE YYFREE | |
-# ifndef YYSTACK_ALLOC_MAXIMUM | |
-# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM | |
-# endif | |
-# if (defined __cplusplus && ! defined _STDLIB_H \ | |
- && ! ((defined YYMALLOC || defined malloc) \ | |
- && (defined YYFREE || defined free))) | |
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ | |
-# ifndef _STDLIB_H | |
-# define _STDLIB_H 1 | |
-# endif | |
-# endif | |
-# ifndef YYMALLOC | |
-# define YYMALLOC malloc | |
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined… | |
- || defined __cplusplus || defined _MSC_VER) | |
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ | |
-# endif | |
-# endif | |
-# ifndef YYFREE | |
-# define YYFREE free | |
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined _… | |
- || defined __cplusplus || defined _MSC_VER) | |
-void free (void *); /* INFRINGES ON USER NAME SPACE */ | |
-# endif | |
-# endif | |
-# endif | |
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ | |
- | |
- | |
-#if (! defined yyoverflow \ | |
- && (! defined __cplusplus \ | |
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) | |
- | |
-/* A type that is properly aligned for any stack member. */ | |
-union yyalloc | |
-{ | |
- yytype_int16 yyss; | |
- YYSTYPE yyvs; | |
- }; | |
- | |
-/* The size of the maximum gap between one aligned stack and the next. */ | |
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) | |
- | |
-/* The size of an array large to enough to hold all stacks, each with | |
- N elements. */ | |
-# define YYSTACK_BYTES(N) \ | |
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ | |
- + YYSTACK_GAP_MAXIMUM) | |
- | |
-/* Copy COUNT objects from FROM to TO. The source and destination do | |
- not overlap. */ | |
-# ifndef YYCOPY | |
-# if defined __GNUC__ && 1 < __GNUC__ | |
-# define YYCOPY(To, From, Count) \ | |
- __builtin_memcpy (To, From, (Count) * sizeof (*(From))) | |
-# else | |
-# define YYCOPY(To, From, Count) \ | |
- do \ | |
- { \ | |
- YYSIZE_T yyi; \ | |
- for (yyi = 0; yyi < (Count); yyi++) \ | |
- (To)[yyi] = (From)[yyi]; \ | |
- } \ | |
- while (YYID (0)) | |
-# endif | |
-# endif | |
- | |
-/* Relocate STACK from its old location to the new one. The | |
- local variables YYSIZE and YYSTACKSIZE give the old and new number of | |
- elements in the stack, and YYPTR gives the new location of the | |
- stack. Advance YYPTR to a properly aligned location for the next | |
- stack. */ | |
-# define YYSTACK_RELOCATE(Stack) \ | |
- do \ | |
- { … | |
- YYSIZE_T yynewbytes; \ | |
- YYCOPY (&yyptr->Stack, Stack, yysize); \ | |
- Stack = &yyptr->Stack; \ | |
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ | |
- yyptr += yynewbytes / sizeof (*yyptr); \ | |
- } … | |
- while (YYID (0)) | |
- | |
-#endif | |
- | |
-/* YYFINAL -- State number of the termination state. */ | |
-#define YYFINAL 9 | |
-/* YYLAST -- Last index in YYTABLE. */ | |
-#define YYLAST 54 | |
- | |
-/* YYNTOKENS -- Number of terminals. */ | |
-#define YYNTOKENS 16 | |
-/* YYNNTS -- Number of nonterminals. */ | |
-#define YYNNTS 3 | |
-/* YYNRULES -- Number of rules. */ | |
-#define YYNRULES 13 | |
-/* YYNRULES -- Number of states. */ | |
-#define YYNSTATES 27 | |
- | |
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ | |
-#define YYUNDEFTOK 2 | |
-#define YYMAXUTOK 262 | |
- | |
-#define YYTRANSLATE(YYX) \ | |
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) | |
- | |
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ | |
-static const yytype_uint8 yytranslate[] = | |
-{ | |
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, | |
- 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, | |
- 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
- 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, | |
- 8, 9, 11 | |
-}; | |
- | |
-#if YYDEBUG | |
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in | |
- YYRHS. */ | |
-static const yytype_uint8 yyprhs[] = | |
-{ | |
- 0, 0, 3, 5, 11, 15, 19, 23, 27, 31, | |
- 35, 38, 40, 42 | |
-}; | |
- | |
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */ | |
-static const yytype_int8 yyrhs[] = | |
-{ | |
- 17, 0, -1, 18, -1, 18, 3, 18, 12, 18, | |
- -1, 18, 4, 18, -1, 18, 5, 18, -1, 18, | |
- 6, 18, -1, 18, 7, 18, -1, 18, 8, 18, | |
- -1, 18, 9, 18, -1, 10, 18, -1, 13, -1, | |
- 11, -1, 14, 18, 15, -1 | |
-}; | |
- | |
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ | |
-static const yytype_uint8 yyrline[] = | |
-{ | |
- 0, 154, 154, 162, 166, 170, 174, 178, 182, 186, | |
- 190, 194, 198, 203 | |
-}; | |
-#endif | |
- | |
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE | |
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. | |
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */ | |
-static const char *const yytname[] = | |
-{ | |
- "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", | |
- "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", | |
- "$accept", "start", "exp", 0 | |
-}; | |
-#endif | |
- | |
-# ifdef YYPRINT | |
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to | |
- token YYLEX-NUM. */ | |
-static const yytype_uint16 yytoknum[] = | |
-{ | |
- 0, 256, 257, 63, 124, 38, 258, 259, 260, 261, | |
- 33, 262, 58, 110, 40, 41 | |
-}; | |
-# endif | |
- | |
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ | |
-static const yytype_uint8 yyr1[] = | |
-{ | |
- 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, | |
- 18, 18, 18, 18 | |
-}; | |
- | |
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ | |
-static const yytype_uint8 yyr2[] = | |
-{ | |
- 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, | |
- 2, 1, 1, 3 | |
-}; | |
- | |
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state | |
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero | |
- means the default is an error. */ | |
-static const yytype_uint8 yydefact[] = | |
-{ | |
- 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, | |
- 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, | |
- 5, 6, 7, 8, 9, 0, 3 | |
-}; | |
- | |
-/* YYDEFGOTO[NTERM-NUM]. */ | |
-static const yytype_int8 yydefgoto[] = | |
-{ | |
- -1, 5, 6 | |
-}; | |
- | |
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing | |
- STATE-NUM. */ | |
-#define YYPACT_NINF -10 | |
-static const yytype_int8 yypact[] = | |
-{ | |
- -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, | |
- -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, | |
- 45, 18, -2, 14, -10, -9, 36 | |
-}; | |
- | |
-/* YYPGOTO[NTERM-NUM]. */ | |
-static const yytype_int8 yypgoto[] = | |
-{ | |
- -10, -10, -1 | |
-}; | |
- | |
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If | |
- positive, shift that token. If negative, reduce the rule which | |
- number is the opposite. If zero, do what YYDEFACT says. | |
- If YYTABLE_NINF, syntax error. */ | |
-#define YYTABLE_NINF -1 | |
-static const yytype_uint8 yytable[] = | |
-{ | |
- 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, | |
- 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, | |
- 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, | |
- 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, | |
- 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, | |
- 16, 13, 14, 15, 16 | |
-}; | |
- | |
-static const yytype_int8 yycheck[] = | |
-{ | |
- 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, | |
- 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, | |
- 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, | |
- 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, | |
- 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, | |
- 9, 6, 7, 8, 9 | |
-}; | |
- | |
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing | |
- symbol of state STATE-NUM. */ | |
-static const yytype_uint8 yystos[] = | |
-{ | |
- 0, 10, 11, 13, 14, 17, 18, 18, 18, 0, | |
- 3, 4, 5, 6, 7, 8, 9, 15, 18, 18, | |
- 18, 18, 18, 18, 18, 12, 18 | |
-}; | |
- | |
-#define yyerrok (yyerrstatus = 0) | |
-#define yyclearin (yychar = YYEMPTY) | |
-#define YYEMPTY (-2) | |
-#define YYEOF 0 | |
- | |
-#define YYACCEPT goto yyacceptlab | |
-#define YYABORT goto yyabortlab | |
-#define YYERROR goto yyerrorlab | |
- | |
- | |
-/* Like YYERROR except do call yyerror. This remains here temporarily | |
- to ease the transition to the new meaning of YYERROR, for GCC. | |
- Once GCC version 2 has supplanted version 1, this can go. */ | |
- | |
-#define YYFAIL goto yyerrlab | |
- | |
-#define YYRECOVERING() (!!yyerrstatus) | |
- | |
-#define YYBACKUP(Token, Value) \ | |
-do \ | |
- if (yychar == YYEMPTY && yylen == 1) \ | |
- { \ | |
- yychar = (Token); \ | |
- yylval = (Value); \ | |
- yytoken = YYTRANSLATE (yychar); \ | |
- YYPOPSTACK (1); \ | |
- goto yybackup; \ | |
- } \ | |
- else \ | |
- { \ | |
- yyerror (YY_("syntax error: cannot back up")); \ | |
- YYERROR; \ | |
- } \ | |
-while (YYID (0)) | |
- | |
- | |
-#define YYTERROR 1 | |
-#define YYERRCODE 256 | |
- | |
- | |
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. | |
- If N is 0, then set CURRENT to the empty location which ends | |
- the previous symbol: RHS[0] (always defined). */ | |
- | |
-#define YYRHSLOC(Rhs, K) ((Rhs)[K]) | |
-#ifndef YYLLOC_DEFAULT | |
-# define YYLLOC_DEFAULT(Current, Rhs, N) \ | |
- do \ | |
- if (YYID (N)) \ | |
- { \ | |
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ | |
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ | |
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; … | |
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ | |
- } \ | |
- else \ | |
- { \ | |
- (Current).first_line = (Current).last_line = \ | |
- YYRHSLOC (Rhs, 0).last_line; \ | |
- (Current).first_column = (Current).last_column = \ | |
- YYRHSLOC (Rhs, 0).last_column; \ | |
- } \ | |
- while (YYID (0)) | |
-#endif | |
- | |
- | |
-/* YY_LOCATION_PRINT -- Print the location on the stream. | |
- This macro was not mandated originally: define only if we know | |
- we won't break user code: when these are the locations we know. */ | |
- | |
-#ifndef YY_LOCATION_PRINT | |
-# if YYLTYPE_IS_TRIVIAL | |
-# define YY_LOCATION_PRINT(File, Loc) \ | |
- fprintf (File, "%d.%d-%d.%d", \ | |
- (Loc).first_line, (Loc).first_column, \ | |
- (Loc).last_line, (Loc).last_column) | |
-# else | |
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0) | |
-# endif | |
-#endif | |
- | |
- | |
-/* YYLEX -- calling `yylex' with the right arguments. */ | |
- | |
-#ifdef YYLEX_PARAM | |
-# define YYLEX yylex (&yylval, YYLEX_PARAM) | |
-#else | |
-# define YYLEX yylex (&yylval) | |
-#endif | |
- | |
-/* Enable debugging if requested. */ | |
-#if YYDEBUG | |
- | |
-# ifndef YYFPRINTF | |
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ | |
-# define YYFPRINTF fprintf | |
-# endif | |
- | |
-# define YYDPRINTF(Args) \ | |
-do { \ | |
- if (yydebug) \ | |
- YYFPRINTF Args; \ | |
-} while (YYID (0)) | |
- | |
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) … | |
-do { \ | |
- if (yydebug) … | |
- { … | |
- YYFPRINTF (stderr, "%s ", Title); … | |
- yy_symbol_print (stderr, … | |
- Type, Value); \ | |
- YYFPRINTF (stderr, "\n"); … | |
- } … | |
-} while (YYID (0)) | |
- | |
- | |
-/*--------------------------------. | |
-| Print this symbol on YYOUTPUT. | | |
-`--------------------------------*/ | |
- | |
-/*ARGSUSED*/ | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static void | |
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyval… | |
-#else | |
-static void | |
-yy_symbol_value_print (yyoutput, yytype, yyvaluep) | |
- FILE *yyoutput; | |
- int yytype; | |
- YYSTYPE const * const yyvaluep; | |
-#endif | |
-{ | |
- if (!yyvaluep) | |
- return; | |
-# ifdef YYPRINT | |
- if (yytype < YYNTOKENS) | |
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); | |
-# else | |
- YYUSE (yyoutput); | |
-# endif | |
- switch (yytype) | |
- { | |
- default: | |
- break; | |
- } | |
-} | |
- | |
- | |
-/*--------------------------------. | |
-| Print this symbol on YYOUTPUT. | | |
-`--------------------------------*/ | |
- | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static void | |
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) | |
-#else | |
-static void | |
-yy_symbol_print (yyoutput, yytype, yyvaluep) | |
- FILE *yyoutput; | |
- int yytype; | |
- YYSTYPE const * const yyvaluep; | |
-#endif | |
-{ | |
- if (yytype < YYNTOKENS) | |
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); | |
- else | |
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); | |
- | |
- yy_symbol_value_print (yyoutput, yytype, yyvaluep); | |
- YYFPRINTF (yyoutput, ")"); | |
-} | |
- | |
-/*------------------------------------------------------------------. | |
-| yy_stack_print -- Print the state stack from its BOTTOM up to its | | |
-| TOP (included). | | |
-`------------------------------------------------------------------*/ | |
- | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static void | |
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) | |
-#else | |
-static void | |
-yy_stack_print (yybottom, yytop) | |
- yytype_int16 *yybottom; | |
- yytype_int16 *yytop; | |
-#endif | |
-{ | |
- YYFPRINTF (stderr, "Stack now"); | |
- for (; yybottom <= yytop; yybottom++) | |
- { | |
- int yybot = *yybottom; | |
- YYFPRINTF (stderr, " %d", yybot); | |
- } | |
- YYFPRINTF (stderr, "\n"); | |
-} | |
- | |
-# define YY_STACK_PRINT(Bottom, Top) \ | |
-do { \ | |
- if (yydebug) \ | |
- yy_stack_print ((Bottom), (Top)); \ | |
-} while (YYID (0)) | |
- | |
- | |
-/*------------------------------------------------. | |
-| Report that the YYRULE is going to be reduced. | | |
-`------------------------------------------------*/ | |
- | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static void | |
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule) | |
-#else | |
-static void | |
-yy_reduce_print (yyvsp, yyrule) | |
- YYSTYPE *yyvsp; | |
- int yyrule; | |
-#endif | |
-{ | |
- int yynrhs = yyr2[yyrule]; | |
- int yyi; | |
- unsigned long int yylno = yyrline[yyrule]; | |
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", | |
- yyrule - 1, yylno); | |
- /* The symbols being reduced. */ | |
- for (yyi = 0; yyi < yynrhs; yyi++) | |
- { | |
- fprintf (stderr, " $%d = ", yyi + 1); | |
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], | |
- &(yyvsp[(yyi + 1) - (yynrhs)]) | |
- ); | |
- fprintf (stderr, "\n"); | |
- } | |
-} | |
- | |
-# define YY_REDUCE_PRINT(Rule) \ | |
-do { \ | |
- if (yydebug) \ | |
- yy_reduce_print (yyvsp, Rule); \ | |
-} while (YYID (0)) | |
- | |
-/* Nonzero means print parse trace. It is left uninitialized so that | |
- multiple parsers can coexist. */ | |
-int yydebug; | |
-#else /* !YYDEBUG */ | |
-# define YYDPRINTF(Args) | |
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) | |
-# define YY_STACK_PRINT(Bottom, Top) | |
-# define YY_REDUCE_PRINT(Rule) | |
-#endif /* !YYDEBUG */ | |
- | |
- | |
-/* YYINITDEPTH -- initial size of the parser's stacks. */ | |
-#ifndef YYINITDEPTH | |
-# define YYINITDEPTH 200 | |
-#endif | |
- | |
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only | |
- if the built-in stack extension method is used). | |
- | |
- Do not make this value too large; the results are undefined if | |
- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) | |
- evaluated with infinite-precision integer arithmetic. */ | |
- | |
-#ifndef YYMAXDEPTH | |
-# define YYMAXDEPTH 10000 | |
-#endif | |
- | |
- | |
- | |
-#if YYERROR_VERBOSE | |
- | |
-# ifndef yystrlen | |
-# if defined __GLIBC__ && defined _STRING_H | |
-# define yystrlen strlen | |
-# else | |
-/* Return the length of YYSTR. */ | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static YYSIZE_T | |
-yystrlen (const char *yystr) | |
-#else | |
-static YYSIZE_T | |
-yystrlen (yystr) | |
- const char *yystr; | |
-#endif | |
-{ | |
- YYSIZE_T yylen; | |
- for (yylen = 0; yystr[yylen]; yylen++) | |
- continue; | |
- return yylen; | |
-} | |
-# endif | |
-# endif | |
- | |
-# ifndef yystpcpy | |
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE | |
-# define yystpcpy stpcpy | |
-# else | |
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in | |
- YYDEST. */ | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static char * | |
-yystpcpy (char *yydest, const char *yysrc) | |
-#else | |
-static char * | |
-yystpcpy (yydest, yysrc) | |
- char *yydest; | |
- const char *yysrc; | |
-#endif | |
-{ | |
- char *yyd = yydest; | |
- const char *yys = yysrc; | |
- | |
- while ((*yyd++ = *yys++) != '\0') | |
- continue; | |
- | |
- return yyd - 1; | |
-} | |
-# endif | |
-# endif | |
- | |
-# ifndef yytnamerr | |
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary | |
- quotes and backslashes, so that it's suitable for yyerror. The | |
- heuristic is that double-quoting is unnecessary unless the string | |
- contains an apostrophe, a comma, or backslash (other than | |
- backslash-backslash). YYSTR is taken from yytname. If YYRES is | |
- null, do not copy; instead, return the length of what the result | |
- would have been. */ | |
-static YYSIZE_T | |
-yytnamerr (char *yyres, const char *yystr) | |
-{ | |
- if (*yystr == '"') | |
- { | |
- YYSIZE_T yyn = 0; | |
- char const *yyp = yystr; | |
- | |
- for (;;) | |
- switch (*++yyp) | |
- { | |
- case '\'': | |
- case ',': | |
- goto do_not_strip_quotes; | |
- | |
- case '\\': | |
- if (*++yyp != '\\') | |
- goto do_not_strip_quotes; | |
- /* Fall through. */ | |
- default: | |
- if (yyres) | |
- yyres[yyn] = *yyp; | |
- yyn++; | |
- break; | |
- | |
- case '"': | |
- if (yyres) | |
- yyres[yyn] = '\0'; | |
- return yyn; | |
- } | |
- do_not_strip_quotes: ; | |
- } | |
- | |
- if (! yyres) | |
- return yystrlen (yystr); | |
- | |
- return yystpcpy (yyres, yystr) - yyres; | |
-} | |
-# endif | |
- | |
-/* Copy into YYRESULT an error message about the unexpected token | |
- YYCHAR while in state YYSTATE. Return the number of bytes copied, | |
- including the terminating null byte. If YYRESULT is null, do not | |
- copy anything; just return the number of bytes that would be | |
- copied. As a special case, return 0 if an ordinary "syntax error" | |
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during | |
- size calculation. */ | |
-static YYSIZE_T | |
-yysyntax_error (char *yyresult, int yystate, int yychar) | |
-{ | |
- int yyn = yypact[yystate]; | |
- | |
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) | |
- return 0; | |
- else | |
- { | |
- int yytype = YYTRANSLATE (yychar); | |
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); | |
- YYSIZE_T yysize = yysize0; | |
- YYSIZE_T yysize1; | |
- int yysize_overflow = 0; | |
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; | |
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; | |
- int yyx; | |
- | |
-# if 0 | |
- /* This is so xgettext sees the translatable formats that are | |
- constructed on the fly. */ | |
- YY_("syntax error, unexpected %s"); | |
- YY_("syntax error, unexpected %s, expecting %s"); | |
- YY_("syntax error, unexpected %s, expecting %s or %s"); | |
- YY_("syntax error, unexpected %s, expecting %s or %s or %s"); | |
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); | |
-# endif | |
- char *yyfmt; | |
- char const *yyf; | |
- static char const yyunexpected[] = "syntax error, unexpected %s"; | |
- static char const yyexpecting[] = ", expecting %s"; | |
- static char const yyor[] = " or %s"; | |
- char yyformat[sizeof yyunexpected | |
- + sizeof yyexpecting - 1 | |
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) | |
- * (sizeof yyor - 1))]; | |
- char const *yyprefix = yyexpecting; | |
- | |
- /* Start YYX at -YYN if negative to avoid negative indexes in | |
- YYCHECK. */ | |
- int yyxbegin = yyn < 0 ? -yyn : 0; | |
- | |
- /* Stay within bounds of both yycheck and yytname. */ | |
- int yychecklim = YYLAST - yyn + 1; | |
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; | |
- int yycount = 1; | |
- | |
- yyarg[0] = yytname[yytype]; | |
- yyfmt = yystpcpy (yyformat, yyunexpected); | |
- | |
- for (yyx = yyxbegin; yyx < yyxend; ++yyx) | |
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) | |
- { | |
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) | |
- { | |
- yycount = 1; | |
- yysize = yysize0; | |
- yyformat[sizeof yyunexpected - 1] = '\0'; | |
- break; | |
- } | |
- yyarg[yycount++] = yytname[yyx]; | |
- yysize1 = yysize + yytnamerr (0, yytname[yyx]); | |
- yysize_overflow |= (yysize1 < yysize); | |
- yysize = yysize1; | |
- yyfmt = yystpcpy (yyfmt, yyprefix); | |
- yyprefix = yyor; | |
- } | |
- | |
- yyf = YY_(yyformat); | |
- yysize1 = yysize + yystrlen (yyf); | |
- yysize_overflow |= (yysize1 < yysize); | |
- yysize = yysize1; | |
- | |
- if (yysize_overflow) | |
- return YYSIZE_MAXIMUM; | |
- | |
- if (yyresult) | |
- { | |
- /* Avoid sprintf, as that infringes on the user's name space. | |
- Don't have undefined behavior even if the translation | |
- produced a string with the wrong number of "%s"s. */ | |
- char *yyp = yyresult; | |
- int yyi = 0; | |
- while ((*yyp = *yyf) != '\0') | |
- { | |
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) | |
- { | |
- yyp += yytnamerr (yyp, yyarg[yyi++]); | |
- yyf += 2; | |
- } | |
- else | |
- { | |
- yyp++; | |
- yyf++; | |
- } | |
- } | |
- } | |
- return yysize; | |
- } | |
-} | |
-#endif /* YYERROR_VERBOSE */ | |
- | |
- | |
-/*-----------------------------------------------. | |
-| Release the memory associated to this symbol. | | |
-`-----------------------------------------------*/ | |
- | |
-/*ARGSUSED*/ | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-static void | |
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) | |
-#else | |
-static void | |
-yydestruct (yymsg, yytype, yyvaluep) | |
- const char *yymsg; | |
- int yytype; | |
- YYSTYPE *yyvaluep; | |
-#endif | |
-{ | |
- YYUSE (yyvaluep); | |
- | |
- if (!yymsg) | |
- yymsg = "Deleting"; | |
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); | |
- | |
- switch (yytype) | |
- { | |
- | |
- default: | |
- break; | |
- } | |
-} | |
- | |
- | |
-/* Prevent warnings from -Wmissing-prototypes. */ | |
- | |
-#ifdef YYPARSE_PARAM | |
-#if defined __STDC__ || defined __cplusplus | |
-int yyparse (void *YYPARSE_PARAM); | |
-#else | |
-int yyparse (); | |
-#endif | |
-#else /* ! YYPARSE_PARAM */ | |
-#if defined __STDC__ || defined __cplusplus | |
-int yyparse (void); | |
-#else | |
-int yyparse (); | |
-#endif | |
-#endif /* ! YYPARSE_PARAM */ | |
- | |
- | |
- | |
- | |
- | |
- | |
-/*----------. | |
-| yyparse. | | |
-`----------*/ | |
- | |
-#ifdef YYPARSE_PARAM | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-int | |
-yyparse (void *YYPARSE_PARAM) | |
-#else | |
-int | |
-yyparse (YYPARSE_PARAM) | |
- void *YYPARSE_PARAM; | |
-#endif | |
-#else /* ! YYPARSE_PARAM */ | |
-#if (defined __STDC__ || defined __C99__FUNC__ \ | |
- || defined __cplusplus || defined _MSC_VER) | |
-int | |
-yyparse (void) | |
-#else | |
-int | |
-yyparse () | |
- | |
-#endif | |
-#endif | |
-{ | |
- /* The lookahead symbol. */ | |
-int yychar; | |
- | |
-/* The semantic value of the lookahead symbol. */ | |
-YYSTYPE yylval; | |
- | |
-/* Number of syntax errors so far. */ | |
-int yynerrs; | |
- | |
- int yystate; | |
- int yyn; | |
- int yyresult; | |
- /* Number of tokens to shift before error messages enabled. */ | |
- int yyerrstatus; | |
- /* Lookahead token as an internal (translated) token number. */ | |
- int yytoken = 0; | |
-#if YYERROR_VERBOSE | |
- /* Buffer for error messages, and its allocated size. */ | |
- char yymsgbuf[128]; | |
- char *yymsg = yymsgbuf; | |
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf; | |
-#endif | |
- | |
- /* Three stacks and their tools: | |
- `yyss': related to states, | |
- `yyvs': related to semantic values, | |
- `yyls': related to locations. | |
- | |
- Refer to the stacks thru separate pointers, to allow yyoverflow | |
- to reallocate them elsewhere. */ | |
- | |
- /* The state stack. */ | |
- yytype_int16 yyssa[YYINITDEPTH]; | |
- yytype_int16 *yyss = yyssa; | |
- yytype_int16 *yyssp; | |
- | |
- /* The semantic value stack. */ | |
- YYSTYPE yyvsa[YYINITDEPTH]; | |
- YYSTYPE *yyvs = yyvsa; | |
- YYSTYPE *yyvsp; | |
- | |
- | |
- | |
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) | |
- | |
- YYSIZE_T yystacksize = YYINITDEPTH; | |
- | |
- /* The variables used to return semantic value and location from the | |
- action routines. */ | |
- YYSTYPE yyval; | |
- | |
- | |
- /* The number of symbols on the RHS of the reduced rule. | |
- Keep to zero when no symbol should be popped. */ | |
- int yylen = 0; | |
- | |
- YYDPRINTF ((stderr, "Starting parse\n")); | |
- | |
- yystate = 0; | |
- yyerrstatus = 0; | |
- yynerrs = 0; | |
- yychar = YYEMPTY; /* Cause a token to be read. */ | |
- | |
- /* Initialize stack pointers. | |
- Waste one element of value and location stack | |
- so that they stay on the same level as the state stack. | |
- The wasted elements are never initialized. */ | |
- | |
- yyssp = yyss; | |
- yyvsp = yyvs; | |
- | |
- goto yysetstate; | |
- | |
-/*------------------------------------------------------------. | |
-| yynewstate -- Push a new state, which is found in yystate. | | |
-`------------------------------------------------------------*/ | |
- yynewstate: | |
- /* In all cases, when you get here, the value and location stacks | |
- have just been pushed. So pushing a state here evens the stacks. */ | |
- yyssp++; | |
- | |
- yysetstate: | |
- *yyssp = yystate; | |
- | |
- if (yyss + yystacksize - 1 <= yyssp) | |
- { | |
- /* Get the current used size of the three stacks, in elements. */ | |
- YYSIZE_T yysize = yyssp - yyss + 1; | |
- | |
-#ifdef yyoverflow | |
- { | |
- /* Give user a chance to reallocate the stack. Use copies of | |
- these so that the &'s don't force the real ones into | |
- memory. */ | |
- YYSTYPE *yyvs1 = yyvs; | |
- yytype_int16 *yyss1 = yyss; | |
- | |
- | |
- /* Each stack pointer address is followed by the size of the | |
- data in use in that stack, in bytes. This used to be a | |
- conditional around just the two extra args, but that might | |
- be undefined if yyoverflow is a macro. */ | |
- yyoverflow (YY_("memory exhausted"), | |
- &yyss1, yysize * sizeof (*yyssp), | |
- &yyvs1, yysize * sizeof (*yyvsp), | |
- | |
- &yystacksize); | |
- | |
- yyss = yyss1; | |
- yyvs = yyvs1; | |
- } | |
-#else /* no yyoverflow */ | |
-# ifndef YYSTACK_RELOCATE | |
- goto yyexhaustedlab; | |
-# else | |
- /* Extend the stack our own way. */ | |
- if (YYMAXDEPTH <= yystacksize) | |
- goto yyexhaustedlab; | |
- yystacksize *= 2; | |
- if (YYMAXDEPTH < yystacksize) | |
- yystacksize = YYMAXDEPTH; | |
- | |
- { | |
- yytype_int16 *yyss1 = yyss; | |
- union yyalloc *yyptr = | |
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); | |
- if (! yyptr) | |
- goto yyexhaustedlab; | |
- YYSTACK_RELOCATE (yyss); | |
- YYSTACK_RELOCATE (yyvs); | |
- | |
-# undef YYSTACK_RELOCATE | |
- if (yyss1 != yyssa) | |
- YYSTACK_FREE (yyss1); | |
- } | |
-# endif | |
-#endif /* no yyoverflow */ | |
- | |
- yyssp = yyss + yysize - 1; | |
- yyvsp = yyvs + yysize - 1; | |
- | |
- | |
- YYDPRINTF ((stderr, "Stack size increased to %lu\n", | |
- (unsigned long int) yystacksize)); | |
- | |
- if (yyss + yystacksize - 1 <= yyssp) | |
- YYABORT; | |
- } | |
- | |
- YYDPRINTF ((stderr, "Entering state %d\n", yystate)); | |
- | |
- if (yystate == YYFINAL) | |
- YYACCEPT; | |
- | |
- goto yybackup; | |
- | |
-/*-----------. | |
-| yybackup. | | |
-`-----------*/ | |
-yybackup: | |
- | |
- /* Do appropriate processing given the current state. Read a | |
- lookahead token if we need one and don't already have one. */ | |
- | |
- /* First try to decide what to do without reference to lookahead token. */ | |
- yyn = yypact[yystate]; | |
- if (yyn == YYPACT_NINF) | |
- goto yydefault; | |
- | |
- /* Not known => get a lookahead token if don't already have one. */ | |
- | |
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ | |
- if (yychar == YYEMPTY) | |
- { | |
- YYDPRINTF ((stderr, "Reading a token: ")); | |
- yychar = YYLEX; | |
- } | |
- | |
- if (yychar <= YYEOF) | |
- { | |
- yychar = yytoken = YYEOF; | |
- YYDPRINTF ((stderr, "Now at end of input.\n")); | |
- } | |
- else | |
- { | |
- yytoken = YYTRANSLATE (yychar); | |
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); | |
- } | |
- | |
- /* If the proper action on seeing token YYTOKEN is to reduce or to | |
- detect an error, take that action. */ | |
- yyn += yytoken; | |
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) | |
- goto yydefault; | |
- yyn = yytable[yyn]; | |
- if (yyn <= 0) | |
- { | |
- if (yyn == 0 || yyn == YYTABLE_NINF) | |
- goto yyerrlab; | |
- yyn = -yyn; | |
- goto yyreduce; | |
- } | |
- | |
- /* Count tokens shifted since error; after three, turn off error | |
- status. */ | |
- if (yyerrstatus) | |
- yyerrstatus--; | |
- | |
- /* Shift the lookahead token. */ | |
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); | |
- | |
- /* Discard the shifted token. */ | |
- yychar = YYEMPTY; | |
- | |
- yystate = yyn; | |
- *++yyvsp = yylval; | |
- | |
- goto yynewstate; | |
- | |
- | |
-/*-----------------------------------------------------------. | |
-| yydefault -- do the default action for the current state. | | |
-`-----------------------------------------------------------*/ | |
-yydefault: | |
- yyn = yydefact[yystate]; | |
- if (yyn == 0) | |
- goto yyerrlab; | |
- goto yyreduce; | |
- | |
- | |
-/*-----------------------------. | |
-| yyreduce -- Do a reduction. | | |
-`-----------------------------*/ | |
-yyreduce: | |
- /* yyn is the number of a rule to reduce with. */ | |
- yylen = yyr2[yyn]; | |
- | |
- /* If YYLEN is nonzero, implement the default value of the action: | |
- `$$ = $1'. | |
- | |
- Otherwise, the following line sets YYVAL to garbage. | |
- This behavior is undocumented and Bison | |
- users should not rely upon it. Assigning to YYVAL | |
- unconditionally makes the parser a bit smaller, and it avoids a | |
- GCC warning that YYVAL may be used uninitialized. */ | |
- yyval = yyvsp[1-yylen]; | |
- | |
- | |
- YY_REDUCE_PRINT (yyn); | |
- switch (yyn) | |
- { | |
- case 2: | |
-/* Line 1269 of yacc.c. */ | |
-#line 155 "plural.y" | |
- { | |
- if ((yyvsp[(1) - (1)].exp) == NULL) | |
- YYABORT; | |
- ((struct parse_args *) arg)->res = (yyvsp[(1) - (1)].exp); | |
- } | |
- break; | |
- | |
- case 3: | |
-/* Line 1269 of yacc.c. */ | |
-#line 163 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_3 (qmop, (yyvsp[(1) - (5)].exp), (yyvsp[(3) … | |
- } | |
- break; | |
- | |
- case 4: | |
-/* Line 1269 of yacc.c. */ | |
-#line 167 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_2 (lor, (yyvsp[(1) - (3)].exp), (yyvsp[(3) -… | |
- } | |
- break; | |
- | |
- case 5: | |
-/* Line 1269 of yacc.c. */ | |
-#line 171 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_2 (land, (yyvsp[(1) - (3)].exp), (yyvsp[(3) … | |
- } | |
- break; | |
- | |
- case 6: | |
-/* Line 1269 of yacc.c. */ | |
-#line 175 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].… | |
- } | |
- break; | |
- | |
- case 7: | |
-/* Line 1269 of yacc.c. */ | |
-#line 179 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].… | |
- } | |
- break; | |
- | |
- case 8: | |
-/* Line 1269 of yacc.c. */ | |
-#line 183 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].… | |
- } | |
- break; | |
- | |
- case 9: | |
-/* Line 1269 of yacc.c. */ | |
-#line 187 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].… | |
- } | |
- break; | |
- | |
- case 10: | |
-/* Line 1269 of yacc.c. */ | |
-#line 191 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_1 (lnot, (yyvsp[(2) - (2)].exp)); | |
- } | |
- break; | |
- | |
- case 11: | |
-/* Line 1269 of yacc.c. */ | |
-#line 195 "plural.y" | |
- { | |
- (yyval.exp) = new_exp_0 (var); | |
- } | |
- break; | |
- | |
- case 12: | |
-/* Line 1269 of yacc.c. */ | |
-#line 199 "plural.y" | |
- { | |
- if (((yyval.exp) = new_exp_0 (num)) != NULL) | |
- (yyval.exp)->val.num = (yyvsp[(1) - (1)].num); | |
- } | |
- break; | |
- | |
- case 13: | |
-/* Line 1269 of yacc.c. */ | |
-#line 204 "plural.y" | |
- { | |
- (yyval.exp) = (yyvsp[(2) - (3)].exp); | |
- } | |
- break; | |
- | |
- | |
-/* Line 1269 of yacc.c. */ | |
-#line 1572 "plural.c" | |
- default: break; | |
- } | |
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); | |
- | |
- YYPOPSTACK (yylen); | |
- yylen = 0; | |
- YY_STACK_PRINT (yyss, yyssp); | |
- | |
- *++yyvsp = yyval; | |
- | |
- | |
- /* Now `shift' the result of the reduction. Determine what state | |
- that goes to, based on the state we popped back to and the rule | |
- number reduced by. */ | |
- | |
- yyn = yyr1[yyn]; | |
- | |
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; | |
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) | |
- yystate = yytable[yystate]; | |
- else | |
- yystate = yydefgoto[yyn - YYNTOKENS]; | |
- | |
- goto yynewstate; | |
- | |
- | |
-/*------------------------------------. | |
-| yyerrlab -- here on detecting error | | |
-`------------------------------------*/ | |
-yyerrlab: | |
- /* If not already recovering from an error, report this error. */ | |
- if (!yyerrstatus) | |
- { | |
- ++yynerrs; | |
-#if ! YYERROR_VERBOSE | |
- yyerror (YY_("syntax error")); | |
-#else | |
- { | |
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); | |
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) | |
- { | |
- YYSIZE_T yyalloc = 2 * yysize; | |
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) | |
- yyalloc = YYSTACK_ALLOC_MAXIMUM; | |
- if (yymsg != yymsgbuf) | |
- YYSTACK_FREE (yymsg); | |
- yymsg = (char *) YYSTACK_ALLOC (yyalloc); | |
- if (yymsg) | |
- yymsg_alloc = yyalloc; | |
- else | |
- { | |
- yymsg = yymsgbuf; | |
- yymsg_alloc = sizeof yymsgbuf; | |
- } | |
- } | |
- | |
- if (0 < yysize && yysize <= yymsg_alloc) | |
- { | |
- (void) yysyntax_error (yymsg, yystate, yychar); | |
- yyerror (yymsg); | |
- } | |
- else | |
- { | |
- yyerror (YY_("syntax error")); | |
- if (yysize != 0) | |
- goto yyexhaustedlab; | |
- } | |
- } | |
-#endif | |
- } | |
- | |
- | |
- | |
- if (yyerrstatus == 3) | |
- { | |
- /* If just tried and failed to reuse lookahead token after an | |
- error, discard it. */ | |
- | |
- if (yychar <= YYEOF) | |
- { | |
- /* Return failure if at end of input. */ | |
- if (yychar == YYEOF) | |
- YYABORT; | |
- } | |
- else | |
- { | |
- yydestruct ("Error: discarding", | |
- yytoken, &yylval); | |
- yychar = YYEMPTY; | |
- } | |
- } | |
- | |
- /* Else will try to reuse lookahead token after shifting the error | |
- token. */ | |
- goto yyerrlab1; | |
- | |
- | |
-/*---------------------------------------------------. | |
-| yyerrorlab -- error raised explicitly by YYERROR. | | |
-`---------------------------------------------------*/ | |
-yyerrorlab: | |
- | |
- /* Pacify compilers like GCC when the user code never invokes | |
- YYERROR and the label yyerrorlab therefore never appears in user | |
- code. */ | |
- if (/*CONSTCOND*/ 0) | |
- goto yyerrorlab; | |
- | |
- /* Do not reclaim the symbols of the rule which action triggered | |
- this YYERROR. */ | |
- YYPOPSTACK (yylen); | |
- yylen = 0; | |
- YY_STACK_PRINT (yyss, yyssp); | |
- yystate = *yyssp; | |
- goto yyerrlab1; | |
- | |
- | |
-/*-------------------------------------------------------------. | |
-| yyerrlab1 -- common code for both syntax error and YYERROR. | | |
-`-------------------------------------------------------------*/ | |
-yyerrlab1: | |
- yyerrstatus = 3; /* Each real token shifted decrements this. */ | |
- | |
- for (;;) | |
- { | |
- yyn = yypact[yystate]; | |
- if (yyn != YYPACT_NINF) | |
- { | |
- yyn += YYTERROR; | |
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) | |
- { | |
- yyn = yytable[yyn]; | |
- if (0 < yyn) | |
- break; | |
- } | |
- } | |
- | |
- /* Pop the current state because it cannot handle the error token. */ | |
- if (yyssp == yyss) | |
- YYABORT; | |
- | |
- | |
- yydestruct ("Error: popping", | |
- yystos[yystate], yyvsp); | |
- YYPOPSTACK (1); | |
- yystate = *yyssp; | |
- YY_STACK_PRINT (yyss, yyssp); | |
- } | |
- | |
- *++yyvsp = yylval; | |
- | |
- | |
- /* Shift the error token. */ | |
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); | |
- | |
- yystate = yyn; | |
- goto yynewstate; | |
- | |
- | |
-/*-------------------------------------. | |
-| yyacceptlab -- YYACCEPT comes here. | | |
-`-------------------------------------*/ | |
-yyacceptlab: | |
- yyresult = 0; | |
- goto yyreturn; | |
- | |
-/*-----------------------------------. | |
-| yyabortlab -- YYABORT comes here. | | |
-`-----------------------------------*/ | |
-yyabortlab: | |
- yyresult = 1; | |
- goto yyreturn; | |
- | |
-#ifndef yyoverflow | |
-/*-------------------------------------------------. | |
-| yyexhaustedlab -- memory exhaustion comes here. | | |
-`-------------------------------------------------*/ | |
-yyexhaustedlab: | |
- yyerror (YY_("memory exhausted")); | |
- yyresult = 2; | |
- /* Fall through. */ | |
-#endif | |
- | |
-yyreturn: | |
- if (yychar != YYEMPTY) | |
- yydestruct ("Cleanup: discarding lookahead", | |
- yytoken, &yylval); | |
- /* Do not reclaim the symbols of the rule which action triggered | |
- this YYABORT or YYACCEPT. */ | |
- YYPOPSTACK (yylen); | |
- YY_STACK_PRINT (yyss, yyssp); | |
- while (yyssp != yyss) | |
- { | |
- yydestruct ("Cleanup: popping", | |
- yystos[*yyssp], yyvsp); | |
- YYPOPSTACK (1); | |
- } | |
-#ifndef yyoverflow | |
- if (yyss != yyssa) | |
- YYSTACK_FREE (yyss); | |
-#endif | |
-#if YYERROR_VERBOSE | |
- if (yymsg != yymsgbuf) | |
- YYSTACK_FREE (yymsg); | |
-#endif | |
- /* Make sure YYID is used. */ | |
- return YYID (yyresult); | |
-} | |
- | |
- | |
-/* Line 1486 of yacc.c. */ | |
-#line 209 "plural.y" | |
- | |
- | |
-void | |
-internal_function | |
-FREE_EXPRESSION (struct expression *exp) | |
-{ | |
- if (exp == NULL) | |
- return; | |
- | |
- /* Handle the recursive case. */ | |
- switch (exp->nargs) | |
- { | |
- case 3: | |
- FREE_EXPRESSION (exp->val.args[2]); | |
- /* FALLTHROUGH */ | |
- case 2: | |
- FREE_EXPRESSION (exp->val.args[1]); | |
- /* FALLTHROUGH */ | |
- case 1: | |
- FREE_EXPRESSION (exp->val.args[0]); | |
- /* FALLTHROUGH */ | |
- default: | |
- break; | |
- } | |
- | |
- free (exp); | |
-} | |
- | |
- | |
-static int | |
-yylex (YYSTYPE *lval, const char **pexp) | |
-{ | |
- const char *exp = *pexp; | |
- int result; | |
- | |
- while (1) | |
- { | |
- if (exp[0] == '\0') | |
- { | |
- *pexp = exp; | |
- return YYEOF; | |
- } | |
- | |
- if (exp[0] != ' ' && exp[0] != '\t') | |
- break; | |
- | |
- ++exp; | |
- } | |
- | |
- result = *exp++; | |
- switch (result) | |
- { | |
- case '0': case '1': case '2': case '3': case '4': | |
- case '5': case '6': case '7': case '8': case '9': | |
- { | |
- unsigned long int n = result - '0'; | |
- while (exp[0] >= '0' && exp[0] <= '9') | |
- { | |
- n *= 10; | |
- n += exp[0] - '0'; | |
- ++exp; | |
- } | |
- lval->num = n; | |
- result = NUMBER; | |
- } | |
- break; | |
- | |
- case '=': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = equal; | |
- result = EQUOP2; | |
- } | |
- else | |
- result = YYERRCODE; | |
- break; | |
- | |
- case '!': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = not_equal; | |
- result = EQUOP2; | |
- } | |
- break; | |
- | |
- case '&': | |
- case '|': | |
- if (exp[0] == result) | |
- ++exp; | |
- else | |
- result = YYERRCODE; | |
- break; | |
- | |
- case '<': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = less_or_equal; | |
- } | |
- else | |
- lval->op = less_than; | |
- result = CMPOP2; | |
- break; | |
- | |
- case '>': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = greater_or_equal; | |
- } | |
- else | |
- lval->op = greater_than; | |
- result = CMPOP2; | |
- break; | |
- | |
- case '*': | |
- lval->op = mult; | |
- result = MULOP2; | |
- break; | |
- | |
- case '/': | |
- lval->op = divide; | |
- result = MULOP2; | |
- break; | |
- | |
- case '%': | |
- lval->op = module; | |
- result = MULOP2; | |
- break; | |
- | |
- case '+': | |
- lval->op = plus; | |
- result = ADDOP2; | |
- break; | |
- | |
- case '-': | |
- lval->op = minus; | |
- result = ADDOP2; | |
- break; | |
- | |
- case 'n': | |
- case '?': | |
- case ':': | |
- case '(': | |
- case ')': | |
- /* Nothing, just return the character. */ | |
- break; | |
- | |
- case ';': | |
- case '\n': | |
- case '\0': | |
- /* Be safe and let the user call this function again. */ | |
- --exp; | |
- result = YYEOF; | |
- break; | |
- | |
- default: | |
- result = YYERRCODE; | |
-#if YYDEBUG != 0 | |
- --exp; | |
-#endif | |
- break; | |
- } | |
- | |
- *pexp = exp; | |
- | |
- return result; | |
-} | |
- | |
- | |
-static void | |
-yyerror (const char *str) | |
-{ | |
- /* Do nothing. We don't print error messages here. */ | |
-} | |
- | |
diff --git a/intl/plural.y b/intl/plural.y | |
t@@ -1,385 +0,0 @@ | |
-%{ | |
-/* Expression parsing for plural form selection. | |
- Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. | |
- Written by Ulrich Drepper <[email protected]>, 2000. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us | |
- to put this declaration at the beginning of the file. The declaration in | |
- bison's skeleton file comes too late. This must come before <config.h> | |
- because <config.h> may include arbitrary system headers. | |
- This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ | |
-#if defined _AIX && !defined __GNUC__ | |
- #pragma alloca | |
-#endif | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <stddef.h> | |
-#include <stdlib.h> | |
-#include <string.h> | |
-#include "plural-exp.h" | |
- | |
-/* The main function generated by the parser is called __gettextparse, | |
- but we want it to be called PLURAL_PARSE. */ | |
-#ifndef _LIBC | |
-# define __gettextparse PLURAL_PARSE | |
-#endif | |
- | |
-#define YYLEX_PARAM &((struct parse_args *) arg)->cp | |
-#define YYPARSE_PARAM arg | |
-%} | |
-%pure_parser | |
-%expect 7 | |
- | |
-%union { | |
- unsigned long int num; | |
- enum expression_operator op; | |
- struct expression *exp; | |
-} | |
- | |
-%{ | |
-/* Prototypes for local functions. */ | |
-static int yylex (YYSTYPE *lval, const char **pexp); | |
-static void yyerror (const char *str); | |
- | |
-/* Allocation of expressions. */ | |
- | |
-static struct expression * | |
-new_exp (int nargs, enum expression_operator op, | |
- struct expression * const *args) | |
-{ | |
- int i; | |
- struct expression *newp; | |
- | |
- /* If any of the argument could not be malloc'ed, just return NULL. */ | |
- for (i = nargs - 1; i >= 0; i--) | |
- if (args[i] == NULL) | |
- goto fail; | |
- | |
- /* Allocate a new expression. */ | |
- newp = (struct expression *) malloc (sizeof (*newp)); | |
- if (newp != NULL) | |
- { | |
- newp->nargs = nargs; | |
- newp->operation = op; | |
- for (i = nargs - 1; i >= 0; i--) | |
- newp->val.args[i] = args[i]; | |
- return newp; | |
- } | |
- | |
- fail: | |
- for (i = nargs - 1; i >= 0; i--) | |
- FREE_EXPRESSION (args[i]); | |
- | |
- return NULL; | |
-} | |
- | |
-static inline struct expression * | |
-new_exp_0 (enum expression_operator op) | |
-{ | |
- return new_exp (0, op, NULL); | |
-} | |
- | |
-static inline struct expression * | |
-new_exp_1 (enum expression_operator op, struct expression *right) | |
-{ | |
- struct expression *args[1]; | |
- | |
- args[0] = right; | |
- return new_exp (1, op, args); | |
-} | |
- | |
-static struct expression * | |
-new_exp_2 (enum expression_operator op, struct expression *left, | |
- struct expression *right) | |
-{ | |
- struct expression *args[2]; | |
- | |
- args[0] = left; | |
- args[1] = right; | |
- return new_exp (2, op, args); | |
-} | |
- | |
-static inline struct expression * | |
-new_exp_3 (enum expression_operator op, struct expression *bexp, | |
- struct expression *tbranch, struct expression *fbranch) | |
-{ | |
- struct expression *args[3]; | |
- | |
- args[0] = bexp; | |
- args[1] = tbranch; | |
- args[2] = fbranch; | |
- return new_exp (3, op, args); | |
-} | |
- | |
-%} | |
- | |
-/* This declares that all operators have the same associativity and the | |
- precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. | |
- There is no unary minus and no bitwise operators. | |
- Operators with the same syntactic behaviour have been merged into a single | |
- token, to save space in the array generated by bison. */ | |
-%right '?' /* ? */ | |
-%left '|' /* || */ | |
-%left '&' /* && */ | |
-%left EQUOP2 /* == != */ | |
-%left CMPOP2 /* < > <= >= */ | |
-%left ADDOP2 /* + - */ | |
-%left MULOP2 /* * / % */ | |
-%right '!' /* ! */ | |
- | |
-%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2 | |
-%token <num> NUMBER | |
-%type <exp> exp | |
- | |
-%% | |
- | |
-start: exp | |
- { | |
- if ($1 == NULL) | |
- YYABORT; | |
- ((struct parse_args *) arg)->res = $1; | |
- } | |
- ; | |
- | |
-exp: exp '?' exp ':' exp | |
- { | |
- $$ = new_exp_3 (qmop, $1, $3, $5); | |
- } | |
- | exp '|' exp | |
- { | |
- $$ = new_exp_2 (lor, $1, $3); | |
- } | |
- | exp '&' exp | |
- { | |
- $$ = new_exp_2 (land, $1, $3); | |
- } | |
- | exp EQUOP2 exp | |
- { | |
- $$ = new_exp_2 ($2, $1, $3); | |
- } | |
- | exp CMPOP2 exp | |
- { | |
- $$ = new_exp_2 ($2, $1, $3); | |
- } | |
- | exp ADDOP2 exp | |
- { | |
- $$ = new_exp_2 ($2, $1, $3); | |
- } | |
- | exp MULOP2 exp | |
- { | |
- $$ = new_exp_2 ($2, $1, $3); | |
- } | |
- | '!' exp | |
- { | |
- $$ = new_exp_1 (lnot, $2); | |
- } | |
- | 'n' | |
- { | |
- $$ = new_exp_0 (var); | |
- } | |
- | NUMBER | |
- { | |
- if (($$ = new_exp_0 (num)) != NULL) | |
- $$->val.num = $1; | |
- } | |
- | '(' exp ')' | |
- { | |
- $$ = $2; | |
- } | |
- ; | |
- | |
-%% | |
- | |
-void | |
-internal_function | |
-FREE_EXPRESSION (struct expression *exp) | |
-{ | |
- if (exp == NULL) | |
- return; | |
- | |
- /* Handle the recursive case. */ | |
- switch (exp->nargs) | |
- { | |
- case 3: | |
- FREE_EXPRESSION (exp->val.args[2]); | |
- /* FALLTHROUGH */ | |
- case 2: | |
- FREE_EXPRESSION (exp->val.args[1]); | |
- /* FALLTHROUGH */ | |
- case 1: | |
- FREE_EXPRESSION (exp->val.args[0]); | |
- /* FALLTHROUGH */ | |
- default: | |
- break; | |
- } | |
- | |
- free (exp); | |
-} | |
- | |
- | |
-static int | |
-yylex (YYSTYPE *lval, const char **pexp) | |
-{ | |
- const char *exp = *pexp; | |
- int result; | |
- | |
- while (1) | |
- { | |
- if (exp[0] == '\0') | |
- { | |
- *pexp = exp; | |
- return YYEOF; | |
- } | |
- | |
- if (exp[0] != ' ' && exp[0] != '\t') | |
- break; | |
- | |
- ++exp; | |
- } | |
- | |
- result = *exp++; | |
- switch (result) | |
- { | |
- case '0': case '1': case '2': case '3': case '4': | |
- case '5': case '6': case '7': case '8': case '9': | |
- { | |
- unsigned long int n = result - '0'; | |
- while (exp[0] >= '0' && exp[0] <= '9') | |
- { | |
- n *= 10; | |
- n += exp[0] - '0'; | |
- ++exp; | |
- } | |
- lval->num = n; | |
- result = NUMBER; | |
- } | |
- break; | |
- | |
- case '=': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = equal; | |
- result = EQUOP2; | |
- } | |
- else | |
- result = YYERRCODE; | |
- break; | |
- | |
- case '!': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = not_equal; | |
- result = EQUOP2; | |
- } | |
- break; | |
- | |
- case '&': | |
- case '|': | |
- if (exp[0] == result) | |
- ++exp; | |
- else | |
- result = YYERRCODE; | |
- break; | |
- | |
- case '<': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = less_or_equal; | |
- } | |
- else | |
- lval->op = less_than; | |
- result = CMPOP2; | |
- break; | |
- | |
- case '>': | |
- if (exp[0] == '=') | |
- { | |
- ++exp; | |
- lval->op = greater_or_equal; | |
- } | |
- else | |
- lval->op = greater_than; | |
- result = CMPOP2; | |
- break; | |
- | |
- case '*': | |
- lval->op = mult; | |
- result = MULOP2; | |
- break; | |
- | |
- case '/': | |
- lval->op = divide; | |
- result = MULOP2; | |
- break; | |
- | |
- case '%': | |
- lval->op = module; | |
- result = MULOP2; | |
- break; | |
- | |
- case '+': | |
- lval->op = plus; | |
- result = ADDOP2; | |
- break; | |
- | |
- case '-': | |
- lval->op = minus; | |
- result = ADDOP2; | |
- break; | |
- | |
- case 'n': | |
- case '?': | |
- case ':': | |
- case '(': | |
- case ')': | |
- /* Nothing, just return the character. */ | |
- break; | |
- | |
- case ';': | |
- case '\n': | |
- case '\0': | |
- /* Be safe and let the user call this function again. */ | |
- --exp; | |
- result = YYEOF; | |
- break; | |
- | |
- default: | |
- result = YYERRCODE; | |
-#if YYDEBUG != 0 | |
- --exp; | |
-#endif | |
- break; | |
- } | |
- | |
- *pexp = exp; | |
- | |
- return result; | |
-} | |
- | |
- | |
-static void | |
-yyerror (const char *str) | |
-{ | |
- /* Do nothing. We don't print error messages here. */ | |
-} | |
diff --git a/intl/ref-add.sin b/intl/ref-add.sin | |
t@@ -1,31 +0,0 @@ | |
-# Add this package to a list of references stored in a text file. | |
-# | |
-# Copyright (C) 2000 Free Software Foundation, Inc. | |
-# | |
-# This program is free software; you can redistribute it and/or modify it | |
-# under the terms of the GNU Library General Public License as published | |
-# by the Free Software Foundation; either version 2, or (at your option) | |
-# any later version. | |
-# | |
-# This program is distributed in the hope that it will be useful, | |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
-# Library General Public License for more details. | |
-# | |
-# You should have received a copy of the GNU Library General Public | |
-# License along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
-# USA. | |
-# | |
-# Written by Bruno Haible <[email protected]>. | |
-# | |
-/^# Packages using this file: / { | |
- s/# Packages using this file:// | |
- ta | |
- :a | |
- s/ @PACKAGE@ / @PACKAGE@ / | |
- tb | |
- s/ $/ @PACKAGE@ / | |
- :b | |
- s/^/# Packages using this file:/ | |
-} | |
diff --git a/intl/ref-del.sin b/intl/ref-del.sin | |
t@@ -1,26 +0,0 @@ | |
-# Remove this package from a list of references stored in a text file. | |
-# | |
-# Copyright (C) 2000 Free Software Foundation, Inc. | |
-# | |
-# This program is free software; you can redistribute it and/or modify it | |
-# under the terms of the GNU Library General Public License as published | |
-# by the Free Software Foundation; either version 2, or (at your option) | |
-# any later version. | |
-# | |
-# This program is distributed in the hope that it will be useful, | |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
-# Library General Public License for more details. | |
-# | |
-# You should have received a copy of the GNU Library General Public | |
-# License along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
-# USA. | |
-# | |
-# Written by Bruno Haible <[email protected]>. | |
-# | |
-/^# Packages using this file: / { | |
- s/# Packages using this file:// | |
- s/ @PACKAGE@ / / | |
- s/^/# Packages using this file:/ | |
-} | |
diff --git a/intl/textdomain.c b/intl/textdomain.c | |
t@@ -1,127 +0,0 @@ | |
-/* Implementation of the textdomain(3) function. | |
- Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc. | |
- | |
- This program is free software; you can redistribute it and/or modify it | |
- under the terms of the GNU Library General Public License as published | |
- by the Free Software Foundation; either version 2, or (at your option) | |
- any later version. | |
- | |
- This program is distributed in the hope that it will be useful, | |
- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- Library General Public License for more details. | |
- | |
- You should have received a copy of the GNU Library General Public | |
- License along with this program; if not, write to the Free Software | |
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
- USA. */ | |
- | |
-#ifdef HAVE_CONFIG_H | |
-# include <config.h> | |
-#endif | |
- | |
-#include <stdlib.h> | |
-#include <string.h> | |
- | |
-#include "gettextP.h" | |
-#ifdef _LIBC | |
-# include <libintl.h> | |
-#else | |
-# include "libgnuintl.h" | |
-#endif | |
- | |
-/* Handle multi-threaded applications. */ | |
-#ifdef _LIBC | |
-# include <bits/libc-lock.h> | |
-# define gl_rwlock_define __libc_rwlock_define | |
-# define gl_rwlock_wrlock __libc_rwlock_wrlock | |
-# define gl_rwlock_unlock __libc_rwlock_unlock | |
-#else | |
-# include "lock.h" | |
-#endif | |
- | |
-/* @@ end of prolog @@ */ | |
- | |
- | |
-/* Names for the libintl functions are a problem. They must not clash | |
- with existing names and they should follow ANSI C. But this source | |
- code is also used in GNU C Library where the names have a __ | |
- prefix. So we have to make a difference here. */ | |
-#ifdef _LIBC | |
-# define TEXTDOMAIN __textdomain | |
-# ifndef strdup | |
-# define strdup(str) __strdup (str) | |
-# endif | |
-#else | |
-# define TEXTDOMAIN libintl_textdomain | |
-#endif | |
- | |
-/* Lock variable to protect the global data in the gettext implementation. */ | |
-gl_rwlock_define (extern, _nl_state_lock attribute_hidden) | |
- | |
-/* Set the current default message catalog to DOMAINNAME. | |
- If DOMAINNAME is null, return the current default. | |
- If DOMAINNAME is "", reset to the default of "messages". */ | |
-char * | |
-TEXTDOMAIN (const char *domainname) | |
-{ | |
- char *new_domain; | |
- char *old_domain; | |
- | |
- /* A NULL pointer requests the current setting. */ | |
- if (domainname == NULL) | |
- return (char *) _nl_current_default_domain; | |
- | |
- gl_rwlock_wrlock (_nl_state_lock); | |
- | |
- old_domain = (char *) _nl_current_default_domain; | |
- | |
- /* If domain name is the null string set to default domain "messages". */ | |
- if (domainname[0] == '\0' | |
- || strcmp (domainname, _nl_default_default_domain) == 0) | |
- { | |
- _nl_current_default_domain = _nl_default_default_domain; | |
- new_domain = (char *) _nl_current_default_domain; | |
- } | |
- else if (strcmp (domainname, old_domain) == 0) | |
- /* This can happen and people will use it to signal that some | |
- environment variable changed. */ | |
- new_domain = old_domain; | |
- else | |
- { | |
- /* If the following malloc fails `_nl_current_default_domain' | |
- will be NULL. This value will be returned and so signals we | |
- are out of core. */ | |
-#if defined _LIBC || defined HAVE_STRDUP | |
- new_domain = strdup (domainname); | |
-#else | |
- size_t len = strlen (domainname) + 1; | |
- new_domain = (char *) malloc (len); | |
- if (new_domain != NULL) | |
- memcpy (new_domain, domainname, len); | |
-#endif | |
- | |
- if (new_domain != NULL) | |
- _nl_current_default_domain = new_domain; | |
- } | |
- | |
- /* We use this possibility to signal a change of the loaded catalogs | |
- since this is most likely the case and there is no other easy we | |
- to do it. Do it only when the call was successful. */ | |
- if (new_domain != NULL) | |
- { | |
- ++_nl_msg_cat_cntr; | |
- | |
- if (old_domain != new_domain && old_domain != _nl_default_default_domain) | |
- free (old_domain); | |
- } | |
- | |
- gl_rwlock_unlock (_nl_state_lock); | |
- | |
- return new_domain; | |
-} | |
- | |
-#ifdef _LIBC | |
-/* Alias for function name in GNU C Library. */ | |
-weak_alias (__textdomain, textdomain); | |
-#endif | |
diff --git a/ltmain.sh b/ltmain.sh | |
t@@ -1,30 +1,130 @@ | |
-# ltmain.sh - Provide generalized library-building support services. | |
-# NOTE: Changing this file will not affect anything until you rerun configure. | |
-# | |
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 | |
-# Free Software Foundation, Inc. | |
-# Originally by Gordon Matzigkeit <[email protected]>, 1996 | |
-# | |
-# This program is free software; you can redistribute it and/or modify | |
+ | |
+# libtool (GNU libtool) 2.4.2 | |
+# Written by Gordon Matzigkeit <[email protected]>, 1996 | |
+ | |
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, | |
+# 2007, 2008, 2009, 2010, 2011 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. | |
# | |
-# This program is distributed in the hope that it will be useful, but | |
+# 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, write to the Free Software | |
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US… | |
+# along with GNU Libtool; see the file COPYING. If not, a copy | |
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, | |
+# or obtained by writing to the Free Software Foundation, Inc., | |
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
+ | |
+# Usage: $progname [OPTION]... [MODE-ARG]... | |
+# | |
+# Provide generalized library-building support services. | |
# | |
-# 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. | |
+# --config show all configuration variables | |
+# --debug enable verbose shell tracing | |
+# -n, --dry-run display commands without modifying any files | |
+# --features display basic configuration information and exit | |
+# --mode=MODE use operation mode MODE | |
+# --preserve-dup-deps don't remove duplicate dependency libraries | |
+# --quiet, --silent don't print informational messages | |
+# --no-quiet, --no-silent | |
+# print informational messages (default) | |
+# --no-warn don't display warning messages | |
+# --tag=TAG use configuration variables from tag TAG | |
+# -v, --verbose print more informational messages than default | |
+# --no-verbose don't print the extra informational messages | |
+# --version print version information | |
+# -h, --help, --help-all print short, long, or detailed 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) | |
+# $progname: (GNU libtool) 2.4.2 | |
+# automake: $automake_version | |
+# autoconf: $autoconf_version | |
+# | |
+# Report bugs to <[email protected]>. | |
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>. | |
+# General help using GNU software: <http://www.gnu.org/gethelp/>. | |
+ | |
+PROGRAM=libtool | |
+PACKAGE=libtool | |
+VERSION=2.4.2 | |
+TIMESTAMP="" | |
+package_revision=1.3337 | |
+ | |
+# 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 | |
+ | |
+# A function that is used when there is no print builtin or printf. | |
+func_fallback_echo () | |
+{ | |
+ eval 'cat <<_LTECHO_EOF | |
+$1 | |
+_LTECHO_EOF' | |
+} | |
+ | |
+# NLS nuisances: We save the old values to restore during execute mode. | |
+lt_user_locale= | |
+lt_safe_locale= | |
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES | |
+do | |
+ eval "if test \"\${$lt_var+set}\" = set; then | |
+ save_$lt_var=\$$lt_var | |
+ $lt_var=C | |
+ export $lt_var | |
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" | |
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" | |
+ fi" | |
+done | |
+LC_ALL=C | |
+LANGUAGE=C | |
+export LANGUAGE LC_ALL | |
+ | |
+$lt_unset CDPATH | |
-basename="s,^.*/,,g" | |
# 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 | |
t@@ -33,4743 +133,4426 @@ basename="s,^.*/,,g" | |
# function. | |
progpath="$0" | |
-# The name of this program: | |
-progname=`echo "$progpath" | $SED $basename` | |
-modename="$progname" | |
+ | |
+ | |
+: ${CP="cp -f"} | |
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} | |
+: ${MAKE="make"} | |
+: ${MKDIR="mkdir"} | |
+: ${MV="mv -f"} | |
+: ${RM="rm -f"} | |
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"} | |
+: ${Xsed="$SED -e 1s/^X//"} | |
# Global variables: | |
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. | |
-PROGRAM=ltmain.sh | |
-PACKAGE=libtool | |
-VERSION=1.5.16 | |
-TIMESTAMP=" (1.1220.2.235 2005/04/25 18:13:26)" | |
- | |
-# See if we are running on zsh, and set the options which allow our | |
-# commands through without removal of \ escapes. | |
-if test -n "${ZSH_VERSION+set}" ; then | |
- setopt NO_GLOB_SUBST | |
-fi | |
- | |
-# Check that we have a working $echo. | |
-if test "X$1" = X--no-reexec; then | |
- # Discard the --no-reexec flag, and continue. | |
- shift | |
-elif test "X$1" = X--fallback-echo; then | |
- # Avoid inline document here, it may be left over | |
- : | |
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then | |
- # Yippee, $echo works! | |
- : | |
-else | |
- # Restart under the correct shell, and then maybe $echo will work. | |
- exec $SHELL "$progpath" --no-reexec ${1+"$@"} | |
-fi | |
- | |
-if test "X$1" = X--fallback-echo; then | |
- # used as fallback echo | |
- shift | |
- cat <<EOF | |
-$* | |
-EOF | |
- exit $EXIT_SUCCESS | |
-fi | |
- | |
-default_mode= | |
-help="Try \`$progname --help' for more information." | |
-magic="%%%MAGIC variable%%%" | |
-mkdir="mkdir" | |
-mv="mv -f" | |
-rm="rm -f" | |
- | |
-# Sed substitution that helps us do robust quoting. It backslashifies | |
-# metacharacters that are still active within double-quoted strings. | |
-Xsed="${SED}"' -e 1s/^X//' | |
-sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' | |
-# test EBCDIC or ASCII | |
-case `echo A|tr A '\301'` in | |
- A) # EBCDIC based system | |
- SP2NL="tr '\100' '\n'" | |
- NL2SP="tr '\r\n' '\100\100'" | |
- ;; | |
- *) # Assume ASCII based system | |
- SP2NL="tr '\040' '\012'" | |
- NL2SP="tr '\015\012' '\040\040'" | |
- ;; | |
-esac | |
- | |
-# NLS nuisances. | |
-# Only set LANG and LC_ALL to C if already set. | |
-# These must not be set unconditionally because not all systems understand | |
-# e.g. LANG=C (notably SCO). | |
-# We save the old values to restore during execute mode. | |
-if test "${LC_ALL+set}" = set; then | |
- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL | |
-fi | |
-if test "${LANG+set}" = set; then | |
- save_LANG="$LANG"; LANG=C; export LANG | |
-fi | |
+exit_status=$EXIT_SUCCESS | |
# Make sure IFS has a sensible default | |
lt_nl=' | |
' | |
IFS=" $lt_nl" | |
-if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then | |
- $echo "$modename: not configured to build any kind of library" 1>&2 | |
- $echo "Fatal configuration error. See the $PACKAGE docs for more informatio… | |
- exit $EXIT_FAILURE | |
-fi | |
+dirname="s,/[^/]*$,," | |
+basename="s,^.*/,," | |
-# Global variables. | |
-mode=$default_mode | |
-nonopt= | |
-prev= | |
-prevopt= | |
-run= | |
-show="$echo" | |
-show_help= | |
-execute_dlfiles= | |
-lo2o="s/\\.lo\$/.${objext}/" | |
-o2lo="s/\\.${objext}\$/.lo/" | |
-quote_scanset='[[~#^*{};<>?'"'"' ]' | |
+# func_dirname file append nondir_replacement | |
+# Compute the dirname of FILE. If nonempty, add APPEND to the result, | |
+# otherwise set result to NONDIR_REPLACEMENT. | |
+func_dirname () | |
+{ | |
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` | |
+ if test "X$func_dirname_result" = "X${1}"; then | |
+ func_dirname_result="${3}" | |
+ else | |
+ func_dirname_result="$func_dirname_result${2}" | |
+ fi | |
+} # func_dirname may be replaced by extended shell implementation | |
-##################################### | |
-# Shell function definitions: | |
-# This seems to be the best place for them | |
-# 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. | |
-func_win32_libid () | |
+# func_basename file | |
+func_basename () | |
{ | |
- 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 | |
- if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ | |
- $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then | |
- win32_nmres=`eval $NM -f posix -A $1 | \ | |
- sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` | |
- if test "X$win32_nmres" = "Ximport" ; then | |
- win32_libid_type="x86 archive import" | |
- else | |
- win32_libid_type="x86 archive static" | |
- fi | |
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"` | |
+} # func_basename may be replaced by extended shell implementation | |
+ | |
+ | |
+# 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 retuned in "$func_basename_result" | |
+# Implementation must be kept synchronized with func_dirname | |
+# and func_basename. For efficiency, we do not delegate to | |
+# those functions but instead duplicate the functionality here. | |
+func_dirname_and_basename () | |
+{ | |
+ # Extract subdirectory from the argument. | |
+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` | |
+ if test "X$func_dirname_result" = "X${1}"; then | |
+ func_dirname_result="${3}" | |
+ else | |
+ func_dirname_result="$func_dirname_result${2}" | |
fi | |
+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` | |
+} # func_dirname_and_basename may be replaced by extended shell implementation | |
+ | |
+ | |
+# func_stripname 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). | |
+# func_strip_suffix prefix name | |
+func_stripname () | |
+{ | |
+ case ${2} in | |
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%… | |
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; | |
+ esac | |
+} # func_stripname may be replaced by extended shell implementation | |
+ | |
+ | |
+# These SED scripts presuppose an absolute path with a trailing slash. | |
+pathcar='s,^/\([^/]*\).*$,\1,' | |
+pathcdr='s,^/[^/]*,,' | |
+removedotparts=':dotsl | |
+ s@/\./@/@g | |
+ t dotsl | |
+ s,/\.$,/,' | |
+collapseslashes='s@/\{1,\}@/@g' | |
+finalslash='s,/*$,/,' | |
+ | |
+# 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. | |
+# value returned in "$func_normal_abspath_result" | |
+func_normal_abspath () | |
+{ | |
+ # 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 | |
;; | |
- *DLL*) | |
- win32_libid_type="x86 DLL" | |
+ # 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. | |
;; | |
- *executable*) # but shell scripts are "executable" too... | |
- case $win32_fileres in | |
- *MS\ Windows\ PE\ Intel*) | |
- win32_libid_type="x86 DLL" | |
- ;; | |
- esac | |
+ //*) | |
+ # 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 | |
- $echo $win32_libid_type | |
+ # 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 "$removedotparts" -e "$collapseslashes" -e "$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 "$pathcar"` | |
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ | |
+ -e "$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_normal_abspath_result=$func_normal_abspath_result/$func_normal_ab… | |
+ ;; | |
+ esac | |
+ done | |
+ # Restore leading double-slash if one was found on entry. | |
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abs… | |
} | |
- | |
-# 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 () | |
+# func_relative_path SRCDIR DSTDIR | |
+# generates a relative path from SRCDIR to DSTDIR, with a trailing | |
+# slash if non-empty, suitable for immediately appending a filename | |
+# without needing to append a separator. | |
+# value returned in "$func_relative_path_result" | |
+func_relative_path () | |
{ | |
- if test -n "$available_tags" && test -z "$tagname"; then | |
- CC_quoted= | |
- for arg in $CC; do | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- CC_quoted="$CC_quoted $arg" | |
- done | |
- 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 "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"*… | |
- # Blanks at the start of $base_compile will cause this to fail | |
- # if we don't check for them as well. | |
+ 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_t… | |
+ func_relative_path_tcancelled=$func_stripname_result | |
+ if test -z "$func_relative_path_result"; then | |
+ func_relative_path_result=. | |
+ fi | |
+ break | |
+ ;; | |
*) | |
- for z in $available_tags; do | |
- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/… | |
- # Evaluate the configuration. | |
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# … | |
- CC_quoted= | |
- for arg in $CC; do | |
- # Double-quote args containing other shell metacharacters. | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- CC_quoted="$CC_quoted $arg" | |
- done | |
- case "$@ " in | |
- " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_… | |
- # 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 | |
- $echo "$modename: unable to infer tagged configuration" | |
- $echo "$modename: specify a tag with \`--tag'" 1>&2 | |
- exit $EXIT_FAILURE | |
-# else | |
-# $echo "$modename: using $tagname tagged configuration" | |
- fi | |
- ;; | |
- esac | |
- fi | |
+ func_dirname $func_relative_path_tlibdir | |
+ func_relative_path_tlibdir=${func_dirname_result} | |
+ if test "x$func_relative_path_tlibdir" = x ; 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 "x$func_stripname_result" != x ; then | |
+ func_relative_path_result=${func_relative_path_result}/${func_stripname_re… | |
+ fi | |
+ | |
+ # Normalisation. If bindir is libdir, return empty string, | |
+ # else relative path ending with a slash; either way, target | |
+ # file name can be directly appended. | |
+ if test ! -z "$func_relative_path_result"; then | |
+ func_stripname './' '' "$func_relative_path_result/" | |
+ func_relative_path_result=$func_stripname_result | |
+ fi | |
} | |
+# The name of this program: | |
+func_dirname_and_basename "$progpath" | |
+progname=$func_basename_result | |
+ | |
+# Make sure we have an absolute path for reexecution: | |
+case $progpath in | |
+ [\\/]*|[A-Za-z]:\\*) ;; | |
+ *[\\/]*) | |
+ progdir=$func_dirname_result | |
+ progdir=`cd "$progdir" && pwd` | |
+ progpath="$progdir/$progname" | |
+ ;; | |
+ *) | |
+ save_IFS="$IFS" | |
+ IFS=${PATH_SEPARATOR-:} | |
+ for progdir in $PATH; do | |
+ IFS="$save_IFS" | |
+ test -x "$progdir/$progname" && break | |
+ done | |
+ IFS="$save_IFS" | |
+ test -n "$progdir" || progdir=`pwd` | |
+ progpath="$progdir/$progname" | |
+ ;; | |
+esac | |
-# func_extract_an_archive dir oldlib | |
-func_extract_an_archive () | |
+# Sed substitution that helps us do robust quoting. It backslashifies | |
+# metacharacters that are still active within double-quoted strings. | |
+Xsed="${SED}"' -e 1s/^X//' | |
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g' | |
+ | |
+# Same as above, but do not quote variable references. | |
+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 | |
+# which contains forward slashes, into one that contains | |
+# (escaped) backslashes. A very naive implementation. | |
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' | |
+ | |
+# Re-`\' parameter expansions in output of double_quote_subst that were | |
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$' | |
+# in input to 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 '$'. | |
+bs='\\' | |
+bs2='\\\\' | |
+bs4='\\\\\\\\' | |
+dollar='\$' | |
+sed_double_backslash="\ | |
+ s/$bs4/&\\ | |
+/g | |
+ s/^$bs2$dollar/$bs&/ | |
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g | |
+ s/\n//g" | |
+ | |
+# Standard options: | |
+opt_dry_run=false | |
+opt_help=false | |
+opt_quiet=false | |
+opt_verbose=false | |
+opt_warning=: | |
+ | |
+# func_echo arg... | |
+# Echo program name prefixed message, along with the current mode | |
+# name if it has been set yet. | |
+func_echo () | |
{ | |
- f_ex_an_ar_dir="$1"; shift | |
- f_ex_an_ar_oldlib="$1" | |
+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*" | |
+} | |
- $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" | |
- $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? | |
- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then | |
- : | |
- else | |
- $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an… | |
- exit $EXIT_FAILURE | |
- fi | |
+# func_verbose arg... | |
+# Echo program name prefixed message in verbose mode only. | |
+func_verbose () | |
+{ | |
+ $opt_verbose && 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_extract_archives gentop oldlib ... | |
-func_extract_archives () | |
+# func_echo_all arg... | |
+# Invoke $ECHO with all args, space-separated. | |
+func_echo_all () | |
{ | |
- my_gentop="$1"; shift | |
- my_oldlibs=${1+"$@"} | |
- my_oldobjs="" | |
- my_xlib="" | |
- my_xabs="" | |
- my_xdir="" | |
- my_status="" | |
- | |
- $show "${rm}r $my_gentop" | |
- $run ${rm}r "$my_gentop" | |
- $show "$mkdir $my_gentop" | |
- $run $mkdir "$my_gentop" | |
- my_status=$? | |
- if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then | |
- exit $my_status | |
- fi | |
+ $ECHO "$*" | |
+} | |
- 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 | |
- my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` | |
- my_xdir="$my_gentop/$my_xlib" | |
- | |
- $show "${rm}r $my_xdir" | |
- $run ${rm}r "$my_xdir" | |
- $show "$mkdir $my_xdir" | |
- $run $mkdir "$my_xdir" | |
- status=$? | |
- if test "$status" -ne 0 && test ! -d "$my_xdir"; then | |
- exit $status | |
- fi | |
- case $host in | |
- *-darwin*) | |
- $show "Extracting $my_xabs" | |
- # Do not bother doing anything if just a dry run | |
- if test -z "$run"; then | |
- darwin_orig_dir=`pwd` | |
- cd $my_xdir || exit $? | |
- darwin_archive=$my_xabs | |
- darwin_curdir=`pwd` | |
- darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` | |
- darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Arc… | |
- if test -n "$darwin_arches"; then | |
- darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` | |
- darwin_arch= | |
- $show "$darwin_base_archive has multiple architectures $darwin_arc… | |
- for darwin_arch in $darwin_arches ; do | |
- mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" | |
- lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_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_bas… | |
- done # $darwin_arches | |
- ## Okay now we have a bunch of thin objects, gotta fatten them up :) | |
- darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name … | |
- darwin_file= | |
- darwin_files= | |
- for darwin_file in $darwin_filelist; do | |
- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` | |
- lipo -create -output "$darwin_file" $darwin_files | |
- done # $darwin_filelist | |
- ${rm}r unfat-$$ | |
- cd "$darwin_orig_dir" | |
- else | |
- cd "$darwin_orig_dir" | |
- func_extract_an_archive "$my_xdir" "$my_xabs" | |
- fi # $darwin_arches | |
- fi # $run | |
- ;; | |
- *) | |
- func_extract_an_archive "$my_xdir" "$my_xabs" | |
- ;; | |
- esac | |
- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name… | |
- done | |
- func_extract_archives_result="$my_oldobjs" | |
+# func_error arg... | |
+# Echo program name prefixed message to standard error. | |
+func_error () | |
+{ | |
+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 | |
} | |
-# End of Shell function definitions | |
-##################################### | |
-# Darwin sucks | |
-eval std_shrext=\"$shrext_cmds\" | |
+# func_warning arg... | |
+# Echo program name prefixed warning message to standard error. | |
+func_warning () | |
+{ | |
+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@… | |
-# Parse our command line options once, thoroughly. | |
-while test "$#" -gt 0 | |
-do | |
- arg="$1" | |
- shift | |
+ # bash bug again: | |
+ : | |
+} | |
- case $arg in | |
- -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; | |
- *) optarg= ;; | |
- esac | |
+# func_fatal_error arg... | |
+# Echo program name prefixed message to standard error, and exit. | |
+func_fatal_error () | |
+{ | |
+ func_error ${1+"$@"} | |
+ exit $EXIT_FAILURE | |
+} | |
- # If the previous option needs an argument, assign it. | |
- if test -n "$prev"; then | |
- case $prev in | |
- execute_dlfiles) | |
- execute_dlfiles="$execute_dlfiles $arg" | |
- ;; | |
- tag) | |
- tagname="$arg" | |
- preserve_args="${preserve_args}=$arg" | |
- | |
- # Check whether tagname contains only valid characters | |
- case $tagname in | |
- *[!-_A-Za-z0-9,/]*) | |
- $echo "$progname: invalid tag name: $tagname" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
+# func_fatal_help arg... | |
+# Echo program name prefixed message to standard error, followed by | |
+# a help hint, and exit. | |
+func_fatal_help () | |
+{ | |
+ func_error ${1+"$@"} | |
+ func_fatal_error "$help" | |
+} | |
+help="Try \`$progname --help' for more information." ## default | |
- case $tagname in | |
- CC) | |
- # Don't test for the "default" C tag, as we know, it's there, but | |
- # not specially marked. | |
- ;; | |
- *) | |
- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /… | |
- taglist="$taglist $tagname" | |
- # Evaluate the configuration. | |
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,… | |
- else | |
- $echo "$progname: ignoring unknown tag $tagname" 1>&2 | |
- fi | |
- ;; | |
- esac | |
- ;; | |
- *) | |
- eval "$prev=\$arg" | |
- ;; | |
- esac | |
- prev= | |
- prevopt= | |
- continue | |
- fi | |
+# func_grep expression filename | |
+# Check whether EXPRESSION matches any line of FILENAME, without output. | |
+func_grep () | |
+{ | |
+ $GREP "$1" "$2" >/dev/null 2>&1 | |
+} | |
- # Have we seen a non-optional argument yet? | |
- case $arg in | |
- --help) | |
- show_help=yes | |
- ;; | |
- --version) | |
- $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" | |
- $echo | |
- $echo "Copyright (C) 2005 Free Software Foundation, Inc." | |
- $echo "This is free software; see the source for copying conditions. Ther… | |
- $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR … | |
- exit $? | |
- ;; | |
+# func_mkdir_p directory-path | |
+# Make sure the entire path to DIRECTORY-PATH is available. | |
+func_mkdir_p () | |
+{ | |
+ my_directory_path="$1" | |
+ my_dir_list= | |
- --config) | |
- ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFI… | |
- # Now print the configurations for the tags. | |
- for tagname in $taglist; do | |
- ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END L… | |
- done | |
- exit $? | |
- ;; | |
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then | |
- --debug) | |
- $echo "$progname: enabling shell trace mode" | |
- set -x | |
- preserve_args="$preserve_args $arg" | |
- ;; | |
+ # Protect directory names starting with `-' | |
+ case $my_directory_path in | |
+ -*) my_directory_path="./$my_directory_path" ;; | |
+ esac | |
- --dry-run | -n) | |
- run=: | |
- ;; | |
+ # While some portion of DIR does not yet exist... | |
+ while test ! -d "$my_directory_path"; do | |
+ # ...make a list in topmost first order. Use a colon delimited | |
+ # list incase some portion of path contains whitespace. | |
+ my_dir_list="$my_directory_path:$my_dir_list" | |
- --features) | |
- $echo "host: $host" | |
- if test "$build_libtool_libs" = yes; then | |
- $echo "enable shared libraries" | |
- else | |
- $echo "disable shared libraries" | |
+ # If the last portion added has no slash in it, the list is done | |
+ case $my_directory_path in */*) ;; *) break ;; esac | |
+ | |
+ # ...otherwise throw away the child directory and loop | |
+ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` | |
+ done | |
+ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` | |
+ | |
+ save_mkdir_p_IFS="$IFS"; IFS=':' | |
+ for my_dir in $my_dir_list; do | |
+ IFS="$save_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 "$my_dir" 2>/dev/null || : | |
+ done | |
+ IFS="$save_mkdir_p_IFS" | |
+ | |
+ # Bail out if we (or some other process) failed to create a directory. | |
+ test -d "$my_directory_path" || \ | |
+ func_fatal_error "Failed to create \`$1'" | |
fi | |
- if test "$build_old_libs" = yes; then | |
- $echo "enable static libraries" | |
+} | |
+ | |
+ | |
+# func_mktempdir [string] | |
+# Make a temporary directory that won't clash with other running | |
+# libtool processes, and avoids race conditions if possible. If | |
+# given, STRING is the basename for that directory. | |
+func_mktempdir () | |
+{ | |
+ my_template="${TMPDIR-/tmp}/${1-$progname}" | |
+ | |
+ if test "$opt_dry_run" = ":"; then | |
+ # Return a directory name, but don't create it in dry-run mode | |
+ my_tmpdir="${my_template}-$$" | |
else | |
- $echo "disable static libraries" | |
+ | |
+ # If mktemp works, use that first and foremost | |
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` | |
+ | |
+ if test ! -d "$my_tmpdir"; then | |
+ # Failing that, at least try and use $RANDOM to avoid a race | |
+ my_tmpdir="${my_template}-${RANDOM-0}$$" | |
+ | |
+ save_mktempdir_umask=`umask` | |
+ umask 0077 | |
+ $MKDIR "$my_tmpdir" | |
+ umask $save_mktempdir_umask | |
+ fi | |
+ | |
+ # If we're not in dry-run mode, bomb out on failure | |
+ test -d "$my_tmpdir" || \ | |
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" | |
fi | |
- exit $? | |
- ;; | |
- --finish) mode="finish" ;; | |
+ $ECHO "$my_tmpdir" | |
+} | |
+ | |
+ | |
+# func_quote_for_eval arg | |
+# Aesthetically quote ARG to be evaled later. | |
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT | |
+# is double-quoted, suitable for a subsequent eval, whereas | |
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters | |
+# which are still active within double quotes backslashified. | |
+func_quote_for_eval () | |
+{ | |
+ case $1 in | |
+ *[\\\`\"\$]*) | |
+ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_sub… | |
+ *) | |
+ func_quote_for_eval_unquoted_result="$1" ;; | |
+ esac | |
- --mode) prevopt="--mode" prev=mode ;; | |
- --mode=*) mode="$optarg" ;; | |
+ case $func_quote_for_eval_unquoted_result in | |
+ # Double-quote args containing shell metacharacters to delay | |
+ # word splitting, command substitution and 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_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" | |
+ ;; | |
+ *) | |
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" | |
+ esac | |
+} | |
- --preserve-dup-deps) duplicate_deps="yes" ;; | |
- --quiet | --silent) | |
- show=: | |
- preserve_args="$preserve_args $arg" | |
- ;; | |
+# func_quote_for_expand arg | |
+# Aesthetically quote ARG to be evaled later; same as above, | |
+# but do not quote variable references. | |
+func_quote_for_expand () | |
+{ | |
+ case $1 in | |
+ *[\\\`\"]*) | |
+ my_arg=`$ECHO "$1" | $SED \ | |
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; | |
+ *) | |
+ my_arg="$1" ;; | |
+ esac | |
- --tag) prevopt="--tag" prev=tag ;; | |
- --tag=*) | |
- set tag "$optarg" ${1+"$@"} | |
- shift | |
- prev=tag | |
- preserve_args="$preserve_args --tag" | |
- ;; | |
+ case $my_arg in | |
+ # Double-quote args containing shell metacharacters to delay | |
+ # word splitting and command substitution for a subsequent eval. | |
+ # Many Bourne shells cannot handle close brackets correctly | |
+ # in scan sets, so we specify it separately. | |
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") | |
+ my_arg="\"$my_arg\"" | |
+ ;; | |
+ esac | |
- -dlopen) | |
- prevopt="-dlopen" | |
- prev=execute_dlfiles | |
- ;; | |
+ func_quote_for_expand_result="$my_arg" | |
+} | |
- -*) | |
- $echo "$modename: unrecognized option \`$arg'" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- *) | |
- nonopt="$arg" | |
- break | |
+# func_show_eval cmd [fail_exp] | |
+# Unless opt_silent 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 () | |
+{ | |
+ my_cmd="$1" | |
+ my_fail_exp="${2-:}" | |
+ | |
+ ${opt_silent-false} || { | |
+ func_quote_for_expand "$my_cmd" | |
+ eval "func_echo $func_quote_for_expand_result" | |
+ } | |
+ | |
+ if ${opt_dry_run-false}; then :; else | |
+ eval "$my_cmd" | |
+ my_status=$? | |
+ if test "$my_status" -eq 0; then :; else | |
+ eval "(exit $my_status); $my_fail_exp" | |
+ fi | |
+ fi | |
+} | |
+ | |
+ | |
+# func_show_eval_locale cmd [fail_exp] | |
+# Unless opt_silent 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 () | |
+{ | |
+ my_cmd="$1" | |
+ my_fail_exp="${2-:}" | |
+ | |
+ ${opt_silent-false} || { | |
+ func_quote_for_expand "$my_cmd" | |
+ eval "func_echo $func_quote_for_expand_result" | |
+ } | |
+ | |
+ if ${opt_dry_run-false}; then :; else | |
+ eval "$lt_user_locale | |
+ $my_cmd" | |
+ my_status=$? | |
+ eval "$lt_safe_locale" | |
+ if test "$my_status" -eq 0; then :; else | |
+ eval "(exit $my_status); $my_fail_exp" | |
+ fi | |
+ 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 () | |
+{ | |
+ case $1 in | |
+ [0-9]* | *[!a-zA-Z0-9_]*) | |
+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_… | |
+ ;; | |
+ * ) | |
+ func_tr_sh_result=$1 | |
;; | |
esac | |
-done | |
+} | |
-if test -n "$prevopt"; then | |
- $echo "$modename: option \`$prevopt' requires an argument" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
-fi | |
-# 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= | |
+# func_version | |
+# Echo version message to standard output and exit. | |
+func_version () | |
+{ | |
+ $opt_debug | |
+ | |
+ $SED -n '/(C)/!b go | |
+ :more | |
+ /\./!{ | |
+ N | |
+ s/\n# / / | |
+ b more | |
+ } | |
+ :go | |
+ /^# '$PROGRAM' (GNU /,/# warranty; / { | |
+ s/^# // | |
+ s/^# *$// | |
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ | |
+ p | |
+ }' < "$progpath" | |
+ exit $? | |
+} | |
-if test -z "$show_help"; then | |
+# func_usage | |
+# Echo short help message to standard output and exit. | |
+func_usage () | |
+{ | |
+ $opt_debug | |
+ | |
+ $SED -n '/^# Usage:/,/^# *.*--help/ { | |
+ s/^# // | |
+ s/^# *$// | |
+ s/\$progname/'$progname'/ | |
+ p | |
+ }' < "$progpath" | |
+ echo | |
+ $ECHO "run \`$progname --help | more' for full usage" | |
+ exit $? | |
+} | |
- # Infer the operation mode. | |
- if test -z "$mode"; then | |
- $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 | |
- $echo "*** Future versions of Libtool will require --mode=MODE be specifie… | |
- case $nonopt in | |
- *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) | |
- mode=link | |
- for arg | |
- do | |
- case $arg in | |
- -c) | |
- mode=compile | |
- break | |
- ;; | |
- esac | |
- done | |
- ;; | |
- *db | *dbx | *strace | *truss) | |
- mode=execute | |
- ;; | |
- *install*|cp|mv) | |
- mode=install | |
- ;; | |
- *rm) | |
- mode=uninstall | |
- ;; | |
- *) | |
- # If we have no mode, but dlfiles were specified, then do execute mode. | |
- test -n "$execute_dlfiles" && mode=execute | |
+# func_help [NOEXIT] | |
+# Echo long help message to standard output and exit, | |
+# unless 'noexit' is passed as argument. | |
+func_help () | |
+{ | |
+ $opt_debug | |
+ | |
+ $SED -n '/^# Usage:/,/# Report bugs to/ { | |
+ s/^# // | |
+ s/^# *$// | |
+ s*\$progname*'$progname'* | |
+ s*\$host*'"$host"'* | |
+ s*\$SHELL*'"$SHELL"'* | |
+ s*\$LTCC*'"$LTCC"'* | |
+ s*\$LTCFLAGS*'"$LTCFLAGS"'* | |
+ s*\$LD*'"$LD"'* | |
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/ | |
+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |… | |
+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |… | |
+ p | |
+ d | |
+ } | |
+ /^# .* home page:/b print | |
+ /^# General help using/b print | |
+ ' < "$progpath" | |
+ ret=$? | |
+ if test -z "$1"; then | |
+ exit $ret | |
+ fi | |
+} | |
- # Just use the default operation mode. | |
- if test -z "$mode"; then | |
- if test -n "$nonopt"; then | |
- $echo "$modename: warning: cannot infer operation mode from \`$nonop… | |
- else | |
- $echo "$modename: warning: cannot infer operation mode without MODE-… | |
- fi | |
- fi | |
- ;; | |
- esac | |
- fi | |
+# func_missing_arg argname | |
+# Echo program name prefixed message to standard error and set global | |
+# exit_cmd. | |
+func_missing_arg () | |
+{ | |
+ $opt_debug | |
- # Only execute mode is allowed to have -dlopen flags. | |
- if test -n "$execute_dlfiles" && test "$mode" != execute; then | |
- $echo "$modename: unrecognized option \`-dlopen'" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ func_error "missing argument for $1." | |
+ exit_cmd=exit | |
+} | |
- # Change the help message to a mode-specific one. | |
- generic_help="$help" | |
- help="Try \`$modename --help --mode=$mode' for more information." | |
- # These modes are in order of execution frequency so that they run quickly. | |
- case $mode in | |
- # libtool compile mode | |
- compile) | |
- modename="$modename: compile" | |
- # 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= | |
+# 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. | |
+func_split_short_opt () | |
+{ | |
+ my_sed_short_opt='1s/^\(..\).*$/\1/;q' | |
+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q' | |
- for arg | |
- do | |
- case "$arg_mode" in | |
- arg ) | |
- # do not "continue". Instead, add this to base_compile | |
- lastarg="$arg" | |
- arg_mode=normal | |
- ;; | |
+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` | |
+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` | |
+} # func_split_short_opt may be replaced by extended shell implementation | |
- target ) | |
- libobj="$arg" | |
- arg_mode=normal | |
- continue | |
- ;; | |
- normal ) | |
- # Accept any command-line options. | |
- case $arg in | |
- -o) | |
- if test -n "$libobj" ; then | |
- $echo "$modename: you cannot specify \`-o' more than once" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
- arg_mode=target | |
- continue | |
- ;; | |
+# func_split_long_opt longopt | |
+# Set func_split_long_opt_name and func_split_long_opt_arg shell | |
+# variables after splitting LONGOPT at the `=' sign. | |
+func_split_long_opt () | |
+{ | |
+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' | |
+ my_sed_long_arg='1s/^--[^=]*=//' | |
- -static | -prefer-pic | -prefer-non-pic) | |
- later="$later $arg" | |
- continue | |
- ;; | |
+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` | |
+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` | |
+} # func_split_long_opt may be replaced by extended shell implementation | |
- -no-suppress) | |
- suppress_opt=no | |
- continue | |
- ;; | |
+exit_cmd=: | |
- -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,*) | |
- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` | |
- lastarg= | |
- save_ifs="$IFS"; IFS=',' | |
- for arg in $args; do | |
- IFS="$save_ifs" | |
- # Double-quote args containing other shell metacharacters. | |
- # Many Bourne shells cannot handle close brackets correctly | |
- # in scan sets, so we specify it separately. | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- lastarg="$lastarg $arg" | |
- done | |
- IFS="$save_ifs" | |
- lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` | |
- # Add the arguments to base_compile. | |
- base_compile="$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 | |
+magic="%%%MAGIC variable%%%" | |
+magic_exe="%%%MAGIC EXE variable%%%" | |
- # Aesthetically quote the previous argument. | |
- lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` | |
+# Global variables. | |
+nonopt= | |
+preserve_args= | |
+lo2o="s/\\.lo\$/.${objext}/" | |
+o2lo="s/\\.${objext}\$/.lo/" | |
+extracted_archives= | |
+extracted_serial=0 | |
- case $lastarg in | |
- # Double-quote args containing other shell metacharacters. | |
- # Many Bourne shells cannot handle close brackets correctly | |
- # in scan sets, and some SunOS ksh mistreat backslash-escaping | |
- # in scan sets (worked around with variable expansion), | |
- # and furthermore cannot handle '|' '&' '(' ')' in scan sets | |
- # at all, so we specify them separately. | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- lastarg="\"$lastarg\"" | |
- ;; | |
- esac | |
+# 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= | |
- base_compile="$base_compile $lastarg" | |
- done # for arg | |
+# func_append var value | |
+# Append VALUE to the end of shell variable VAR. | |
+func_append () | |
+{ | |
+ eval "${1}=\$${1}\${2}" | |
+} # func_append may be replaced by extended shell implementation | |
- case $arg_mode in | |
- arg) | |
- $echo "$modename: you must specify an argument for -Xcompile" | |
- exit $EXIT_FAILURE | |
- ;; | |
- target) | |
- $echo "$modename: you must specify a target with \`-o'" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- *) | |
- # Get the name of the library object. | |
- [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` | |
- ;; | |
- esac | |
+# func_append_quoted var value | |
+# Quote VALUE and append to the end of shell variable VAR, separated | |
+# by a space. | |
+func_append_quoted () | |
+{ | |
+ func_quote_for_eval "${2}" | |
+ eval "${1}=\$${1}\\ \$func_quote_for_eval_result" | |
+} # func_append_quoted may be replaced by extended shell implementation | |
- # Recognize several different file suffixes. | |
- # If the user specifies -o file.o, it is replaced with file.lo | |
- xform='[cCFSifmso]' | |
- case $libobj in | |
- *.ada) xform=ada ;; | |
- *.adb) xform=adb ;; | |
- *.ads) xform=ads ;; | |
- *.asm) xform=asm ;; | |
- *.c++) xform=c++ ;; | |
- *.cc) xform=cc ;; | |
- *.ii) xform=ii ;; | |
- *.class) xform=class ;; | |
- *.cpp) xform=cpp ;; | |
- *.cxx) xform=cxx ;; | |
- *.f90) xform=f90 ;; | |
- *.for) xform=for ;; | |
- *.java) xform=java ;; | |
- esac | |
- libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` | |
+# func_arith arithmetic-term... | |
+func_arith () | |
+{ | |
+ func_arith_result=`expr "${@}"` | |
+} # func_arith may be replaced by extended shell implementation | |
- case $libobj in | |
- *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; | |
- *) | |
- $echo "$modename: cannot determine name of library object from \`$libobj… | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
- func_infer_tag $base_compile | |
+# func_len string | |
+# STRING may not start with a hyphen. | |
+func_len () | |
+{ | |
+ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` | |
+} # func_len may be replaced by extended shell implementation | |
- for arg in $later; do | |
- case $arg in | |
- -static) | |
- build_old_libs=yes | |
- continue | |
- ;; | |
- -prefer-pic) | |
- pic_mode=yes | |
- continue | |
- ;; | |
+# func_lo2o object | |
+func_lo2o () | |
+{ | |
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` | |
+} # func_lo2o may be replaced by extended shell implementation | |
- -prefer-non-pic) | |
- pic_mode=no | |
- continue | |
- ;; | |
- esac | |
+ | |
+# func_xform libobj-or-source | |
+func_xform () | |
+{ | |
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` | |
+} # func_xform may be replaced by extended shell implementation | |
+ | |
+ | |
+# func_fatal_configuration arg... | |
+# Echo program name prefixed message to standard error, followed by | |
+# a configuration failure hint, and exit. | |
+func_fatal_configuration () | |
+{ | |
+ func_error ${1+"$@"} | |
+ func_error "See the $PACKAGE documentation for more information." | |
+ func_fatal_error "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: $ta… | |
done | |
- qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` | |
- case $qlibobj in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- qlibobj="\"$qlibobj\"" ;; | |
- esac | |
- if test "X$libobj" != "X$qlibobj"; then | |
- $echo "$modename: libobj name \`$libobj' may not contain shell special… | |
- exit $EXIT_FAILURE | |
- fi | |
- objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` | |
- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$xdir" = "X$obj"; then | |
- xdir= | |
- else | |
- xdir=$xdir/ | |
- fi | |
- lobj=${xdir}$objdir/$objname | |
+ exit $? | |
+} | |
- if test -z "$base_compile"; then | |
- $echo "$modename: you must specify a compilation command" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
+# func_features | |
+# Display the features supported by this script. | |
+func_features () | |
+{ | |
+ echo "host: $host" | |
+ if test "$build_libtool_libs" = yes; then | |
+ echo "enable shared libraries" | |
+ else | |
+ echo "disable shared libraries" | |
fi | |
- | |
- # Delete any leftover library objects. | |
if test "$build_old_libs" = yes; then | |
- removelist="$obj $lobj $libobj ${libobj}T" | |
+ echo "enable static libraries" | |
else | |
- removelist="$lobj $libobj ${libobj}T" | |
+ echo "disable static libraries" | |
fi | |
- $run $rm $removelist | |
- trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 | |
+ 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" | |
- # On Cygwin there's no "real" PIC flag so we must build both object types | |
- case $host_os in | |
- cygwin* | mingw* | pw32* | os2*) | |
- pic_mode=default | |
+ 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 | |
- if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then | |
- # non-PIC code in shared libraries is not supported | |
- pic_mode=default | |
- fi | |
+ esac | |
- # Calculate the filename of the output object if compiler does | |
- # not support -o with -c | |
- if test "$compiler_c_o" = no; then | |
- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.$… | |
- lockfile="$output_obj.lock" | |
- removelist="$removelist $output_obj $lockfile" | |
- trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 | |
+ # 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 | |
- output_obj= | |
- need_locks=no | |
- lockfile= | |
+ cat >&2 <<_LT_EOF | |
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $packa… | |
+$progname: but the definition of this LT_INIT comes from revision $macro_revis… | |
+$progname: You should recreate aclocal.m4 with macros from revision $package_r… | |
+$progname: of $PACKAGE $VERSION and run autoconf again. | |
+_LT_EOF | |
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 "$need_locks" = yes; then | |
- until $run ln "$progpath" "$lockfile" 2>/dev/null; do | |
- $show "Waiting for $lockfile to be removed" | |
- sleep 2 | |
- done | |
- elif test "$need_locks" = warn; then | |
- if test -f "$lockfile"; then | |
- $echo "\ | |
-*** ERROR, $lockfile exists and contains: | |
-`cat $lockfile 2>/dev/null` | |
+ exit $EXIT_MISMATCH | |
+ fi | |
+} | |
-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." | |
- $run $rm $removelist | |
- exit $EXIT_FAILURE | |
- fi | |
- $echo "$srcfile" > "$lockfile" | |
- fi | |
+# 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 | |
+ ;; | |
+esac | |
- if test -n "$fix_srcfile_path"; then | |
- eval srcfile=\"$fix_srcfile_path\" | |
- fi | |
- qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` | |
- case $qsrcfile in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- qsrcfile="\"$qsrcfile\"" ;; | |
- esac | |
- $run $rm "$libobj" "${libobj}T" | |
- # Create a libtool object file (analogous to a ".la" file), | |
- # but don't create it if we're doing a dry run. | |
- test -z "$run" && cat > ${libobj}T <<EOF | |
-# $libobj - a libtool object file | |
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |
-# | |
-# Please DO NOT delete this file! | |
-# It is necessary for linking the library. | |
+# Option defaults: | |
+opt_debug=: | |
+opt_dry_run=false | |
+opt_config=false | |
+opt_preserve_dup_deps=false | |
+opt_features=false | |
+opt_finish=false | |
+opt_help=false | |
+opt_help_all=false | |
+opt_silent=: | |
+opt_warning=: | |
+opt_verbose=: | |
+opt_silent=false | |
+opt_verbose=false | |
-# Name of the PIC object. | |
-EOF | |
- # Only build a PIC object if we are building libtool libraries. | |
- if test "$build_libtool_libs" = yes; then | |
- # Without this assignment, base_compile gets emptied. | |
- fbsd_hideous_sh_bug=$base_compile | |
+# Parse options once, thoroughly. This comes as soon as possible in the | |
+# script to make things like `--version' happen as quickly as we can. | |
+{ | |
+ # this just eases exit handling | |
+ while test $# -gt 0; do | |
+ opt="$1" | |
+ shift | |
+ case $opt in | |
+ --debug|-x) opt_debug='set -x' | |
+ func_echo "enabling shell trace mode" | |
+ $opt_debug | |
+ ;; | |
+ --dry-run|--dryrun|-n) | |
+ opt_dry_run=: | |
+ ;; | |
+ --config) | |
+ opt_config=: | |
+func_config | |
+ ;; | |
+ --dlopen|-dlopen) | |
+ optarg="$1" | |
+ opt_dlopen="${opt_dlopen+$opt_dlopen | |
+}$optarg" | |
+ shift | |
+ ;; | |
+ --preserve-dup-deps) | |
+ opt_preserve_dup_deps=: | |
+ ;; | |
+ --features) | |
+ opt_features=: | |
+func_features | |
+ ;; | |
+ --finish) | |
+ opt_finish=: | |
+set dummy --mode finish ${1+"$@"}; shift | |
+ ;; | |
+ --help) | |
+ opt_help=: | |
+ ;; | |
+ --help-all) | |
+ opt_help_all=: | |
+opt_help=': help-all' | |
+ ;; | |
+ --mode) | |
+ test $# = 0 && func_missing_arg $opt && break | |
+ optarg="$1" | |
+ opt_mode="$optarg" | |
+case $optarg in | |
+ # Valid mode arguments: | |
+ clean|compile|execute|finish|install|link|relink|uninstall) ;; | |
+ | |
+ # Catch anything else as an error | |
+ *) func_error "invalid argument for $opt" | |
+ exit_cmd=exit | |
+ break | |
+ ;; | |
+esac | |
+ shift | |
+ ;; | |
+ --no-silent|--no-quiet) | |
+ opt_silent=false | |
+func_append preserve_args " $opt" | |
+ ;; | |
+ --no-warning|--no-warn) | |
+ opt_warning=false | |
+func_append preserve_args " $opt" | |
+ ;; | |
+ --no-verbose) | |
+ opt_verbose=false | |
+func_append preserve_args " $opt" | |
+ ;; | |
+ --silent|--quiet) | |
+ opt_silent=: | |
+func_append preserve_args " $opt" | |
+ opt_verbose=false | |
+ ;; | |
+ --verbose|-v) | |
+ opt_verbose=: | |
+func_append preserve_args " $opt" | |
+opt_silent=false | |
+ ;; | |
+ --tag) | |
+ test $# = 0 && func_missing_arg $opt && break | |
+ optarg="$1" | |
+ opt_tag="$optarg" | |
+func_append preserve_args " $opt $optarg" | |
+func_enable_tag "$optarg" | |
+ shift | |
+ ;; | |
- if test "$pic_mode" != no; then | |
- command="$base_compile $qsrcfile $pic_flag" | |
- else | |
- # Don't build PIC code | |
- command="$base_compile $qsrcfile" | |
- fi | |
+ -\?|-h) func_usage ;; | |
+ --help) func_help ;; | |
+ --version) func_version ;; | |
- if test ! -d "${xdir}$objdir"; then | |
- $show "$mkdir ${xdir}$objdir" | |
- $run $mkdir ${xdir}$objdir | |
- status=$? | |
- if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then | |
- exit $status | |
- fi | |
- fi | |
+ # Separate optargs to long options: | |
+ --*=*) | |
+ func_split_long_opt "$opt" | |
+ set dummy "$func_split_long_opt_name" "$func_split_lon… | |
+ shift | |
+ ;; | |
- if test -z "$output_obj"; then | |
- # Place PIC objects in $objdir | |
- command="$command -o $lobj" | |
- fi | |
+ # Separate non-argument short options: | |
+ -\?*|-h*|-n*|-v*) | |
+ func_split_short_opt "$opt" | |
+ set dummy "$func_split_short_opt_name" "-$func_split_s… | |
+ shift | |
+ ;; | |
- $run $rm "$lobj" "$output_obj" | |
+ --) break ;; | |
+ -*) func_fatal_help "unrecognized option \`$opt'" ;; | |
+ *) set dummy "$opt" ${1+"$@"}; shift; break ;; | |
+ esac | |
+ done | |
- $show "$command" | |
- if $run eval "$command"; then : | |
- else | |
- test -n "$output_obj" && $run $rm $removelist | |
- exit $EXIT_FAILURE | |
- fi | |
+ # Validate options: | |
- if test "$need_locks" = warn && | |
- test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |
- $echo "\ | |
-*** ERROR, $lockfile contains: | |
-`cat $lockfile 2>/dev/null` | |
+ # save first non-option argument | |
+ if test "$#" -gt 0; then | |
+ nonopt="$opt" | |
+ shift | |
+ fi | |
-but it should contain: | |
-$srcfile | |
+ # preserve --debug | |
+ test "$opt_debug" = : || func_append preserve_args " --debug" | |
-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." | |
+ case $host in | |
+ *cygwin* | *mingw* | *pw32* | *cegcc*) | |
+ # don't eliminate duplications in $postdeps and $predeps | |
+ opt_duplicate_compiler_generated_deps=: | |
+ ;; | |
+ *) | |
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps | |
+ ;; | |
+ esac | |
- $run $rm $removelist | |
- exit $EXIT_FAILURE | |
- fi | |
+ $opt_help || { | |
+ # Sanity checks first: | |
+ func_check_version_match | |
- # 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 | |
- $show "$mv $output_obj $lobj" | |
- if $run $mv $output_obj $lobj; then : | |
- else | |
- error=$? | |
- $run $rm $removelist | |
- exit $error | |
- fi | |
- fi | |
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then | |
+ func_fatal_configuration "not configured to build any kind of library" | |
+ fi | |
- # Append the name of the PIC object to the libtool object file. | |
- test -z "$run" && cat >> ${libobj}T <<EOF | |
-pic_object='$objdir/$objname' | |
+ # Darwin sucks | |
+ eval std_shrext=\"$shrext_cmds\" | |
-EOF | |
+ # Only execute mode is allowed to have -dlopen flags. | |
+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then | |
+ func_error "unrecognized option \`-dlopen'" | |
+ $ECHO "$help" 1>&2 | |
+ exit $EXIT_FAILURE | |
+ fi | |
- # Allow error messages only from the first compilation. | |
- if test "$suppress_opt" = yes; then | |
- suppress_output=' >/dev/null 2>&1' | |
- fi | |
- else | |
- # No PIC object so indicate it doesn't exist in the libtool | |
- # object file. | |
- test -z "$run" && cat >> ${libobj}T <<EOF | |
-pic_object=none | |
+ # Change the help message to a mode-specific one. | |
+ generic_help="$help" | |
+ help="Try \`$progname --help --mode=$opt_mode' for more information." | |
+ } | |
-EOF | |
- fi | |
- # Only build a position-dependent object if we build old libraries. | |
- if test "$build_old_libs" = yes; then | |
- if test "$pic_mode" != yes; then | |
- # Don't build PIC code | |
- command="$base_compile $qsrcfile" | |
- else | |
- command="$base_compile $qsrcfile $pic_flag" | |
- fi | |
- if test "$compiler_c_o" = yes; then | |
- command="$command -o $obj" | |
- fi | |
+ # Bail if the options were screwed | |
+ $exit_cmd $EXIT_FAILURE | |
+} | |
- # Suppress compiler output if we already did a PIC compilation. | |
- command="$command$suppress_output" | |
- $run $rm "$obj" "$output_obj" | |
- $show "$command" | |
- if $run eval "$command"; then : | |
- else | |
- $run $rm $removelist | |
- exit $EXIT_FAILURE | |
- fi | |
- if test "$need_locks" = warn && | |
- 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." | |
+## ----------- ## | |
+## Main. ## | |
+## ----------- ## | |
- $run $rm $removelist | |
- exit $EXIT_FAILURE | |
- fi | |
+# 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 \ | |
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 | |
+} | |
- # Just move the object if needed | |
- if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then | |
- $show "$mv $output_obj $obj" | |
- if $run $mv $output_obj $obj; then : | |
- else | |
- error=$? | |
- $run $rm $removelist | |
- exit $error | |
- fi | |
- fi | |
+# 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 "$lalib_p" = yes | |
+} | |
- # Append the name of the non-PIC object the libtool object file. | |
- # Only append if the libtool object file exists. | |
- test -z "$run" && cat >> ${libobj}T <<EOF | |
-# Name of the non-PIC object. | |
-non_pic_object='$objname' | |
+# 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 () | |
+{ | |
+ func_lalib_p "$1" | |
+} | |
-EOF | |
- else | |
- # Append the name of the non-PIC object the libtool object file. | |
- # Only append if the libtool object file exists. | |
- test -z "$run" && cat >> ${libobj}T <<EOF | |
-# Name of the non-PIC object. | |
-non_pic_object=none | |
+# 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 | |
+} | |
-EOF | |
- fi | |
+# 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_stri… | |
+} | |
- $run $mv "${libobj}T" "${libobj}" | |
+# 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" | |
+} | |
- # Unlock the critical section if it was locked | |
- if test "$need_locks" != no; then | |
- $run $rm "$lockfile" | |
- fi | |
- exit $EXIT_SUCCESS | |
- ;; | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ save_ifs=$IFS; IFS='~' | |
+ for cmd in $1; do | |
+ IFS=$save_ifs | |
+ eval cmd=\"$cmd\" | |
+ func_show_eval "$cmd" "${2-:}" | |
+ done | |
+ IFS=$save_ifs | |
+} | |
- # libtool link mode | |
- link | relink) | |
- modename="$modename: link" | |
- case $host in | |
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |
- # It is impossible to link a dll without this setting, and | |
- # we shouldn't force the makefile maintainer to figure out | |
- # which 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 which 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 | |
- ;; | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ case $1 in | |
+ */* | *\\*) . "$1" ;; | |
+ *) . "./$1" ;; | |
esac | |
- libtool_args="$nonopt" | |
- base_compile="$nonopt $@" | |
- compile_command="$nonopt" | |
- finalize_command="$nonopt" | |
- | |
- compile_rpath= | |
- finalize_rpath= | |
- compile_shlibpath= | |
- finalize_shlibpath= | |
- convenience= | |
- old_convenience= | |
- deplibs= | |
- old_deplibs= | |
- compiler_flags= | |
- linker_flags= | |
- dllsearchpath= | |
- lib_search_path=`pwd` | |
- inst_prefix_dir= | |
+} | |
- avoid_version=no | |
- dlfiles= | |
- dlprefiles= | |
- dlself=no | |
- export_dynamic=no | |
- export_symbols= | |
- export_symbols_regex= | |
- generated= | |
- libobjs= | |
- ltlibs= | |
- module=no | |
- no_install=no | |
- objs= | |
- non_pic_objects= | |
- precious_files_regex= | |
- prefer_static_libs=no | |
- preload=no | |
- prev= | |
- prevarg= | |
- release= | |
- rpath= | |
- xrpath= | |
- perm_rpath= | |
- temp_rpath= | |
- thread_safe=no | |
- vinfo= | |
- vinfo_number=no | |
- func_infer_tag $base_compile | |
+# 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 | |
+} | |
- # We need to know -static, to get the right output filenames. | |
- for arg | |
- do | |
- case $arg in | |
- -all-static | -static) | |
- if test "X$arg" = "X-all-static"; then | |
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; … | |
- $echo "$modename: warning: complete static linking is impossible i… | |
- fi | |
- if test -n "$link_static_flag"; then | |
- dlopen_self=$dlopen_self_static | |
- fi | |
- else | |
- if test -z "$pic_flag" && test -n "$link_static_flag"; then | |
- dlopen_self=$dlopen_self_static | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ 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… | |
+ # 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… | |
+ # Evaluate the configuration. | |
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# … | |
+ 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_… | |
+ # 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 | |
- build_libtool_libs=no | |
- build_old_libs=yes | |
- prefer_static_libs=yes | |
- break | |
;; | |
esac | |
- done | |
+ fi | |
+} | |
- # 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 | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: … | |
- ;; | |
- *) qarg=$arg ;; | |
- esac | |
- libtool_args="$libtool_args $qarg" | |
- # If the previous option needs an argument, assign it. | |
- if test -n "$prev"; then | |
- case $prev in | |
- output) | |
- compile_command="$compile_command @OUTPUT@" | |
- finalize_command="$finalize_command @OUTPUT@" | |
- ;; | |
- esac | |
+# 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 "$build_libtool_libs" = yes; then | |
+ write_lobj=\'${2}\' | |
+ else | |
+ write_lobj=none | |
+ fi | |
- case $prev in | |
- dlfiles|dlprefiles) | |
- if test "$preload" = no; then | |
- # Add the symbol object into the linking commands. | |
- compile_command="$compile_command @SYMFILE@" | |
- finalize_command="$finalize_command @SYMFILE@" | |
- preload=yes | |
- fi | |
- case $arg in | |
- *.la | *.lo) ;; # We handle these cases below. | |
- force) | |
- if test "$dlself" = no; then | |
- dlself=needless | |
- export_dynamic=yes | |
- fi | |
- prev= | |
- continue | |
- ;; | |
- self) | |
- if test "$prev" = dlprefiles; then | |
- dlself=yes | |
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then | |
- dlself=yes | |
- else | |
- dlself=needless | |
- export_dynamic=yes | |
- fi | |
- prev= | |
- continue | |
- ;; | |
- *) | |
- if test "$prev" = dlfiles; then | |
- dlfiles="$dlfiles $arg" | |
- else | |
- dlprefiles="$dlprefiles $arg" | |
- fi | |
- prev= | |
- continue | |
- ;; | |
- esac | |
- ;; | |
- expsyms) | |
- export_symbols="$arg" | |
- if test ! -f "$arg"; then | |
- $echo "$modename: symbol file \`$arg' does not exist" | |
- exit $EXIT_FAILURE | |
- fi | |
- prev= | |
- continue | |
- ;; | |
- expsyms_regex) | |
- export_symbols_regex="$arg" | |
- prev= | |
- continue | |
- ;; | |
- inst_prefix) | |
- inst_prefix_dir="$arg" | |
- prev= | |
- continue | |
- ;; | |
- precious_regex) | |
- precious_files_regex="$arg" | |
- prev= | |
- continue | |
- ;; | |
- release) | |
- release="-$arg" | |
- prev= | |
- continue | |
- ;; | |
- objectlist) | |
- if test -f "$arg"; then | |
- save_arg=$arg | |
- moreargs= | |
- for fil in `cat $save_arg` | |
- do | |
-# moreargs="$moreargs $fil" | |
- arg=$fil | |
- # A libtool-controlled object. | |
+ if test "$build_old_libs" = yes; then | |
+ write_oldobj=\'${3}\' | |
+ else | |
+ write_oldobj=none | |
+ fi | |
- # Check to see that this really is a libtool object. | |
- if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/d… | |
- pic_object= | |
- non_pic_object= | |
+ $opt_dry_run || { | |
+ cat >${write_libobj}T <<EOF | |
+# $write_libobj - a libtool object file | |
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | |
+# | |
+# Please DO NOT delete this file! | |
+# It is necessary for linking the library. | |
- # Read the .lo file | |
- # If there is no directory component, then add one. | |
- case $arg in | |
- */* | *\\*) . $arg ;; | |
- *) . ./$arg ;; | |
- esac | |
+# Name of the PIC object. | |
+pic_object=$write_lobj | |
- if test -z "$pic_object" || \ | |
- test -z "$non_pic_object" || | |
- test "$pic_object" = none && \ | |
- test "$non_pic_object" = none; then | |
- $echo "$modename: cannot find name of object for \`$arg'" 1>… | |
- exit $EXIT_FAILURE | |
- fi | |
+# Name of the non-PIC object | |
+non_pic_object=$write_oldobj | |
- # Extract subdirectory from the argument. | |
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$xdir" = "X$arg"; then | |
- xdir= | |
- else | |
- xdir="$xdir/" | |
- fi | |
+EOF | |
+ $MV "${write_libobj}T" "${write_libobj}" | |
+ } | |
+} | |
- if test "$pic_object" != none; then | |
- # Prepend the subdirectory the object is found in. | |
- pic_object="$xdir$pic_object" | |
- if test "$prev" = dlfiles; then | |
- if test "$build_libtool_libs" = yes && test "$dlopen_suppo… | |
- dlfiles="$dlfiles $pic_object" | |
- prev= | |
- continue | |
- else | |
- # If libtool objects are unsupported, then we need to pr… | |
- prev=dlprefiles | |
- fi | |
- fi | |
+################################################## | |
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # | |
+################################################## | |
- # CHECK ME: I think I busted this. -Ossama | |
- if test "$prev" = dlprefiles; then | |
- # Preload the old-style object. | |
- dlprefiles="$dlprefiles $pic_object" | |
- prev= | |
- fi | |
+# func_convert_core_file_wine_to_w32 ARG | |
+# Helper function used by file name conversion functions when $build is *nix, | |
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a | |
+# correctly configured wine environment available, with the winepath program | |
+# in $build's $PATH. | |
+# | |
+# ARG is the $build file name to be converted to w32 format. | |
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will | |
+# be empty on error (or when ARG is empty) | |
+func_convert_core_file_wine_to_w32 () | |
+{ | |
+ $opt_debug | |
+ func_convert_core_file_wine_to_w32_result="$1" | |
+ if test -n "$1"; then | |
+ # Unfortunately, winepath does not exit with a non-zero error code, so we | |
+ # are forced to check the contents of stdout. On the other hand, if the | |
+ # command is not found, the shell will set an exit code of 127 and print | |
+ # *an error message* to stdout. So we must check for both error code of | |
+ # zero AND non-empty stdout, which explains the odd construction: | |
+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` | |
+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}";… | |
+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_fil… | |
+ $SED -e "$lt_sed_naive_backslashify"` | |
+ else | |
+ func_convert_core_file_wine_to_w32_result= | |
+ fi | |
+ fi | |
+} | |
+# end: func_convert_core_file_wine_to_w32 | |
- # A PIC object. | |
- libobjs="$libobjs $pic_object" | |
- arg="$pic_object" | |
- fi | |
- # Non-PIC object. | |
- if test "$non_pic_object" != none; then | |
- # Prepend the subdirectory the object is found in. | |
- non_pic_object="$xdir$non_pic_object" | |
+# func_convert_core_path_wine_to_w32 ARG | |
+# Helper function used by path conversion functions when $build is *nix, and | |
+# $host is mingw, 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 nam… | |
+# are convertible, then the result may be empty. | |
+func_convert_core_path_wine_to_w32 () | |
+{ | |
+ $opt_debug | |
+ # 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_… | |
+ 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_w… | |
+ else | |
+ func_append func_convert_core_path_wine_to_w32_result ";$func_conver… | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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_CYGP… | |
+ fi | |
+} | |
+#end: func_cygpath | |
- # A standard non-PIC object | |
- non_pic_objects="$non_pic_objects $non_pic_object" | |
- if test -z "$pic_object" || test "$pic_object" = none ; then | |
- arg="$non_pic_object" | |
- fi | |
- fi | |
- else | |
- # Only an error if not doing a dry-run. | |
- if test -z "$run"; then | |
- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 | |
- exit $EXIT_FAILURE | |
- else | |
- # Dry-run case. | |
- # Extract subdirectory from the argument. | |
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$xdir" = "X$arg"; then | |
- xdir= | |
- else | |
- xdir="$xdir/" | |
- fi | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ # awkward: cmd appends spaces to result | |
+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | | |
+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` | |
+} | |
+#end: func_convert_core_msys_to_w32 | |
- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo… | |
- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` | |
- libobjs="$libobjs $pic_object" | |
- non_pic_objects="$non_pic_objects $non_pic_object" | |
- fi | |
- fi | |
- done | |
- else | |
- $echo "$modename: link input file \`$save_arg' does not exist" | |
- exit $EXIT_FAILURE | |
- fi | |
- arg=$save_arg | |
- prev= | |
- continue | |
- ;; | |
- rpath | xrpath) | |
- # We need an absolute path. | |
- case $arg in | |
- [\\/]* | [A-Za-z]:[\\/]*) ;; | |
- *) | |
- $echo "$modename: only absolute run-paths are allowed" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
- if test "$prev" = rpath; then | |
- case "$rpath " in | |
- *" $arg "*) ;; | |
- *) rpath="$rpath $arg" ;; | |
- esac | |
- else | |
- case "$xrpath " in | |
- *" $arg "*) ;; | |
- *) xrpath="$xrpath $arg" ;; | |
- esac | |
- fi | |
- prev= | |
- continue | |
- ;; | |
- xcompiler) | |
- compiler_flags="$compiler_flags $qarg" | |
- prev= | |
- compile_command="$compile_command $qarg" | |
- finalize_command="$finalize_command $qarg" | |
+ | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 | |
+ | |
+ | |
+################################################## | |
+# $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 () | |
+{ | |
+ $opt_debug | |
+ $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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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 () | |
+{ | |
+ $opt_debug | |
+ 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_mode_compile arg... | |
+func_mode_compile () | |
+{ | |
+ $opt_debug | |
+ # 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 | |
;; | |
- xlinker) | |
- linker_flags="$linker_flags $qarg" | |
- compiler_flags="$compiler_flags $wl$qarg" | |
- prev= | |
- compile_command="$compile_command $wl$qarg" | |
- finalize_command="$finalize_command $wl$qarg" | |
+ | |
+ -pie | -fpie | -fPIE) | |
+ func_append pie_flag " $arg" | |
continue | |
;; | |
- xcclinker) | |
- linker_flags="$linker_flags $qarg" | |
- compiler_flags="$compiler_flags $qarg" | |
- prev= | |
- compile_command="$compile_command $qarg" | |
- finalize_command="$finalize_command $qarg" | |
+ | |
+ -shared | -static | -prefer-pic | -prefer-non-pic) | |
+ func_append later " $arg" | |
continue | |
;; | |
- shrext) | |
- shrext_cmds="$arg" | |
- prev= | |
+ | |
+ -no-suppress) | |
+ suppress_opt=no | |
continue | |
;; | |
- darwin_framework) | |
- compiler_flags="$compiler_flags $arg" | |
- prev= | |
+ | |
+ -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 | |
;; | |
+ | |
*) | |
- eval "$prev=\"\$arg\"" | |
- prev= | |
- continue | |
+ # Accept the current argument as the source file. | |
+ # The previous "srcfile" becomes the current argument. | |
+ # | |
+ lastarg="$srcfile" | |
+ srcfile="$arg" | |
;; | |
- esac | |
- fi # test -n "$prev" | |
+ esac # case $arg | |
+ ;; | |
+ esac # case $arg_mode | |
- prevarg="$arg" | |
+ # Aesthetically quote the previous argument. | |
+ func_append_quoted base_compile "$lastarg" | |
+ done # for arg | |
- case $arg in | |
- -all-static) | |
- if test -n "$link_static_flag"; then | |
- compile_command="$compile_command $link_static_flag" | |
- finalize_command="$finalize_command $link_static_flag" | |
- fi | |
- continue | |
- ;; | |
+ 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 | |
- -allow-undefined) | |
- # FIXME: remove this flag sometime in the future. | |
- $echo "$modename: \`-allow-undefined' is deprecated because it is the … | |
- continue | |
- ;; | |
+ # 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 | |
- -avoid-version) | |
- avoid_version=yes | |
- continue | |
- ;; | |
+ case $libobj in | |
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; | |
+ *) | |
+ func_fatal_error "cannot determine name of library object from \`$libobj… | |
+ ;; | |
+ esac | |
- -dlopen) | |
- prev=dlfiles | |
+ func_infer_tag $base_compile | |
+ | |
+ for arg in $later; do | |
+ case $arg in | |
+ -shared) | |
+ test "$build_libtool_libs" != yes && \ | |
+ func_fatal_configuration "can not build a shared library" | |
+ build_old_libs=no | |
continue | |
;; | |
- -dlpreopen) | |
- prev=dlprefiles | |
+ -static) | |
+ build_libtool_libs=no | |
+ build_old_libs=yes | |
continue | |
;; | |
- -export-dynamic) | |
- export_dynamic=yes | |
+ -prefer-pic) | |
+ pic_mode=yes | |
continue | |
;; | |
- -export-symbols | -export-symbols-regex) | |
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then | |
- $echo "$modename: more than one -exported-symbols argument is not al… | |
- exit $EXIT_FAILURE | |
- fi | |
- if test "X$arg" = "X-export-symbols"; then | |
- prev=expsyms | |
- else | |
- prev=expsyms_regex | |
- fi | |
+ -prefer-non-pic) | |
+ pic_mode=no | |
continue | |
;; | |
+ esac | |
+ done | |
- -framework) | |
- prev=darwin_framework | |
- compiler_flags="$compiler_flags $arg" | |
- continue | |
- ;; | |
+ func_quote_for_eval "$libobj" | |
+ test "X$libobj" != "X$func_quote_for_eval_result" \ | |
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ | |
+ && func_warning "libobj name \`$libobj' may not contain shell special ch… | |
+ func_dirname_and_basename "$obj" "/" "" | |
+ objname="$func_basename_result" | |
+ xdir="$func_dirname_result" | |
+ lobj=${xdir}$objdir/$objname | |
- -inst-prefix-dir) | |
- prev=inst_prefix | |
- continue | |
- ;; | |
+ test -z "$base_compile" && \ | |
+ func_fatal_help "you must specify a compilation command" | |
- # 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*) | |
- compile_command="$compile_command $arg" | |
- finalize_command="$finalize_command $arg" | |
- ;; | |
- esac | |
- continue | |
- ;; | |
+ # Delete any leftover library objects. | |
+ if test "$build_old_libs" = yes; then | |
+ removelist="$obj $lobj $libobj ${libobj}T" | |
+ else | |
+ removelist="$lobj $libobj ${libobj}T" | |
+ fi | |
- -L*) | |
- dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` | |
- # We need an absolute path. | |
- case $dir in | |
- [\\/]* | [A-Za-z]:[\\/]*) ;; | |
- *) | |
- absdir=`cd "$dir" && pwd` | |
- if test -z "$absdir"; then | |
- $echo "$modename: cannot determine absolute directory name of \`$d… | |
- exit $EXIT_FAILURE | |
- fi | |
- dir="$absdir" | |
- ;; | |
- esac | |
- case "$deplibs " in | |
- *" -L$dir "*) ;; | |
- *) | |
- deplibs="$deplibs -L$dir" | |
- lib_search_path="$lib_search_path $dir" | |
- ;; | |
- esac | |
- case $host in | |
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |
- case :$dllsearchpath: in | |
- *":$dir:"*) ;; | |
- *) dllsearchpath="$dllsearchpath:$dir";; | |
- esac | |
- ;; | |
- esac | |
- continue | |
- ;; | |
+ # On Cygwin there's no "real" PIC flag so we must build both object types | |
+ case $host_os in | |
+ cygwin* | mingw* | pw32* | os2* | cegcc*) | |
+ pic_mode=default | |
+ ;; | |
+ esac | |
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then | |
+ # non-PIC code in shared libraries is not supported | |
+ pic_mode=default | |
+ fi | |
- -l*) | |
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then | |
- case $host in | |
- *-*-cygwin* | *-*-pw32* | *-*-beos*) | |
- # These systems don't actually have a C or math library (as such) | |
- continue | |
- ;; | |
- *-*-mingw* | *-*-os2*) | |
- # These systems don't actually have a C library (as such) | |
- test "X$arg" = "X-lc" && continue | |
- ;; | |
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |
- # Do not include libc due to us having libc/libc_r. | |
- test "X$arg" = "X-lc" && continue | |
- ;; | |
- *-*-rhapsody* | *-*-darwin1.[012]) | |
- # Rhapsody C and math libraries are in the System framework | |
- deplibs="$deplibs -framework System" | |
- continue | |
- esac | |
- elif test "X$arg" = "X-lc_r"; then | |
- case $host in | |
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |
- # Do not include libc_r directly, use -pthread flag. | |
- continue | |
- ;; | |
- esac | |
- fi | |
- deplibs="$deplibs $arg" | |
- continue | |
- ;; | |
+ # Calculate the filename of the output object if compiler does | |
+ # not support -o with -c | |
+ if test "$compiler_c_o" = no; then | |
+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} | |
+ lockfile="$output_obj.lock" | |
+ else | |
+ output_obj= | |
+ need_locks=no | |
+ lockfile= | |
+ fi | |
- # Tru64 UNIX uses -model [arg] to determine the layout of C++ | |
- # classes, name mangling, and exception handling. | |
- -model) | |
- compile_command="$compile_command $arg" | |
- compiler_flags="$compiler_flags $arg" | |
- finalize_command="$finalize_command $arg" | |
- prev=xcompiler | |
- continue | |
- ;; | |
+ # 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 "$need_locks" = yes; 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 "$need_locks" = warn; then | |
+ if test -f "$lockfile"; then | |
+ $ECHO "\ | |
+*** ERROR, $lockfile exists and contains: | |
+`cat $lockfile 2>/dev/null` | |
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) | |
- compiler_flags="$compiler_flags $arg" | |
- compile_command="$compile_command $arg" | |
- finalize_command="$finalize_command $arg" | |
- continue | |
- ;; | |
+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." | |
- -module) | |
- module=yes | |
- continue | |
- ;; | |
+ $opt_dry_run || $RM $removelist | |
+ exit $EXIT_FAILURE | |
+ fi | |
+ func_append removelist " $output_obj" | |
+ $ECHO "$srcfile" > "$lockfile" | |
+ fi | |
- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler | |
- # -r[0-9][0-9]* specifies the processor on the SGI compiler | |
- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler | |
- # +DA*, +DD* enable 64-bit mode on the HP compiler | |
- # -q* pass through compiler args for the IBM compiler | |
- # -m* pass through architecture-specific compiler args for GCC | |
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) | |
+ $opt_dry_run || $RM $removelist | |
+ func_append removelist " $lockfile" | |
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 | |
- # Unknown arguments in both finalize_command and compile_command need | |
- # to be aesthetically quoted because they are evaled later. | |
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- compile_command="$compile_command $arg" | |
- finalize_command="$finalize_command $arg" | |
- if test "$with_gcc" = "yes" ; then | |
- compiler_flags="$compiler_flags $arg" | |
- fi | |
- continue | |
- ;; | |
+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 | |
+ srcfile=$func_to_tool_file_result | |
+ func_quote_for_eval "$srcfile" | |
+ qsrcfile=$func_quote_for_eval_result | |
- -shrext) | |
- prev=shrext | |
- continue | |
- ;; | |
+ # Only build a PIC object if we are building libtool libraries. | |
+ if test "$build_libtool_libs" = yes; then | |
+ # Without this assignment, base_compile gets emptied. | |
+ fbsd_hideous_sh_bug=$base_compile | |
- -no-fast-install) | |
- fast_install=no | |
- continue | |
- ;; | |
+ if test "$pic_mode" != no; then | |
+ command="$base_compile $qsrcfile $pic_flag" | |
+ else | |
+ # Don't build PIC code | |
+ command="$base_compile $qsrcfile" | |
+ fi | |
- -no-install) | |
- case $host in | |
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |
- # The PATH hackery in wrapper scripts is required on Windows | |
- # in order for the loader to find any dlls it needs. | |
- $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 | |
- $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 | |
- fast_install=no | |
- ;; | |
- *) no_install=yes ;; | |
- esac | |
- continue | |
- ;; | |
+ func_mkdir_p "$xdir$objdir" | |
- -no-undefined) | |
- allow_undefined=no | |
- continue | |
- ;; | |
+ if test -z "$output_obj"; then | |
+ # Place PIC objects in $objdir | |
+ func_append command " -o $lobj" | |
+ fi | |
- -objectlist) | |
- prev=objectlist | |
- continue | |
- ;; | |
+ func_show_eval_locale "$command" \ | |
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' | |
- -o) prev=output ;; | |
+ if test "$need_locks" = warn && | |
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |
+ $ECHO "\ | |
+*** ERROR, $lockfile contains: | |
+`cat $lockfile 2>/dev/null` | |
- -precious-files-regex) | |
- prev=precious_regex | |
- continue | |
- ;; | |
+but it should contain: | |
+$srcfile | |
- -release) | |
- prev=release | |
- continue | |
- ;; | |
+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." | |
- -rpath) | |
- prev=rpath | |
- continue | |
- ;; | |
+ $opt_dry_run || $RM $removelist | |
+ exit $EXIT_FAILURE | |
+ fi | |
- -R) | |
- prev=xrpath | |
- continue | |
- ;; | |
+ # 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 | |
- -R*) | |
- dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` | |
- # We need an absolute path. | |
- case $dir in | |
- [\\/]* | [A-Za-z]:[\\/]*) ;; | |
- *) | |
- $echo "$modename: only absolute run-paths are allowed" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
- case "$xrpath " in | |
- *" $dir "*) ;; | |
- *) xrpath="$xrpath $dir" ;; | |
- esac | |
- continue | |
- ;; | |
+ # Allow error messages only from the first compilation. | |
+ if test "$suppress_opt" = yes; then | |
+ suppress_output=' >/dev/null 2>&1' | |
+ fi | |
+ fi | |
- -static) | |
- # The effects of -static are defined in a previous loop. | |
- # We used to do the same as -all-static on platforms that | |
- # didn't have a PIC flag, but the assumption that the effects | |
- # would be equivalent was wrong. It would break on at least | |
- # Digital Unix and AIX. | |
- continue | |
- ;; | |
+ # Only build a position-dependent object if we build old libraries. | |
+ if test "$build_old_libs" = yes; then | |
+ if test "$pic_mode" != yes; then | |
+ # Don't build PIC code | |
+ command="$base_compile $qsrcfile$pie_flag" | |
+ else | |
+ command="$base_compile $qsrcfile $pic_flag" | |
+ fi | |
+ if test "$compiler_c_o" = yes; then | |
+ func_append command " -o $obj" | |
+ fi | |
- -thread-safe) | |
- thread_safe=yes | |
- continue | |
- ;; | |
+ # 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' | |
- -version-info) | |
- prev=vinfo | |
- continue | |
- ;; | |
- -version-number) | |
- prev=vinfo | |
- vinfo_number=yes | |
- continue | |
- ;; | |
+ if test "$need_locks" = warn && | |
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |
+ $ECHO "\ | |
+*** ERROR, $lockfile contains: | |
+`cat $lockfile 2>/dev/null` | |
- -Wc,*) | |
- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` | |
- arg= | |
- save_ifs="$IFS"; IFS=',' | |
- for flag in $args; do | |
- IFS="$save_ifs" | |
- case $flag in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- flag="\"$flag\"" | |
- ;; | |
- esac | |
- arg="$arg $wl$flag" | |
- compiler_flags="$compiler_flags $flag" | |
- done | |
- IFS="$save_ifs" | |
- arg=`$echo "X$arg" | $Xsed -e "s/^ //"` | |
- ;; | |
+but it should contain: | |
+$srcfile | |
- -Wl,*) | |
- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` | |
- arg= | |
- save_ifs="$IFS"; IFS=',' | |
- for flag in $args; do | |
- IFS="$save_ifs" | |
- case $flag in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- flag="\"$flag\"" | |
- ;; | |
- esac | |
- arg="$arg $wl$flag" | |
- compiler_flags="$compiler_flags $wl$flag" | |
- linker_flags="$linker_flags $flag" | |
- done | |
- IFS="$save_ifs" | |
- arg=`$echo "X$arg" | $Xsed -e "s/^ //"` | |
- ;; | |
+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." | |
- -Xcompiler) | |
- prev=xcompiler | |
- continue | |
- ;; | |
+ $opt_dry_run || $RM $removelist | |
+ exit $EXIT_FAILURE | |
+ fi | |
- -Xlinker) | |
- prev=xlinker | |
- continue | |
- ;; | |
+ # 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 | |
- -XCClinker) | |
- prev=xcclinker | |
- continue | |
- ;; | |
+ $opt_dry_run || { | |
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" | |
- # Some other compiler flag. | |
- -* | +*) | |
- # Unknown arguments in both finalize_command and compile_command need | |
- # to be aesthetically quoted because they are evaled later. | |
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- ;; | |
+ # Unlock the critical section if it was locked | |
+ if test "$need_locks" != no; then | |
+ removelist=$lockfile | |
+ $RM "$lockfile" | |
+ fi | |
+ } | |
- *.$objext) | |
- # A standard object. | |
- objs="$objs $arg" | |
- ;; | |
+ exit $EXIT_SUCCESS | |
+} | |
- *.lo) | |
- # A libtool-controlled object. | |
+$opt_help || { | |
+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"} | |
+} | |
- # Check to see that this really is a libtool object. | |
- if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/nul… | |
- pic_object= | |
- non_pic_object= | |
+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 | |
+ ;; | |
- # Read the .lo file | |
- # If there is no directory component, then add one. | |
- case $arg in | |
- */* | *\\*) . $arg ;; | |
- *) . ./$arg ;; | |
- esac | |
+ clean) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... | |
- if test -z "$pic_object" || \ | |
- test -z "$non_pic_object" || | |
- test "$pic_object" = none && \ | |
- test "$non_pic_object" = none; then | |
- $echo "$modename: cannot find name of object for \`$arg'" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+Remove files from the build directory. | |
- # Extract subdirectory from the argument. | |
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$xdir" = "X$arg"; then | |
- xdir= | |
- else | |
- xdir="$xdir/" | |
- fi | |
+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 test "$pic_object" != none; then | |
- # Prepend the subdirectory the object is found in. | |
- pic_object="$xdir$pic_object" | |
+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." | |
+ ;; | |
- if test "$prev" = dlfiles; then | |
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = … | |
- dlfiles="$dlfiles $pic_object" | |
- prev= | |
- continue | |
- else | |
- # If libtool objects are unsupported, then we need to preload. | |
- prev=dlprefiles | |
- fi | |
- fi | |
+ compile) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE | |
- # CHECK ME: I think I busted this. -Ossama | |
- if test "$prev" = dlprefiles; then | |
- # Preload the old-style object. | |
- dlprefiles="$dlprefiles $pic_object" | |
- prev= | |
- fi | |
+Compile a source file into a libtool library object. | |
- # A PIC object. | |
- libobjs="$libobjs $pic_object" | |
- arg="$pic_object" | |
- fi | |
+This mode accepts the following additional options: | |
- # Non-PIC object. | |
- if test "$non_pic_object" != none; then | |
- # Prepend the subdirectory the object is found in. | |
- non_pic_object="$xdir$non_pic_object" | |
+ -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 pass FLAG directly to the compiler | |
- # A standard non-PIC object | |
- non_pic_objects="$non_pic_objects $non_pic_object" | |
- if test -z "$pic_object" || test "$pic_object" = none ; then | |
- arg="$non_pic_object" | |
- fi | |
- fi | |
- else | |
- # Only an error if not doing a dry-run. | |
- if test -z "$run"; then | |
- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 | |
- exit $EXIT_FAILURE | |
- else | |
- # Dry-run case. | |
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file | |
+from the given SOURCEFILE. | |
- # Extract subdirectory from the argument. | |
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$xdir" = "X$arg"; then | |
- xdir= | |
- else | |
- xdir="$xdir/" | |
- fi | |
+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'." | |
+ ;; | |
- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` | |
- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` | |
- libobjs="$libobjs $pic_object" | |
- non_pic_objects="$non_pic_objects $non_pic_object" | |
- fi | |
- fi | |
- ;; | |
+ execute) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... | |
- *.$libext) | |
- # An archive. | |
- deplibs="$deplibs $arg" | |
- old_deplibs="$old_deplibs $arg" | |
- continue | |
- ;; | |
+Automatically set library path, then run a program. | |
- *.la) | |
- # A libtool-controlled library. | |
+This mode accepts the following additional options: | |
- if test "$prev" = dlfiles; then | |
- # This library was specified with -dlopen. | |
- dlfiles="$dlfiles $arg" | |
- prev= | |
- elif test "$prev" = dlprefiles; then | |
- # The library was specified with -dlpreopen. | |
- dlprefiles="$dlprefiles $arg" | |
- prev= | |
- else | |
- deplibs="$deplibs $arg" | |
- fi | |
- continue | |
- ;; | |
+ -dlopen FILE add the directory containing FILE to the library path | |
- # Some other compiler argument. | |
- *) | |
- # Unknown arguments in both finalize_command and compile_command need | |
- # to be aesthetically quoted because they are evaled later. | |
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- ;; | |
- esac # arg | |
+This mode sets the library path environment variable according to \`-dlopen' | |
+flags. | |
- # Now actually substitute the argument into the commands. | |
- if test -n "$arg"; then | |
- compile_command="$compile_command $arg" | |
- finalize_command="$finalize_command $arg" | |
- fi | |
- done # argument parsing loop | |
+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. | |
- if test -n "$prev"; then | |
- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+Then, COMMAND is executed, with ARGS as arguments." | |
+ ;; | |
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; th… | |
- eval arg=\"$export_dynamic_flag_spec\" | |
- compile_command="$compile_command $arg" | |
- finalize_command="$finalize_command $arg" | |
- fi | |
+ finish) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... | |
- oldlibs= | |
- # calculate the name of the file, without its directory | |
- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` | |
- libobjs_save="$libobjs" | |
+Complete the installation of libtool libraries. | |
- if test -n "$shlibpath_var"; then | |
- # get the directories listed in $shlibpath_var | |
- eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s… | |
- else | |
- shlib_search_path= | |
- fi | |
- eval sys_lib_search_path=\"$sys_lib_search_path_spec\" | |
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" | |
+Each LIBDIR is a directory that contains libtool libraries. | |
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$output_objdir" = "X$output"; then | |
- output_objdir="$objdir" | |
- else | |
- output_objdir="$output_objdir/$objdir" | |
- fi | |
- # Create the object directory. | |
- if test ! -d "$output_objdir"; then | |
- $show "$mkdir $output_objdir" | |
- $run $mkdir $output_objdir | |
- status=$? | |
- if test "$status" -ne 0 && test ! -d "$output_objdir"; then | |
- exit $status | |
- fi | |
- fi | |
+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." | |
+ ;; | |
- # Determine the type of output | |
- case $output in | |
- "") | |
- $echo "$modename: you must specify an output file" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- *.$libext) linkmode=oldlib ;; | |
- *.lo | *.$objext) linkmode=obj ;; | |
- *.la) linkmode=lib ;; | |
- *) linkmode=prog ;; # Anything else should be a program. | |
- esac | |
+ install) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... | |
- case $host in | |
- *cygwin* | *mingw* | *pw32*) | |
- # don't eliminate duplications in $postdeps and $predeps | |
- duplicate_compiler_generated_deps=yes | |
- ;; | |
- *) | |
- duplicate_compiler_generated_deps=$duplicate_deps | |
- ;; | |
- esac | |
- specialdeplibs= | |
+Install executables or libraries. | |
- libs= | |
- # Find all interdependent deplibs by searching for libraries | |
- # that are linked more than once (e.g. -la -lb -la) | |
- for deplib in $deplibs; do | |
- if test "X$duplicate_deps" = "Xyes" ; then | |
- case "$libs " in | |
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |
- esac | |
- fi | |
- libs="$libs $deplib" | |
- done | |
+INSTALL-COMMAND is the installation command. The first component should be | |
+either the \`install' or \`cp' program. | |
- if test "$linkmode" = lib; then | |
- libs="$predeps $libs $compiler_lib_search_path $postdeps" | |
+The following components of INSTALL-COMMAND are treated specially: | |
- # Compute libraries that are listed more than once in $predeps | |
- # $postdeps and mark them as special (i.e., whose duplicates are | |
- # not to be eliminated). | |
- pre_post_deps= | |
- if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then | |
- for pre_post_dep in $predeps $postdeps; do | |
- case "$pre_post_deps " in | |
- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps"… | |
- esac | |
- pre_post_deps="$pre_post_deps $pre_post_dep" | |
- done | |
- fi | |
- pre_post_deps= | |
- fi | |
+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installati… | |
- deplibs= | |
- newdependency_libs= | |
- newlib_search_path= | |
- need_relink=no # whether we're linking any uninstalled libtool libraries | |
- notinst_deplibs= # not-installed libtool libraries | |
- notinst_path= # paths that contain not-installed libtool libraries | |
- case $linkmode in | |
- lib) | |
- passes="conv link" | |
- for file in $dlfiles $dlprefiles; do | |
- case $file in | |
- *.la) ;; | |
- *) | |
- $echo "$modename: libraries can \`-dlopen' only libtool libraries:… | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
- done | |
- ;; | |
- prog) | |
- compile_deplibs= | |
- finalize_deplibs= | |
- alldeplibs=no | |
- newdlfiles= | |
- newdlprefiles= | |
- passes="conv scan dlopen dlpreopen link" | |
- ;; | |
- *) passes="conv" | |
- ;; | |
- esac | |
- for pass in $passes; do | |
- if test "$linkmode,$pass" = "lib,link" || | |
- test "$linkmode,$pass" = "prog,scan"; then | |
- libs="$deplibs" | |
- deplibs= | |
- fi | |
- if test "$linkmode" = prog; then | |
- case $pass in | |
- dlopen) libs="$dlfiles" ;; | |
- dlpreopen) libs="$dlprefiles" ;; | |
- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; | |
- esac | |
- fi | |
- if test "$pass" = dlopen; then | |
- # Collect dlpreopened libraries | |
- save_deplibs="$deplibs" | |
- deplibs= | |
- fi | |
- for deplib in $libs; do | |
- lib= | |
- found=no | |
- case $deplib in | |
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) | |
- if test "$linkmode,$pass" = "prog,link"; then | |
- compile_deplibs="$deplib $compile_deplibs" | |
- finalize_deplibs="$deplib $finalize_deplibs" | |
- else | |
- compiler_flags="$compiler_flags $deplib" | |
- fi | |
- continue | |
- ;; | |
- -l*) | |
- if test "$linkmode" != lib && test "$linkmode" != prog; then | |
- $echo "$modename: warning: \`-l' is ignored for archives/objects" … | |
- continue | |
- fi | |
- name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` | |
- for searchdir in $newlib_search_path $lib_search_path $sys_lib_searc… | |
- for search_ext in .la $std_shrext .so .a; do | |
- # Search the libtool library | |
- lib="$searchdir/lib${name}${search_ext}" | |
- if test -f "$lib"; then | |
- if test "$search_ext" = ".la"; then | |
- found=yes | |
- else | |
- found=no | |
- fi | |
- break 2 | |
- fi | |
- done | |
- done | |
- if test "$found" != yes; then | |
- # deplib doesn't seem to be a libtool library | |
- if test "$linkmode,$pass" = "prog,link"; then | |
- compile_deplibs="$deplib $compile_deplibs" | |
- finalize_deplibs="$deplib $finalize_deplibs" | |
- else | |
- deplibs="$deplib $deplibs" | |
- test "$linkmode" = lib && newdependency_libs="$deplib $newdepend… | |
- fi | |
- continue | |
- else # deplib is a libtool library | |
- # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdl… | |
- # We need to do some special things here, and not later. | |
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |
- case " $predeps $postdeps " in | |
- *" $deplib "*) | |
- if (${SED} -e '2q' $lib | | |
- grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then | |
- library_names= | |
- old_library= | |
- case $lib in | |
- */* | *\\*) . $lib ;; | |
- *) . ./$lib ;; | |
- esac | |
- for l in $old_library $library_names; do | |
- ll="$l" | |
- done | |
- if test "X$ll" = "X$old_library" ; then # only static versio… | |
- found=no | |
- ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` | |
- test "X$ladir" = "X$lib" && ladir="." | |
- lib=$ladir/$old_library | |
- if test "$linkmode,$pass" = "prog,link"; then | |
- compile_deplibs="$deplib $compile_deplibs" | |
- finalize_deplibs="$deplib $finalize_deplibs" | |
- else | |
- deplibs="$deplib $deplibs" | |
- test "$linkmode" = lib && newdependency_libs="$deplib $n… | |
- fi | |
- continue | |
- fi | |
- fi | |
- ;; | |
- *) ;; | |
- esac | |
- fi | |
- fi | |
- ;; # -l | |
- -L*) | |
- case $linkmode in | |
- lib) | |
- deplibs="$deplib $deplibs" | |
- test "$pass" = conv && continue | |
- newdependency_libs="$deplib $newdependency_libs" | |
- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed… | |
- ;; | |
- prog) | |
- if test "$pass" = conv; then | |
- deplibs="$deplib $deplibs" | |
- continue | |
- fi | |
- if test "$pass" = scan; then | |
- deplibs="$deplib $deplibs" | |
- else | |
- compile_deplibs="$deplib $compile_deplibs" | |
- finalize_deplibs="$deplib $finalize_deplibs" | |
- fi | |
- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed… | |
- ;; | |
- *) | |
- $echo "$modename: warning: \`-L' is ignored for archives/objects" … | |
- ;; | |
- esac # linkmode | |
- continue | |
- ;; # -L | |
- -R*) | |
- if test "$pass" = link; then | |
- dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` | |
- # Make sure the xrpath contains only unique directories. | |
- case "$xrpath " in | |
- *" $dir "*) ;; | |
- *) xrpath="$xrpath $dir" ;; | |
- esac | |
- fi | |
- deplibs="$deplib $deplibs" | |
- continue | |
- ;; | |
- *.la) lib="$deplib" ;; | |
- *.$libext) | |
- if test "$pass" = conv; then | |
- deplibs="$deplib $deplibs" | |
- continue | |
- fi | |
- case $linkmode in | |
- lib) | |
- valid_a_lib=no | |
- case $deplibs_check_method in | |
- match_pattern*) | |
- set dummy $deplibs_check_method | |
- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)… | |
- if eval $echo \"$deplib\" 2>/dev/null \ | |
- | $SED 10q \ | |
- | $EGREP "$match_pattern_regex" > /dev/null; then | |
- valid_a_lib=yes | |
- fi | |
- ;; | |
- pass_all) | |
- valid_a_lib=yes | |
- ;; | |
- esac | |
- if test "$valid_a_lib" != yes; then | |
- $echo | |
- $echo "*** Warning: Trying to link with static lib archive $depl… | |
- $echo "*** I have the capability to make that library automatica… | |
- $echo "*** you link to this library. But I can only do this if … | |
- $echo "*** shared version of the library, which you do not appea… | |
- $echo "*** because the file extensions .$libext of this argument… | |
- $echo "*** that it is just a static archive that I should not us… | |
- else | |
- $echo | |
- $echo "*** Warning: Linking the shared library $output against t… | |
- $echo "*** static library $deplib is not portable!" | |
- deplibs="$deplib $deplibs" | |
- fi | |
- continue | |
- ;; | |
- prog) | |
- if test "$pass" != link; then | |
- deplibs="$deplib $deplibs" | |
- else | |
- compile_deplibs="$deplib $compile_deplibs" | |
- finalize_deplibs="$deplib $finalize_deplibs" | |
- fi | |
- continue | |
- ;; | |
- esac # linkmode | |
- ;; # *.$libext | |
- *.lo | *.$objext) | |
- if test "$pass" = conv; then | |
- deplibs="$deplib $deplibs" | |
- elif test "$linkmode" = prog; then | |
- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || te… | |
- # If there is no dlopen support or we're linking statically, | |
- # we need to preload. | |
- newdlprefiles="$newdlprefiles $deplib" | |
- compile_deplibs="$deplib $compile_deplibs" | |
- finalize_deplibs="$deplib $finalize_deplibs" | |
- else | |
- newdlfiles="$newdlfiles $deplib" | |
- fi | |
- fi | |
- continue | |
- ;; | |
- %DEPLIBS%) | |
- alldeplibs=yes | |
- continue | |
- ;; | |
- esac # case $deplib | |
- if test "$found" = yes || test -f "$lib"; then : | |
- else | |
- $echo "$modename: cannot find the library \`$lib'" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+The rest of the components are interpreted as arguments to that command (only | |
+BSD-compatible install options are recognized)." | |
+ ;; | |
- # Check to see that this really is a libtool archive. | |
- if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/nul… | |
- else | |
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ link) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... | |
- ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` | |
- test "X$ladir" = "X$lib" && ladir="." | |
+Link object files or libraries together to form another library, or to | |
+create an executable program. | |
- dlname= | |
- dlopen= | |
- dlpreopen= | |
- libdir= | |
- library_names= | |
- old_library= | |
- # If the library was installed with an old release of libtool, | |
- # it will not redefine variables installed, or shouldnotlink | |
- installed=yes | |
- shouldnotlink=no | |
- avoidtemprpath= | |
+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: | |
- # Read the .la file | |
- case $lib in | |
- */* | *\\*) . $lib ;; | |
- *) . ./$lib ;; | |
- esac | |
+ -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 | |
+ -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 libra… | |
+ -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 | |
+ -Wl,FLAG | |
+ -Xlinker FLAG pass linker-specific FLAG directly to the linker | |
+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) | |
- if test "$linkmode,$pass" = "lib,link" || | |
- test "$linkmode,$pass" = "prog,scan" || | |
- { test "$linkmode" != prog && test "$linkmode" != lib; }; then | |
- test -n "$dlopen" && dlfiles="$dlfiles $dlopen" | |
- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" | |
- fi | |
+All other options (arguments beginning with \`-') are ignored. | |
- if test "$pass" = conv; then | |
- # Only check for convenience libraries | |
- deplibs="$lib $deplibs" | |
- if test -z "$libdir"; then | |
- if test -z "$old_library"; then | |
- $echo "$modename: cannot find name of link library for \`$lib'" … | |
- exit $EXIT_FAILURE | |
- fi | |
- # It is a libtool convenience library, so add in its objects. | |
- convenience="$convenience $ladir/$objdir/$old_library" | |
- old_convenience="$old_convenience $ladir/$objdir/$old_library" | |
- tmp_libs= | |
- for deplib in $dependency_libs; do | |
- deplibs="$deplib $deplibs" | |
- if test "X$duplicate_deps" = "Xyes" ; then | |
- case "$tmp_libs " in | |
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |
- esac | |
- fi | |
- tmp_libs="$tmp_libs $deplib" | |
- done | |
- elif test "$linkmode" != prog && test "$linkmode" != lib; then | |
- $echo "$modename: \`$lib' is not a convenience library" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
- continue | |
- fi # $pass = conv | |
+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. | |
- # Get the name of the library we link against. | |
- linklib= | |
- for l in $old_library $library_names; do | |
- linklib="$l" | |
- done | |
- if test -z "$linklib"; then | |
- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created | |
+using \`ar' and \`ranlib', or on Windows using \`lib'. | |
- # This library was specified with -dlopen. | |
- if test "$pass" = dlopen; then | |
- if test -z "$libdir"; then | |
- $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1… | |
- exit $EXIT_FAILURE | |
- fi | |
- if test -z "$dlname" || | |
- test "$dlopen_support" != yes || | |
- test "$build_libtool_libs" = no; then | |
- # If there is no dlname, no dlopen support or we're linking | |
- # statically, we need to preload. We also need to preload any | |
- # dependent libraries so libltdl's deplib preloader doesn't | |
- # bomb out in the load deplibs phase. | |
- dlprefiles="$dlprefiles $lib $dependency_libs" | |
- else | |
- newdlfiles="$newdlfiles $lib" | |
- fi | |
- continue | |
- fi # $pass = dlopen | |
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file | |
+is created, otherwise an executable program is created." | |
+ ;; | |
- # We need an absolute path. | |
- case $ladir in | |
- [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; | |
- *) | |
- abs_ladir=`cd "$ladir" && pwd` | |
- if test -z "$abs_ladir"; then | |
- $echo "$modename: warning: cannot determine absolute directory nam… | |
- $echo "$modename: passing it literally to the linker, although it … | |
- abs_ladir="$ladir" | |
- fi | |
- ;; | |
- esac | |
- laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` | |
+ uninstall) | |
+ $ECHO \ | |
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... | |
- # Find the relevant object directory and library name. | |
- if test "X$installed" = Xyes; then | |
- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; th… | |
- $echo "$modename: warning: library \`$lib' was moved." 1>&2 | |
- dir="$ladir" | |
- absdir="$abs_ladir" | |
- libdir="$abs_ladir" | |
- else | |
- dir="$libdir" | |
- absdir="$libdir" | |
- fi | |
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes | |
- else | |
- if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linkl… | |
- dir="$ladir" | |
- absdir="$abs_ladir" | |
- # Remove this search path later | |
- notinst_path="$notinst_path $abs_ladir" | |
- else | |
- dir="$ladir/$objdir" | |
- absdir="$abs_ladir/$objdir" | |
- # Remove this search path later | |
- notinst_path="$notinst_path $abs_ladir" | |
- fi | |
- fi # $installed = yes | |
- name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` | |
+Remove libraries from an installation directory. | |
- # This library was specified with -dlpreopen. | |
- if test "$pass" = dlpreopen; then | |
- if test -z "$libdir"; then | |
- $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'… | |
- exit $EXIT_FAILURE | |
- fi | |
- # Prefer using a static library (so that no silly _DYNAMIC symbols | |
- # are required to link). | |
- if test -n "$old_library"; then | |
- newdlprefiles="$newdlprefiles $dir/$old_library" | |
- # Otherwise, use the dlname, so that lt_dlopen finds it. | |
- elif test -n "$dlname"; then | |
- newdlprefiles="$newdlprefiles $dir/$dlname" | |
- else | |
- newdlprefiles="$newdlprefiles $dir/$linklib" | |
- fi | |
- fi # $pass = dlpreopen | |
+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 test -z "$libdir"; then | |
- # Link the convenience library | |
- if test "$linkmode" = lib; then | |
- deplibs="$dir/$old_library $deplibs" | |
- elif test "$linkmode,$pass" = "prog,link"; then | |
- compile_deplibs="$dir/$old_library $compile_deplibs" | |
- finalize_deplibs="$dir/$old_library $finalize_deplibs" | |
- else | |
- deplibs="$lib $deplibs" # used for prog,scan pass | |
- fi | |
- continue | |
- fi | |
+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 | |
- if test "$linkmode" = prog && test "$pass" != link; then | |
- newlib_search_path="$newlib_search_path $ladir" | |
- deplibs="$lib $deplibs" | |
+ echo | |
+ $ECHO "Try \`$progname --help' for more information about other modes." | |
+} | |
- linkalldeplibs=no | |
- if test "$link_all_deplibs" != no || test -z "$library_names" || | |
- test "$build_libtool_libs" = no; then | |
- linkalldeplibs=yes | |
- fi | |
+# 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 | |
- tmp_libs= | |
- for deplib in $dependency_libs; do | |
- case $deplib in | |
- -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | … | |
- esac | |
- # Need to link against all dependency_libs? | |
- if test "$linkalldeplibs" = yes; then | |
- deplibs="$deplib $deplibs" | |
- else | |
- # Need to hardcode shared library paths | |
- # or/and link against static libraries | |
- newdependency_libs="$deplib $newdependency_libs" | |
- fi | |
- if test "X$duplicate_deps" = "Xyes" ; then | |
- case "$tmp_libs " in | |
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |
- esac | |
- fi | |
- tmp_libs="$tmp_libs $deplib" | |
- done # for deplib | |
- continue | |
- fi # $linkmode = prog... | |
- if test "$linkmode,$pass" = "prog,link"; then | |
- if test -n "$library_names" && | |
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; t… | |
- # We need to hardcode the library path | |
- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then | |
- # Make sure the rpath contains only unique directories. | |
- case "$temp_rpath " in | |
- *" $dir "*) ;; | |
- *" $absdir "*) ;; | |
- *) temp_rpath="$temp_rpath $dir" ;; | |
- esac | |
- fi | |
+# func_mode_execute arg... | |
+func_mode_execute () | |
+{ | |
+ $opt_debug | |
+ # The first argument is the command name. | |
+ cmd="$nonopt" | |
+ test -z "$cmd" && \ | |
+ func_fatal_help "you must specify a COMMAND" | |
- # Hardcode the library path. | |
- # Skip directories that are in the system default run-time | |
- # search path. | |
- case " $sys_lib_dlsearch_path " in | |
- *" $absdir "*) ;; | |
- *) | |
- case "$compile_rpath " in | |
- *" $absdir "*) ;; | |
- *) compile_rpath="$compile_rpath $absdir" | |
- esac | |
- ;; | |
- esac | |
- case " $sys_lib_dlsearch_path " in | |
- *" $libdir "*) ;; | |
- *) | |
- case "$finalize_rpath " in | |
- *" $libdir "*) ;; | |
- *) finalize_rpath="$finalize_rpath $libdir" | |
- esac | |
- ;; | |
- esac | |
- fi # $linkmode,$pass = prog,link... | |
+ # Handle -dlopen flags immediately. | |
+ for file in $opt_dlopen; do | |
+ test -f "$file" \ | |
+ || func_fatal_help "\`$file' is not a file" | |
- if test "$alldeplibs" = yes && | |
- { test "$deplibs_check_method" = pass_all || | |
- { test "$build_libtool_libs" = yes && | |
- test -n "$library_names"; }; }; then | |
- # We only need to search for static libraries | |
- continue | |
- fi | |
+ 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 | |
- link_static=no # Whether the deplib will be linked statically | |
- if test -n "$library_names" && | |
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then | |
- if test "$installed" = no; then | |
- notinst_deplibs="$notinst_deplibs $lib" | |
- need_relink=yes | |
- fi | |
- # This is a shared library | |
+ func_dirname "$file" "" "." | |
+ dir="$func_dirname_result" | |
- # Warn about portability, can't link against -module's on | |
- # some systems (darwin) | |
- if test "$shouldnotlink" = yes && test "$pass" = link ; then | |
- $echo | |
- if test "$linkmode" = prog; then | |
- $echo "*** Warning: Linking the executable $output against the l… | |
- else | |
- $echo "*** Warning: Linking the shared library $output against t… | |
- fi | |
- $echo "*** $linklib is not portable!" | |
- fi | |
- if test "$linkmode" = lib && | |
- test "$hardcode_into_libs" = yes; then | |
- # Hardcode the library path. | |
- # Skip directories that are in the system default run-time | |
- # search path. | |
- case " $sys_lib_dlsearch_path " in | |
- *" $absdir "*) ;; | |
- *) | |
- case "$compile_rpath " in | |
- *" $absdir "*) ;; | |
- *) compile_rpath="$compile_rpath $absdir" | |
- esac | |
- ;; | |
- esac | |
- case " $sys_lib_dlsearch_path " in | |
- *" $libdir "*) ;; | |
- *) | |
- case "$finalize_rpath " in | |
- *" $libdir "*) ;; | |
- *) finalize_rpath="$finalize_rpath $libdir" | |
- esac | |
- ;; | |
- esac | |
+ 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/$obj… | |
fi | |
+ fi | |
+ ;; | |
- if test -n "$old_archive_from_expsyms_cmds"; then | |
- # figure out the soname | |
- set dummy $library_names | |
- realname="$2" | |
- shift; shift | |
- libname=`eval \\$echo \"$libname_spec\"` | |
- # use dlname if we got it. it's perfectly good, no? | |
- if test -n "$dlname"; then | |
- soname="$dlname" | |
- elif test -n "$soname_spec"; then | |
- # bleh windows | |
- case $host in | |
- *cygwin* | mingw*) | |
- major=`expr $current - $age` | |
- versuffix="-$major" | |
- ;; | |
- esac | |
- eval soname=\"$soname_spec\" | |
- else | |
- soname="$realname" | |
- fi | |
+ *.lo) | |
+ # Just add the directory containing the .lo file. | |
+ func_dirname "$file" "" "." | |
+ dir="$func_dirname_result" | |
+ ;; | |
- # Make a new name for the extract_expsyms_cmds to use | |
- soroot="$soname" | |
- soname=`$echo $soroot | ${SED} -e 's/^.*\///'` | |
- newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" | |
+ *) | |
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and obje… | |
+ continue | |
+ ;; | |
+ esac | |
- # If the library has no export list, then create one now | |
- if test -f "$output_objdir/$soname-def"; then : | |
- else | |
- $show "extracting exported symbol list from \`$soname'" | |
- save_ifs="$IFS"; IFS='~' | |
- cmds=$extract_expsyms_cmds | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
- fi | |
+ # Get the absolute pathname. | |
+ absdir=`cd "$dir" && pwd` | |
+ test -n "$absdir" && dir="$absdir" | |
- # Create $newlib | |
- if test -f "$output_objdir/$newlib"; then :; else | |
- $show "generating import library for \`$soname'" | |
- save_ifs="$IFS"; IFS='~' | |
- cmds=$old_archive_from_expsyms_cmds | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
- fi | |
- # make sure the library variables are pointing to the new library | |
- dir=$output_objdir | |
- linklib=$newlib | |
- fi # test -n "$old_archive_from_expsyms_cmds" | |
+ # 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 | |
- if test "$linkmode" = prog || test "$mode" != relink; then | |
- add_shlibpath= | |
- add_dir= | |
- add= | |
- lib_linked=yes | |
- case $hardcode_action in | |
- immediate | unsupported) | |
- if test "$hardcode_direct" = no; then | |
- add="$dir/$linklib" | |
- case $host in | |
- *-*-sco3.2v5* ) add_dir="-L$dir" ;; | |
- *-*-darwin* ) | |
- # if the lib is a module then we can not link against | |
- # it, someone is ignoring the new warnings I added | |
- if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/… | |
- $echo "** Warning, lib $linklib is a module, not a share… | |
- if test -z "$old_library" ; then | |
- $echo | |
- $echo "** And there doesn't seem to be a static archiv… | |
- $echo "** The link will probably fail, sorry" | |
- else | |
- add="$dir/$old_library" | |
- fi | |
- fi | |
- esac | |
- elif test "$hardcode_minus_L" = no; then | |
- case $host in | |
- *-*-sunos*) add_shlibpath="$dir" ;; | |
- esac | |
- add_dir="-L$dir" | |
- add="-l$name" | |
- elif test "$hardcode_shlibpath_var" = no; then | |
- add_shlibpath="$dir" | |
- add="-l$name" | |
- else | |
- lib_linked=no | |
- fi | |
- ;; | |
- relink) | |
- if test "$hardcode_direct" = yes; then | |
- add="$dir/$linklib" | |
- elif test "$hardcode_minus_L" = yes; then | |
- add_dir="-L$dir" | |
- # Try looking first in the location we're being installed to. | |
- if test -n "$inst_prefix_dir"; then | |
- case "$libdir" in | |
- [\\/]*) | |
- add_dir="$add_dir -L$inst_prefix_dir$libdir" | |
- ;; | |
- esac | |
- fi | |
- add="-l$name" | |
- elif test "$hardcode_shlibpath_var" = yes; then | |
- add_shlibpath="$dir" | |
- add="-l$name" | |
- else | |
- lib_linked=no | |
- fi | |
- ;; | |
- *) lib_linked=no ;; | |
- esac | |
+ # This variable tells wrapper scripts just to set shlibpath_var | |
+ # rather than running their programs. | |
+ libtool_execute_magic="$magic" | |
- if test "$lib_linked" != yes; then | |
- $echo "$modename: configuration error: unsupported hardcode prop… | |
- exit $EXIT_FAILURE | |
- fi | |
+ # 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 test -n "$add_shlibpath"; then | |
- case :$compile_shlibpath: in | |
- *":$add_shlibpath:"*) ;; | |
- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; | |
- esac | |
- fi | |
- if test "$linkmode" = prog; then | |
- test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" | |
- test -n "$add" && compile_deplibs="$add $compile_deplibs" | |
- else | |
- test -n "$add_dir" && deplibs="$add_dir $deplibs" | |
- test -n "$add" && deplibs="$add $deplibs" | |
- if test "$hardcode_direct" != yes && \ | |
- test "$hardcode_minus_L" != yes && \ | |
- test "$hardcode_shlibpath_var" = yes; then | |
- case :$finalize_shlibpath: in | |
- *":$libdir:"*) ;; | |
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; | |
- esac | |
- fi | |
- fi | |
- fi | |
+ if test "X$opt_dry_run" = Xfalse; then | |
+ if test -n "$shlibpath_var"; then | |
+ # Export the shlibpath_var. | |
+ eval "export $shlibpath_var" | |
+ fi | |
- if test "$linkmode" = prog || test "$mode" = relink; then | |
- add_shlibpath= | |
- add_dir= | |
- add= | |
- # Finalize command for both is simple: just hardcode it. | |
- if test "$hardcode_direct" = yes; then | |
- add="$libdir/$linklib" | |
- elif test "$hardcode_minus_L" = yes; then | |
- add_dir="-L$libdir" | |
- add="-l$name" | |
- elif test "$hardcode_shlibpath_var" = yes; then | |
- case :$finalize_shlibpath: in | |
- *":$libdir:"*) ;; | |
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; | |
- esac | |
- add="-l$name" | |
- elif test "$hardcode_automatic" = yes; then | |
- if test -n "$inst_prefix_dir" && | |
- test -f "$inst_prefix_dir$libdir/$linklib" ; then | |
- add="$inst_prefix_dir$libdir/$linklib" | |
+ # 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 | |
- add="$libdir/$linklib" | |
- fi | |
- else | |
- # We cannot seem to hardcode it, guess we'll fake it. | |
- add_dir="-L$libdir" | |
- # Try looking first in the location we're being installed to. | |
- if test -n "$inst_prefix_dir"; then | |
- case "$libdir" in | |
- [\\/]*) | |
- add_dir="$add_dir -L$inst_prefix_dir$libdir" | |
- ;; | |
- esac | |
- fi | |
- add="-l$name" | |
- fi | |
+ $lt_unset $lt_var | |
+ fi" | |
+ done | |
- if test "$linkmode" = prog; then | |
- test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_depli… | |
- test -n "$add" && finalize_deplibs="$add $finalize_deplibs" | |
- else | |
- test -n "$add_dir" && deplibs="$add_dir $deplibs" | |
- test -n "$add" && deplibs="$add $deplibs" | |
- fi | |
- fi | |
- elif test "$linkmode" = prog; then | |
- # Here we assume that one of hardcode_direct or hardcode_minus_L | |
- # is not unsupported. This is valid on all known static and | |
- # shared platforms. | |
- if test "$hardcode_direct" != unsupported; then | |
- test -n "$old_library" && linklib="$old_library" | |
- compile_deplibs="$dir/$linklib $compile_deplibs" | |
- finalize_deplibs="$dir/$linklib $finalize_deplibs" | |
- else | |
- compile_deplibs="-l$name -L$dir $compile_deplibs" | |
- finalize_deplibs="-l$name -L$dir $finalize_deplibs" | |
- fi | |
- elif test "$build_libtool_libs" = yes; then | |
- # Not a shared library | |
- if test "$deplibs_check_method" != pass_all; then | |
- # We're trying link a shared library against a static one | |
- # but the system doesn't support it. | |
+ # Now prepare to actually exec the command. | |
+ exec_cmd="\$cmd$args" | |
+ else | |
+ # 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 | |
+ fi | |
+} | |
- # Just print a warning and add the library to dependency_libs so | |
- # that the program can be linked against the static library. | |
- $echo | |
- $echo "*** Warning: This system can not link to static lib archive… | |
- $echo "*** I have the capability to make that library automaticall… | |
- $echo "*** you link to this library. But I can only do this if yo… | |
- $echo "*** shared version of the library, which you do not appear … | |
- if test "$module" = yes; then | |
- $echo "*** But as you try to build a module library, libtool wil… | |
- $echo "*** a static module, that should work as long as the dlop… | |
- $echo "*** is linked with the -dlopen flag to resolve symbols at… | |
- if test -z "$global_symbol_pipe"; then | |
- $echo | |
- $echo "*** However, this would only work if libtool was able t… | |
- $echo "*** lists from a program, using \`nm' or equivalent, bu… | |
- $echo "*** not find such a program. So, this module is probab… | |
- $echo "*** \`nm' from GNU binutils and a full rebuild may help… | |
- fi | |
- if test "$build_old_libs" = no; then | |
- build_libtool_libs=module | |
- build_old_libs=yes | |
- else | |
- build_libtool_libs=no | |
- fi | |
- fi | |
- else | |
- convenience="$convenience $dir/$old_library" | |
- old_convenience="$old_convenience $dir/$old_library" | |
- deplibs="$dir/$old_library $deplibs" | |
- link_static=yes | |
- fi | |
- fi # link shared/static library? | |
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"} | |
- if test "$linkmode" = lib; then | |
- if test -n "$dependency_libs" && | |
- { test "$hardcode_into_libs" != yes || | |
- test "$build_old_libs" = yes || | |
- test "$link_static" = yes; }; then | |
- # Extract -R from dependency_libs | |
- temp_deplibs= | |
- for libdir in $dependency_libs; do | |
- case $libdir in | |
- -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` | |
- case " $xrpath " in | |
- *" $temp_xrpath "*) ;; | |
- *) xrpath="$xrpath $temp_xrpath";; | |
- esac;; | |
- *) temp_deplibs="$temp_deplibs $libdir";; | |
- esac | |
- done | |
- dependency_libs="$temp_deplibs" | |
- fi | |
- newlib_search_path="$newlib_search_path $absdir" | |
- # Link against this library | |
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $… | |
- # ... and its dependency_libs | |
- tmp_libs= | |
- for deplib in $dependency_libs; do | |
- newdependency_libs="$deplib $newdependency_libs" | |
- if test "X$duplicate_deps" = "Xyes" ; then | |
- case "$tmp_libs " in | |
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | |
- esac | |
- fi | |
- tmp_libs="$tmp_libs $deplib" | |
- done | |
+# func_mode_finish arg... | |
+func_mode_finish () | |
+{ | |
+ $opt_debug | |
+ libs= | |
+ libdirs= | |
+ admincmds= | |
- if test "$link_all_deplibs" != no; then | |
- # Add the search paths of all dependency libraries | |
- for deplib in $dependency_libs; do | |
- case $deplib in | |
- -L*) path="$deplib" ;; | |
- *.la) | |
- dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` | |
- test "X$dir" = "X$deplib" && dir="." | |
- # We need an absolute path. | |
- case $dir in | |
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; | |
- *) | |
- absdir=`cd "$dir" && pwd` | |
- if test -z "$absdir"; then | |
- $echo "$modename: warning: cannot determine absolute direc… | |
- absdir="$dir" | |
- fi | |
- ;; | |
- esac | |
- if grep "^installed=no" $deplib > /dev/null; then | |
- path="$absdir/$objdir" | |
- else | |
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | |
- if test -z "$libdir"; then | |
- $echo "$modename: \`$deplib' is not a valid libtool archiv… | |
- exit $EXIT_FAILURE | |
- fi | |
- if test "$absdir" != "$libdir"; then | |
- $echo "$modename: warning: \`$deplib' seems to be moved" 1… | |
- fi | |
- path="$absdir" | |
- fi | |
- depdepl= | |
- case $host in | |
- *-*-darwin*) | |
- # we do not want to link against static libs, | |
- # but need to link against shared | |
- eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)… | |
- if test -n "$deplibrary_names" ; then | |
- for tmp in $deplibrary_names ; do | |
- depdepl=$tmp | |
- done | |
- if test -f "$path/$depdepl" ; then | |
- depdepl="$path/$depdepl" | |
- fi | |
- # do not add paths which are already there | |
- case " $newlib_search_path " in | |
- *" $path "*) ;; | |
- *) newlib_search_path="$newlib_search_path $path";; | |
- esac | |
- fi | |
- path="" | |
- ;; | |
- *) | |
- path="-L$path" | |
- ;; | |
- esac | |
- ;; | |
- -l*) | |
- case $host in | |
- *-*-darwin*) | |
- # Again, we only want to link against shared libraries | |
- eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` | |
- for tmp in $newlib_search_path ; do | |
- if test -f "$tmp/lib$tmp_libs.dylib" ; then | |
- eval depdepl="$tmp/lib$tmp_libs.dylib" | |
- break | |
- fi | |
- done | |
- path="" | |
- ;; | |
- *) continue ;; | |
- esac | |
- ;; | |
- *) continue ;; | |
- esac | |
- case " $deplibs " in | |
- *" $path "*) ;; | |
- *) deplibs="$path $deplibs" ;; | |
- esac | |
- case " $deplibs " in | |
- *" $depdepl "*) ;; | |
- *) deplibs="$depdepl $deplibs" ;; | |
- esac | |
- done | |
- fi # link_all_deplibs != no | |
- fi # linkmode = lib | |
- done # for deplib in $libs | |
- dependency_libs="$newdependency_libs" | |
- if test "$pass" = dlpreopen; then | |
- # Link the dlpreopened libraries before other libraries | |
- for deplib in $save_deplibs; do | |
- deplibs="$deplib $deplibs" | |
- done | |
- fi | |
- if test "$pass" != dlopen; then | |
- if test "$pass" != conv; then | |
- # Make sure lib_search_path contains only unique directories. | |
- lib_search_path= | |
- for dir in $newlib_search_path; do | |
- case "$lib_search_path " in | |
- *" $dir "*) ;; | |
- *) lib_search_path="$lib_search_path $dir" ;; | |
- esac | |
- done | |
- newlib_search_path= | |
- fi | |
+ for opt in "$nonopt" ${1+"$@"} | |
+ do | |
+ if test -d "$opt"; then | |
+ func_append libdirs " $opt" | |
- if test "$linkmode,$pass" != "prog,link"; then | |
- vars="deplibs" | |
+ elif test -f "$opt"; then | |
+ if func_lalib_unsafe_p "$opt"; then | |
+ func_append libs " $opt" | |
else | |
- vars="compile_deplibs finalize_deplibs" | |
+ func_warning "\`$opt' is not a valid libtool archive" | |
fi | |
- for var in $vars dependency_libs; do | |
- # Add libraries to $var in reverse order | |
- eval tmp_libs=\"\$$var\" | |
- new_libs= | |
- for deplib in $tmp_libs; do | |
- # FIXME: Pedantically, this is the right thing to do, so | |
- # that some nasty dependency loop isn't accidentally | |
- # broken: | |
- #new_libs="$deplib $new_libs" | |
- # Pragmatically, this seems to cause very few problems in | |
- # practice: | |
- case $deplib in | |
- -L*) new_libs="$deplib $new_libs" ;; | |
- -R*) ;; | |
- *) | |
- # And here is the reason: when a library appears more | |
- # than once as an explicit dependence of a library, or | |
- # is implicitly linked in more than once by the | |
- # compiler, it is considered special, and multiple | |
- # occurrences thereof are not removed. Compare this | |
- # with having the same library being listed as a | |
- # dependency of multiple other libraries: in this case, | |
- # we know (pedantically, we assume) the library does not | |
- # need to be listed more than once, so we keep only the | |
- # last copy. This is not always right, but it is rare | |
- # enough that we require users that really mean to play | |
- # such unportable linking tricks to link the library | |
- # using -Wl,-lname, so that libtool does not consider it | |
- # for duplicate removal. | |
- case " $specialdeplibs " in | |
- *" $deplib "*) new_libs="$deplib $new_libs" ;; | |
- *) | |
- case " $new_libs " in | |
- *" $deplib "*) ;; | |
- *) new_libs="$deplib $new_libs" ;; | |
- esac | |
- ;; | |
- esac | |
- ;; | |
- esac | |
- done | |
- tmp_libs= | |
- for deplib in $new_libs; do | |
- case $deplib in | |
- -L*) | |
- case " $tmp_libs " in | |
- *" $deplib "*) ;; | |
- *) tmp_libs="$tmp_libs $deplib" ;; | |
- esac | |
- ;; | |
- *) tmp_libs="$tmp_libs $deplib" ;; | |
- esac | |
- done | |
- eval $var=\"$tmp_libs\" | |
- done # for var | |
+ | |
+ else | |
+ func_fatal_error "invalid argument \`$opt'" | |
fi | |
- # Last step: remove runtime libs from dependency_libs | |
- # (they stay in deplibs) | |
- tmp_libs= | |
- for i in $dependency_libs ; do | |
- case " $predeps $postdeps $compiler_lib_search_path " in | |
- *" $i "*) | |
- i="" | |
- ;; | |
- esac | |
- if test -n "$i" ; then | |
- tmp_libs="$tmp_libs $i" | |
+ 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"; 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 | |
- dependency_libs=$tmp_libs | |
- done # for pass | |
- if test "$linkmode" = prog; then | |
- dlfiles="$newdlfiles" | |
- dlprefiles="$newdlprefiles" | |
fi | |
- case $linkmode in | |
- oldlib) | |
- if test -n "$deplibs"; then | |
- $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1… | |
- fi | |
+ # Exit here if they wanted silent mode. | |
+ $opt_silent && exit $EXIT_SUCCESS | |
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |
- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 | |
+ 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 | |
+ 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 "$rpath"; then | |
- $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 | |
+ 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\" | |
- if test -n "$xrpath"; then | |
- $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 | |
+ $ECHO " - use the \`$flag' linker flag" | |
fi | |
- | |
- if test -n "$vinfo"; then | |
- $echo "$modename: warning: \`-version-info/-version-number' is ignored… | |
+ if test -n "$admincmds"; then | |
+ $ECHO " - have your system administrator run these commands:$admincm… | |
fi | |
- | |
- if test -n "$release"; then | |
- $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 | |
+ if test -f /etc/ld.so.conf; then | |
+ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.c… | |
fi | |
+ echo | |
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then | |
- $echo "$modename: warning: \`-export-symbols' is ignored for archives"… | |
- fi | |
+ 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) manu… | |
+ echo "pages." | |
+ ;; | |
+ *) | |
+ echo "more information, such as the ld(1) and ld.so(8) manual pages." | |
+ ;; | |
+ esac | |
+ echo "------------------------------------------------------------------… | |
+ fi | |
+ exit $EXIT_SUCCESS | |
+} | |
- # Now set the variables for building old libraries. | |
- build_libtool_libs=no | |
- oldlibs="$output" | |
- objs="$objs$old_deplibs" | |
- ;; | |
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"} | |
- lib) | |
- # Make sure we only generate libraries of the form `libNAME.la'. | |
- case $outputname in | |
- lib*) | |
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` | |
- eval shared_ext=\"$shrext_cmds\" | |
- eval libname=\"$libname_spec\" | |
+ | |
+# func_mode_install arg... | |
+func_mode_install () | |
+{ | |
+ $opt_debug | |
+ # There may be an optional sh(1) argument at the beginning of | |
+ # install_prog (especially on Windows NT). | |
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || | |
+ # Allow the use of GNU shtool's install command. | |
+ case $nonopt in *shtool*) :;; *) false;; esac; then | |
+ # Aesthetically quote it. | |
+ func_quote_for_eval "$nonopt" | |
+ install_prog="$func_quote_for_eval_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_for_eval "$arg" | |
+ func_append install_prog "$func_quote_for_eval_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=no | |
+ 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=yes ;; | |
+ -f) | |
+ if $install_cp; then :; else | |
+ prev=$arg | |
+ fi | |
+ ;; | |
+ -g | -m | -o) | |
+ prev=$arg | |
+ ;; | |
+ -s) | |
+ stripme=" -s" | |
+ continue | |
+ ;; | |
+ -*) | |
;; | |
*) | |
- if test "$module" = no; then | |
- $echo "$modename: libtool library \`$output' must begin with \`lib'"… | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
- if test "$need_lib_prefix" != no; then | |
- # Add the "lib" prefix for modules if required | |
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` | |
- eval shared_ext=\"$shrext_cmds\" | |
- eval libname=\"$libname_spec\" | |
+ # If the previous option needed an argument, then skip it. | |
+ if test -n "$prev"; then | |
+ if test "x$prev" = x-m && test -n "$install_override_mode"; then | |
+ arg2=$install_override_mode | |
+ no_mode=false | |
+ fi | |
+ prev= | |
else | |
- libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` | |
+ dest=$arg | |
+ continue | |
fi | |
;; | |
esac | |
- if test -n "$objs"; then | |
- if test "$deplibs_check_method" != pass_all; then | |
- $echo "$modename: cannot build libtool library \`$output' from non-l… | |
- exit $EXIT_FAILURE | |
- else | |
- $echo | |
- $echo "*** Warning: Linking the shared library $output against the n… | |
- $echo "*** objects $objs is not portable!" | |
- libobjs="$libobjs $objs" | |
- fi | |
- fi | |
- | |
- if test "$dlself" != no; then | |
- $echo "$modename: warning: \`-dlopen self' is ignored for libtool libr… | |
+ # Aesthetically quote the argument. | |
+ func_quote_for_eval "$arg" | |
+ func_append install_prog " $func_quote_for_eval_result" | |
+ if test -n "$arg2"; then | |
+ func_quote_for_eval "$arg2" | |
fi | |
+ func_append install_shared_prog " $func_quote_for_eval_result" | |
+ done | |
- set dummy $rpath | |
- if test "$#" -gt 2; then | |
- $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool … | |
- fi | |
- install_libdir="$2" | |
+ test -z "$install_prog" && \ | |
+ func_fatal_help "you must specify an install program" | |
- oldlibs= | |
- if test -z "$rpath"; then | |
- if test "$build_libtool_libs" = yes; then | |
- # Building a libtool convenience library. | |
- # Some compilers have problems with a `.al' extension so | |
- # convenience libraries should have the same extension an | |
- # archive normally would. | |
- oldlibs="$output_objdir/$libname.$libext $oldlibs" | |
- build_libtool_libs=convenience | |
- build_old_libs=yes | |
- fi | |
+ test -n "$prev" && \ | |
+ func_fatal_help "the \`$prev' option requires an argument" | |
- if test -n "$vinfo"; then | |
- $echo "$modename: warning: \`-version-info/-version-number' is ignor… | |
- fi | |
+ if test -n "$install_override_mode" && $no_mode; then | |
+ if $install_cp; then :; else | |
+ func_quote_for_eval "$install_override_mode" | |
+ func_append install_shared_prog " -m $func_quote_for_eval_result" | |
+ fi | |
+ fi | |
- if test -n "$release"; then | |
- $echo "$modename: warning: \`-release' is ignored for convenience li… | |
- 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 | |
- # Parse the version information argument. | |
- save_ifs="$IFS"; IFS=':' | |
- set dummy $vinfo 0 0 0 | |
- IFS="$save_ifs" | |
- | |
- if test -n "$8"; then | |
- $echo "$modename: too many parameters to \`-version-info'" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
- | |
- # convert absolute version numbers to libtool ages | |
- # this retains compatibility with .la files and attempts | |
- # to make the code below a bit more comprehensible | |
+ # Strip any trailing slash from the destination. | |
+ func_stripname '' '/' "$dest" | |
+ dest=$func_stripname_result | |
- case $vinfo_number in | |
- yes) | |
- number_major="$2" | |
- number_minor="$3" | |
- number_revision="$4" | |
- # | |
- # There are really only two kinds -- those that | |
- # use the current revision as the major version | |
- # and those that subtract age and use age as | |
- # a minor version. But, then there is irix | |
- # which has an extra 1 added just for fun | |
- # | |
- case $version_type in | |
- darwin|linux|osf|windows) | |
- current=`expr $number_major + $number_minor` | |
- age="$number_minor" | |
- revision="$number_revision" | |
- ;; | |
- freebsd-aout|freebsd-elf|sunos) | |
- current="$number_major" | |
- revision="$number_minor" | |
- age="0" | |
- ;; | |
- irix|nonstopux) | |
- current=`expr $number_major + $number_minor - 1` | |
- age="$number_minor" | |
- revision="$number_minor" | |
- ;; | |
- esac | |
- ;; | |
- no) | |
- current="$2" | |
- revision="$3" | |
- age="$4" | |
- ;; | |
- esac | |
+ # Check to see that the destination is a directory. | |
+ test -d "$dest" && isdir=yes | |
+ if test "$isdir" = yes; then | |
+ destdir="$dest" | |
+ destname= | |
+ else | |
+ func_dirname_and_basename "$dest" "" "." | |
+ destdir="$func_dirname_result" | |
+ destname="$func_basename_result" | |
- # Check that each of the things are valid numbers. | |
- case $current in | |
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9… | |
+ # 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) ;; | |
*) | |
- $echo "$modename: CURRENT \`$current' must be a nonnegative integer"… | |
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |
- exit $EXIT_FAILURE | |
+ func_fatal_help "\`$destdir' must be an absolute directory name" | |
;; | |
esac | |
+ done | |
+ ;; | |
+ esac | |
- case $revision in | |
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9… | |
- *) | |
- $echo "$modename: REVISION \`$revision' must be a nonnegative intege… | |
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
+ # This variable tells wrapper scripts just to set variables rather | |
+ # than running their programs. | |
+ libtool_install_magic="$magic" | |
- case $age in | |
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9… | |
- *) | |
- $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 | |
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
+ staticlibs= | |
+ future_libdirs= | |
+ current_libdirs= | |
+ for file in $files; do | |
- if test "$age" -gt "$current"; then | |
- $echo "$modename: AGE \`$age' is greater than the current interface … | |
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2 | |
- exit $EXIT_FAILURE | |
+ # 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 | |
- # Calculate the version variables. | |
- major= | |
- versuffix= | |
- verstring= | |
- case $version_type in | |
- none) ;; | |
+ func_dirname "$file" "/" "" | |
+ dir="$func_dirname_result" | |
+ func_append dir "$objdir" | |
- darwin) | |
- # Like Linux, but with the current version available in | |
- # verstring for coding it into the library header | |
- major=.`expr $current - $age` | |
- versuffix="$major.$age.$revision" | |
- # Darwin ld doesn't like 0 for these options... | |
- minor_current=`expr $current + 1` | |
- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-cur… | |
- ;; | |
+ if test -n "$relink_command"; then | |
+ # Determine the prefix the user has applied to our future dir. | |
+ inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` | |
- freebsd-aout) | |
- major=".$current" | |
- versuffix=".$current.$revision"; | |
- ;; | |
+ # 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 no… | |
- freebsd-elf) | |
- major=".$current" | |
- versuffix=".$current"; | |
- ;; | |
+ 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… | |
+ else | |
+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir… | |
+ fi | |
- irix | nonstopux) | |
- major=`expr $current - $age + 1` | |
+ func_warning "relinking \`$file'" | |
+ func_show_eval "$relink_command" \ | |
+ 'func_fatal_error "error: relink \`$file'\'' with the above comman… | |
+ fi | |
- case $version_type in | |
- nonstopux) verstring_prefix=nonstopux ;; | |
- *) verstring_prefix=sgi ;; | |
+ # 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/$realnam… | |
+ 'exit $?' | |
+ tstripme="$stripme" | |
+ case $host_os in | |
+ cygwin* | mingw* | pw32* | cegcc*) | |
+ case $realname in | |
+ *.dll.a) | |
+ tstripme="" | |
+ ;; | |
+ esac | |
+ ;; | |
esac | |
- verstring="$verstring_prefix$major.$revision" | |
+ if test -n "$tstripme" && test -n "$striplib"; then | |
+ func_show_eval "$striplib $destdir/$realname" 'exit $?' | |
+ fi | |
- # Add in all the interfaces that we are compatible with. | |
- loop=$revision | |
- while test "$loop" -ne 0; do | |
- iface=`expr $revision - $loop` | |
- loop=`expr $loop - 1` | |
- verstring="$verstring_prefix$major.$iface:$verstring" | |
- done | |
+ 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 $linkn… | |
+ done | |
+ fi | |
- # Before this point, $major must not contain `.'. | |
- major=.$major | |
- versuffix="$major.$revision" | |
- ;; | |
+ # Do each command in the postinstall commands. | |
+ lib="$destdir/$realname" | |
+ func_execute_cmds "$postinstall_cmds" 'exit $?' | |
+ fi | |
- linux) | |
- major=.`expr $current - $age` | |
- versuffix="$major.$age.$revision" | |
- ;; | |
+ # 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 $?' | |
- osf) | |
- major=.`expr $current - $age` | |
- versuffix=".$current.$age.$revision" | |
- verstring="$current.$age.$revision" | |
+ # Maybe install the static library, too. | |
+ test -n "$old_library" && func_append staticlibs " $dir/$old_library" | |
+ ;; | |
- # Add in all the interfaces that we are compatible with. | |
- loop=$age | |
- while test "$loop" -ne 0; do | |
- iface=`expr $current - $loop` | |
- loop=`expr $loop - 1` | |
- verstring="$verstring:${iface}.0" | |
- done | |
+ *.lo) | |
+ # Install (i.e. copy) a libtool object. | |
- # Make executables depend on our current version. | |
- verstring="$verstring:${current}.0" | |
- ;; | |
+ # 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 | |
- sunos) | |
- major=".$current" | |
- versuffix=".$current.$revision" | |
+ # Deduce the name of the destination old-style object file. | |
+ case $destfile in | |
+ *.lo) | |
+ func_lo2o "$destfile" | |
+ staticdest=$func_lo2o_result | |
;; | |
- | |
- windows) | |
- # Use '-' rather than '.', since we only want one | |
- # extension on DOS 8.3 filesystems. | |
- major=`expr $current - $age` | |
- versuffix="-$major" | |
+ *.$objext) | |
+ staticdest="$destfile" | |
+ destfile= | |
;; | |
- | |
*) | |
- $echo "$modename: unknown library version type \`$version_type'" 1>&2 | |
- $echo "Fatal configuration error. See the $PACKAGE docs for more in… | |
- exit $EXIT_FAILURE | |
+ func_fatal_help "cannot copy a libtool object to \`$destfile'" | |
;; | |
esac | |
- # Clear the version info if we defaulted, and they specified a release. | |
- if test -z "$vinfo" && test -n "$release"; then | |
- major= | |
- case $version_type in | |
- darwin) | |
- # we can't check for "0.0" in archive_cmds due to quoting | |
- # problems, so we reset it completely | |
- verstring= | |
- ;; | |
- *) | |
- verstring="0.0" | |
- ;; | |
- esac | |
- if test "$need_version" = no; then | |
- versuffix= | |
- else | |
- versuffix=".0.0" | |
- fi | |
- fi | |
+ # Install the libtool object if requested. | |
+ test -n "$destfile" && \ | |
+ func_show_eval "$install_prog $file $destfile" 'exit $?' | |
- # Remove version info from name if versioning should be avoided | |
- if test "$avoid_version" = yes && test "$need_version" = no; then | |
- major= | |
- versuffix= | |
- verstring="" | |
+ # Install the old object if enabled. | |
+ if test "$build_old_libs" = yes; 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 | |
+ ;; | |
- # Check to see if the archive will have undefined symbols. | |
- if test "$allow_undefined" = yes; then | |
- if test "$allow_undefined_flag" = unsupported; then | |
- $echo "$modename: warning: undefined symbols not allowed in $host … | |
- build_libtool_libs=no | |
- build_old_libs=yes | |
- fi | |
+ *) | |
+ # Figure out destination file name, if it wasn't already specified. | |
+ if test -n "$destname"; then | |
+ destfile="$destdir/$destname" | |
else | |
- # Don't allow undefined symbols. | |
- allow_undefined_flag="$no_undefined_flag" | |
+ func_basename "$file" | |
+ destfile="$func_basename_result" | |
+ destfile="$destdir/$destfile" | |
fi | |
- fi | |
- if test "$mode" != relink; then | |
- # Remove our outputs, but don't remove object files since they | |
- # may have been created when compiling PIC objects. | |
- removelist= | |
- tempremovelist=`$echo "$output_objdir/*"` | |
- for p in $tempremovelist; do | |
- case $p in | |
- *.$objext) | |
- ;; | |
- $output_objdir/$outputname | $output_objdir/$libname.* | $output_o… | |
- if test "X$precious_files_regex" != "X"; then | |
- if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 | |
- then | |
- continue | |
- fi | |
- fi | |
- removelist="$removelist $p" | |
- ;; | |
- *) ;; | |
- esac | |
- done | |
- if test -n "$removelist"; then | |
- $show "${rm}r $removelist" | |
- $run ${rm}r $removelist | |
- fi | |
- 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 | |
- # Now set the variables for building old libraries. | |
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != conveni… | |
- oldlibs="$oldlibs $output_objdir/$libname.$libext" | |
+ # Do a test to see if this is really a libtool program. | |
+ case $host in | |
+ *cygwin* | *mingw*) | |
+ 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= | |
- # Transform .lo files to .o files. | |
- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'… | |
- fi | |
+ func_source "$wrapper" | |
- # Eliminate all temporary directories. | |
- for path in $notinst_path; do | |
- lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` | |
- deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` | |
- dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %… | |
- done | |
+ # Check the variables that should have been set. | |
+ test -z "$generated_by_libtool_version" && \ | |
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'" | |
- if test -n "$xrpath"; then | |
- # If the user specified any rpath flags, then add them. | |
- temp_xrpath= | |
- for libdir in $xrpath; do | |
- temp_xrpath="$temp_xrpath -R$libdir" | |
- case "$finalize_rpath " in | |
- *" $libdir "*) ;; | |
- *) finalize_rpath="$finalize_rpath $libdir" ;; | |
- esac | |
- done | |
- if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; … | |
- dependency_libs="$temp_xrpath $dependency_libs" | |
- fi | |
- fi | |
+ finalize=yes | |
+ 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'` ### testsuite:… | |
+ if test -n "$libdir" && test ! -f "$libfile"; then | |
+ func_warning "\`$lib' has not been installed in \`$libdir'" | |
+ finalize=no | |
+ fi | |
+ done | |
- # Make sure dlfiles contains only unique files that won't be dlpreopened | |
- old_dlfiles="$dlfiles" | |
- dlfiles= | |
- for lib in $old_dlfiles; do | |
- case " $dlprefiles $dlfiles " in | |
- *" $lib "*) ;; | |
- *) dlfiles="$dlfiles $lib" ;; | |
- esac | |
- done | |
+ relink_command= | |
+ func_source "$wrapper" | |
- # Make sure dlprefiles contains only unique files | |
- old_dlprefiles="$dlprefiles" | |
- dlprefiles= | |
- for lib in $old_dlprefiles; do | |
- case "$dlprefiles " in | |
- *" $lib "*) ;; | |
- *) dlprefiles="$dlprefiles $lib" ;; | |
+ outputname= | |
+ if test "$fast_install" = no && test -n "$relink_command"; then | |
+ $opt_dry_run || { | |
+ if test "$finalize" = yes; 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@%'"$… | |
+ | |
+ $opt_silent || { | |
+ func_quote_for_expand "$relink_command" | |
+ eval "func_echo $func_quote_for_expand_result" | |
+ } | |
+ if eval "$relink_command"; then : | |
+ else | |
+ func_error "error: relink \`$file' with the above command be… | |
+ $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 | |
- done | |
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' | |
+ $opt_dry_run || if test -n "$outputname"; then | |
+ ${RM}r "$tmpdir" | |
+ fi | |
+ ;; | |
+ esac | |
+ done | |
- if test "$build_libtool_libs" = yes; then | |
- if test -n "$rpath"; then | |
- case $host in | |
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) | |
- # these systems don't actually have a c library (as such)! | |
+ 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 "$opt_mode" = install && 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 () | |
+{ | |
+ $opt_debug | |
+ my_outputname="$1" | |
+ my_originator="$2" | |
+ my_pic_p="${3-no}" | |
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` | |
+ my_dlsyms= | |
+ | |
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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 … | |
+ 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$TIMESTAMP) $VERSION */ | |
+ | |
+#ifdef __cplusplus | |
+extern \"C\" { | |
+#endif | |
+ | |
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNU… | |
+#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 con'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 | |
+ | |
+/* External symbol declarations for the compiler. */\ | |
+" | |
+ | |
+ if test "$dlself" = yes; 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" | $NL2S… | |
+ 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_fil… | |
+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symb… | |
+ 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' "… | |
+ case $host in | |
+ *cygwin* | *mingw* | *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/$/$/… | |
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$n… | |
+ eval '$MV "$nlist"T "$nlist"' | |
+ case $host in | |
+ *cygwin* | *mingw* | *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* | *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 <import … | |
+ $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 | |
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $globa… | |
+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nli… | |
+ } | |
+ 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 | $globa… | |
+ } | |
+ fi | |
;; | |
- *-*-rhapsody* | *-*-darwin1.[012]) | |
- # Rhapsody C library is in the System framework | |
- deplibs="$deplibs -framework System" | |
+ *) | |
+ $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_… | |
+ } | |
;; | |
- *-*-netbsd*) | |
- # Don't link with libc until the a.out ld.so is fixed. | |
+ 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 >/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… | |
+ else | |
+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms" | |
+ 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[]; | |
+LT_DLSYM_CONST lt_dlsymlist | |
+lt_${my_prefix}_LTX_preloaded_symbols[] = | |
+{\ | |
+ { \"$my_originator\", (void *) 0 }," | |
+ | |
+ case $need_lib_prefix in | |
+ no) | |
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_obj… | |
;; | |
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |
- # Do not include libc due to us having libc/libc_r. | |
- test "X$arg" = "X-lc" && continue | |
+ *) | |
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "… | |
;; | |
- *) | |
- # Add libc to deplibs on all other systems if necessary. | |
- if test "$build_libtool_need_lc" = "yes"; then | |
- deplibs="$deplibs -lc" | |
+ 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" ;; | |
+ *) | |
+ if test "X$my_pic_p" != Xno; then | |
+ pic_flag_for_symtable=" $pic_flag" | |
fi | |
;; | |
esac | |
- fi | |
- | |
- # Transform deplibs into only deplibs that can be linked in shared. | |
- name_save=$name | |
- libname_save=$libname | |
- release_save=$release | |
- versuffix_save=$versuffix | |
- major_save=$major | |
- # I'm not sure if I'm treating the release correctly. I think | |
- # release should show up in the -l (ie -lgmp5) so we don't want to | |
- # add it in twice. Is that correct? | |
- release="" | |
- versuffix="" | |
- major="" | |
- newdeplibs= | |
- droppeddeps=no | |
- case $deplibs_check_method in | |
- pass_all) | |
- # Don't check for shared/static. Everything works. | |
- # This might be a little naive. We might want to check | |
- # whether the library exists or not. But this is on | |
- # osf3 & osf4 and I'm not really sure... Just | |
- # implementing what was already the behavior. | |
- newdeplibs=$deplibs | |
;; | |
- test_compile) | |
- # This code stresses the "libraries are programs" paradigm to its | |
- # limits. Maybe even breaks it. We compile a program, linking it | |
- # against the deplibs as a proxy for the library. Then we can check | |
- # whether they linked in statically or dynamically with ldd. | |
- $rm conftest.c | |
- cat > conftest.c <<EOF | |
- int main() { return 0; } | |
-EOF | |
- $rm conftest | |
- $LTCC -o conftest conftest.c $deplibs | |
- if test "$?" -eq 0 ; then | |
- ldd_output=`ldd conftest` | |
- for i in $deplibs; do | |
- name="`expr $i : '-l\(.*\)'`" | |
- # If $name is empty we are operating on a -L argument. | |
- if test "$name" != "" && test "$name" -ne "0"; then | |
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ;… | |
- case " $predeps $postdeps " in | |
- *" $i "*) | |
- newdeplibs="$newdeplibs $i" | |
- i="" | |
- ;; | |
- esac | |
- fi | |
- if test -n "$i" ; then | |
- libname=`eval \\$echo \"$libname_spec\"` | |
- deplib_matches=`eval \\$echo \"$library_names_spec\"` | |
- set dummy $deplib_matches | |
- deplib_match=$2 | |
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then | |
- newdeplibs="$newdeplibs $i" | |
- else | |
- droppeddeps=yes | |
- $echo | |
- $echo "*** Warning: dynamic linker does not accept needed … | |
- $echo "*** I have the capability to make that library auto… | |
- $echo "*** you link to this library. But I can only do th… | |
- $echo "*** shared version of the library, which I believe … | |
- $echo "*** because a test_compile did reveal that the link… | |
- $echo "*** its dynamic dependency list that programs get r… | |
- fi | |
- fi | |
- else | |
- newdeplibs="$newdeplibs $i" | |
- fi | |
- done | |
+ 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_builti… | |
+ | |
+ # Clean up the generated files. | |
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "… | |
+ | |
+ # Transform the symbol file into the correct name. | |
+ symfileobj="$output_objdir/${my_outputname}S.$objext" | |
+ case $host in | |
+ *cygwin* | *mingw* | *cegcc* ) | |
+ if test -f "$output_objdir/$my_outputname.def"; then | |
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$out… | |
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$o… | |
else | |
- # Error occurred in the first compile. Let's try to salvage | |
- # the situation: Compile a separate program for each library. | |
- for i in $deplibs; do | |
- name="`expr $i : '-l\(.*\)'`" | |
- # If $name is empty we are operating on a -L argument. | |
- if test "$name" != "" && test "$name" != "0"; then | |
- $rm conftest | |
- $LTCC -o conftest conftest.c $i | |
- # Did it work? | |
- if test "$?" -eq 0 ; then | |
- ldd_output=`ldd conftest` | |
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes"… | |
- case " $predeps $postdeps " in | |
- *" $i "*) | |
- newdeplibs="$newdeplibs $i" | |
- i="" | |
- ;; | |
- esac | |
- fi | |
- if test -n "$i" ; then | |
- libname=`eval \\$echo \"$libname_spec\"` | |
- deplib_matches=`eval \\$echo \"$library_names_spec\"` | |
- set dummy $deplib_matches | |
- deplib_match=$2 | |
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; t… | |
- newdeplibs="$newdeplibs $i" | |
- else | |
- droppeddeps=yes | |
- $echo | |
- $echo "*** Warning: dynamic linker does not accept neede… | |
- $echo "*** I have the capability to make that library au… | |
- $echo "*** you link to this library. But I can only do … | |
- $echo "*** shared version of the library, which you do n… | |
- $echo "*** because a test_compile did reveal that the li… | |
- $echo "*** as a dynamic dependency that programs can get… | |
- fi | |
- fi | |
- else | |
- droppeddeps=yes | |
- $echo | |
- $echo "*** Warning! Library $i is needed by this library bu… | |
- $echo "*** make it link in! You will probably need to inst… | |
- $echo "*** library that it depends on before this library wi… | |
- $echo "*** functional. Installing it before continuing woul… | |
- fi | |
- else | |
- newdeplibs="$newdeplibs $i" | |
- fi | |
- done | |
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$sym… | |
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$s… | |
fi | |
;; | |
- file_magic*) | |
- set dummy $deplibs_check_method | |
- file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` | |
- for a_deplib in $deplibs; do | |
- name="`expr $a_deplib : '-l\(.*\)'`" | |
- # If $name is empty we are operating on a -L argument. | |
- if test "$name" != "" && test "$name" != "0"; then | |
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; t… | |
- case " $predeps $postdeps " in | |
- *" $a_deplib "*) | |
- newdeplibs="$newdeplibs $a_deplib" | |
- a_deplib="" | |
- ;; | |
- esac | |
- fi | |
- if test -n "$a_deplib" ; then | |
- libname=`eval \\$echo \"$libname_spec\"` | |
- for i in $lib_search_path $sys_lib_search_path $shlib_search_p… | |
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | |
- for potent_lib in $potential_libs; do | |
- # Follow soft links. | |
- if ls -lLd "$potent_lib" 2>/dev/null \ | |
- | grep " -> " >/dev/null; then | |
- continue | |
- fi | |
- # The statement above tries to avoid entering an | |
- # endless loop below, in case of cyclic links. | |
- # We might still enter an endless loop, since a link | |
- # loop can be closed while we follow links, | |
- # but so what? | |
- potlib="$potent_lib" | |
- while test -h "$potlib" 2>/dev/null; do | |
- potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` | |
- case $potliblink in | |
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; | |
- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$… | |
- esac | |
- done | |
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | |
- | ${SED} 10q \ | |
- | $EGREP "$file_magic_regex" > /dev/null; then | |
- newdeplibs="$newdeplibs $a_deplib" | |
- a_deplib="" | |
- break 2 | |
- fi | |
- done | |
- done | |
- fi | |
- if test -n "$a_deplib" ; then | |
- droppeddeps=yes | |
- $echo | |
- $echo "*** Warning: linker path does not have real file for li… | |
- $echo "*** I have the capability to make that library automati… | |
- $echo "*** you link to this library. But I can only do this i… | |
- $echo "*** shared version of the library, which you do not app… | |
- $echo "*** because I did check the linker path looking for a f… | |
- if test -z "$potlib" ; then | |
- $echo "*** with $libname but no candidates were found. (...f… | |
- else | |
- $echo "*** with $libname and none of the candidates passed a… | |
- $echo "*** using a file magic. Last file checked: $potlib" | |
- fi | |
- fi | |
- else | |
- # Add a -L argument. | |
- newdeplibs="$newdeplibs $a_deplib" | |
- fi | |
- done # Gone through all deplibs. | |
- ;; | |
- match_pattern*) | |
- set dummy $deplibs_check_method | |
- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` | |
- for a_deplib in $deplibs; do | |
- name="`expr $a_deplib : '-l\(.*\)'`" | |
- # If $name is empty we are operating on a -L argument. | |
- if test -n "$name" && test "$name" != "0"; then | |
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; t… | |
- case " $predeps $postdeps " in | |
- *" $a_deplib "*) | |
- newdeplibs="$newdeplibs $a_deplib" | |
- a_deplib="" | |
- ;; | |
- esac | |
- fi | |
- if test -n "$a_deplib" ; then | |
- libname=`eval \\$echo \"$libname_spec\"` | |
- for i in $lib_search_path $sys_lib_search_path $shlib_search_p… | |
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | |
- for potent_lib in $potential_libs; do | |
- potlib="$potent_lib" # see symlink-check above in file_mag… | |
- if eval $echo \"$potent_lib\" 2>/dev/null \ | |
- | ${SED} 10q \ | |
- | $EGREP "$match_pattern_regex" > /dev/null; then | |
- newdeplibs="$newdeplibs $a_deplib" | |
- a_deplib="" | |
- break 2 | |
- fi | |
- done | |
- done | |
- fi | |
- if test -n "$a_deplib" ; then | |
- droppeddeps=yes | |
- $echo | |
- $echo "*** Warning: linker path does not have real file for li… | |
- $echo "*** I have the capability to make that library automati… | |
- $echo "*** you link to this library. But I can only do this i… | |
- $echo "*** shared version of the library, which you do not app… | |
- $echo "*** because I did check the linker path looking for a f… | |
- if test -z "$potlib" ; then | |
- $echo "*** with $libname but no candidates were found. (...f… | |
- else | |
- $echo "*** with $libname and none of the candidates passed a… | |
- $echo "*** using a regex pattern. Last file checked: $potlib" | |
- fi | |
- fi | |
- else | |
- # Add a -L argument. | |
- newdeplibs="$newdeplibs $a_deplib" | |
- fi | |
- done # Gone through all deplibs. | |
- ;; | |
- none | unknown | *) | |
- newdeplibs="" | |
- tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ | |
- -e 's/ -[LR][^ ]*//g'` | |
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |
- for i in $predeps $postdeps ; do | |
- # can't use Xsed below, because $i might contain '/' | |
- tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,… | |
- done | |
- fi | |
- if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | |
- | grep . >/dev/null; then | |
- $echo | |
- if test "X$deplibs_check_method" = "Xnone"; then | |
- $echo "*** Warning: inter-library dependencies are not supported… | |
- else | |
- $echo "*** Warning: inter-library dependencies are not known to … | |
- fi | |
- $echo "*** All declared inter-library dependencies are being dropp… | |
- droppeddeps=yes | |
- fi | |
+ *) | |
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfi… | |
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$sym… | |
;; | |
esac | |
- versuffix=$versuffix_save | |
- major=$major_save | |
- release=$release_save | |
- libname=$libname_save | |
- name=$name_save | |
+ ;; | |
+ *) | |
+ 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. | |
- case $host in | |
- *-*-rhapsody* | *-*-darwin1.[012]) | |
- # On Rhapsody replace the C library is the System framework | |
- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework Sy… | |
- ;; | |
- esac | |
+ # Nullify the symbol file. | |
+ compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` | |
+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` | |
+ fi | |
+} | |
- if test "$droppeddeps" = yes; then | |
- if test "$module" = yes; then | |
- $echo | |
- $echo "*** Warning: libtool could not satisfy all declared inter-l… | |
- $echo "*** dependencies of module $libname. Therefore, libtool wi… | |
- $echo "*** a static module, that should work as long as the dlopen… | |
- $echo "*** application is linked with the -dlopen flag." | |
- if test -z "$global_symbol_pipe"; then | |
- $echo | |
- $echo "*** However, this would only work if libtool was able to … | |
- $echo "*** lists from a program, using \`nm' or equivalent, but … | |
- $echo "*** not find such a program. So, this module is probably… | |
- $echo "*** \`nm' from GNU binutils and a full rebuild may help." | |
- fi | |
- if test "$build_old_libs" = no; then | |
- oldlibs="$output_objdir/$libname.$libext" | |
- build_libtool_libs=module | |
- build_old_libs=yes | |
- else | |
- build_libtool_libs=no | |
- fi | |
- else | |
- $echo "*** The inter-library dependencies that have been dropped h… | |
- $echo "*** automatically added whenever a program is linked with t… | |
- $echo "*** or is declared to -dlopen it." | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ 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-x… | |
+ 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 | |
+ } | |
+ }'` | |
+ 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" | |
+} | |
- if test "$allow_undefined" = no; then | |
- $echo | |
- $echo "*** Since this library must not contain undefined symbols… | |
- $echo "*** because either the platform does not support them or" | |
- $echo "*** it was explicitly requested with -no-undefined," | |
- $echo "*** libtool will only create a static version of it." | |
- if test "$build_old_libs" = no; then | |
- oldlibs="$output_objdir/$libname.$libext" | |
- build_libtool_libs=module | |
- build_old_libs=yes | |
- else | |
- build_libtool_libs=no | |
- fi | |
- fi | |
- fi | |
- fi | |
- # Done checking deplibs! | |
- deplibs=$newdeplibs | |
- fi | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` | |
+} | |
- # All the library-specific variables (install_libdir is set above). | |
- library_names= | |
- old_library= | |
- dlname= | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ 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]*$// | |
+ /./p' | | |
+ # we now have a list, one entry per line, of the stringified | |
+ # contents of the appropriate section of all members of the | |
+ # archive which possess that section. Heuristic: eliminate | |
+ # all those which 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' | |
+} | |
- # Test again, we may have decided not to build it any more | |
- if test "$build_libtool_libs" = yes; then | |
- if test "$hardcode_into_libs" = yes; then | |
- # Hardcode the library paths | |
- hardcode_libdirs= | |
- dep_rpath= | |
- rpath="$finalize_rpath" | |
- test "$mode" != relink && rpath="$compile_rpath$rpath" | |
- for libdir in $rpath; do | |
- if test -n "$hardcode_libdir_flag_spec"; then | |
- if test -n "$hardcode_libdir_separator"; then | |
- if test -z "$hardcode_libdirs"; then | |
- hardcode_libdirs="$libdir" | |
- else | |
- # Just accumulate the unique libdirs. | |
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_li… | |
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separato… | |
- ;; | |
- *) | |
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separa… | |
- ;; | |
- esac | |
- fi | |
- else | |
- eval flag=\"$hardcode_libdir_flag_spec\" | |
- dep_rpath="$dep_rpath $flag" | |
- fi | |
- elif test -n "$runpath_var"; then | |
- case "$perm_rpath " in | |
- *" $libdir "*) ;; | |
- *) perm_rpath="$perm_rpath $libdir" ;; | |
- esac | |
- fi | |
- done | |
- # Substitute the hardcoded libdirs into the rpath. | |
- if test -n "$hardcode_libdir_separator" && | |
- test -n "$hardcode_libdirs"; then | |
- libdir="$hardcode_libdirs" | |
- if test -n "$hardcode_libdir_flag_spec_ld"; then | |
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" | |
- else | |
- eval dep_rpath=\"$hardcode_libdir_flag_spec\" | |
- fi | |
- fi | |
- if test -n "$runpath_var" && test -n "$perm_rpath"; then | |
- # We should set the runpath_var. | |
- rpath= | |
- for dir in $perm_rpath; do | |
- rpath="$rpath$dir:" | |
- done | |
- eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" | |
- fi | |
- test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" | |
- 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 () | |
+{ | |
+ $opt_debug | |
+ func_to_tool_file "$1" func_convert_file_msys_to_w32 | |
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global… | |
+ test -n "$func_cygming_gnu_implib_tmp" | |
+} | |
- shlibpath="$finalize_shlibpath" | |
- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" | |
- if test -n "$shlibpath"; then | |
- eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath… | |
- fi | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ func_to_tool_file "$1" func_convert_file_msys_to_w32 | |
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_… | |
+ test -n "$func_cygming_ms_implib_tmp" | |
+} | |
- # Get the real and link names of the library. | |
- eval shared_ext=\"$shrext_cmds\" | |
- eval library_names=\"$library_names_spec\" | |
- set dummy $library_names | |
- realname="$2" | |
- shift; shift | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ if func_cygming_gnu_implib_p "$1" ; then | |
+ # binutils import library | |
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '… | |
+ elif func_cygming_ms_implib_p "$1" ; then | |
+ # ms-generated import library | |
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '… | |
+ else | |
+ # unknown | |
+ sharedlib_from_linklib_result="" | |
+ fi | |
+} | |
- if test -n "$soname_spec"; then | |
- eval soname=\"$soname_spec\" | |
- else | |
- soname="$realname" | |
- fi | |
- if test -z "$dlname"; then | |
- dlname=$soname | |
- fi | |
- lib="$output_objdir/$realname" | |
- for link | |
- do | |
- linknames="$linknames $link" | |
- done | |
+# func_extract_an_archive dir oldlib | |
+func_extract_an_archive () | |
+{ | |
+ $opt_debug | |
+ f_ex_an_ar_dir="$1"; shift | |
+ f_ex_an_ar_oldlib="$1" | |
+ if test "$lock_old_archive_extraction" = yes; 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 "$lock_old_archive_extraction" = yes; 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_e… | |
+ fi | |
+} | |
- # Use standard objects if they are pic | |
- test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e … | |
- # Prepare the list of exported symbols | |
- if test -z "$export_symbols"; then | |
- if test "$always_export_symbols" = yes || test -n "$export_symbols_r… | |
- $show "generating symbol list for \`$libname.la'" | |
- export_symbols="$output_objdir/$libname.exp" | |
- $run $rm $export_symbols | |
- cmds=$export_symbols_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- if len=`expr "X$cmd" : ".*"` && | |
- test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; t… | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- skipped_export=false | |
- else | |
- # The command line is too long to execute in one step. | |
- $show "using reloadable object file for export list..." | |
- skipped_export=: | |
- fi | |
- done | |
- IFS="$save_ifs" | |
- if test -n "$export_symbols_regex"; then | |
- $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" >… | |
- $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" >… | |
- $show "$mv \"${export_symbols}T\" \"$export_symbols\"" | |
- $run eval '$mv "${export_symbols}T" "$export_symbols"' | |
- fi | |
- fi | |
- fi | |
+# func_extract_archives gentop oldlib ... | |
+func_extract_archives () | |
+{ | |
+ $opt_debug | |
+ my_gentop="$1"; shift | |
+ my_oldlibs=${1+"$@"} | |
+ my_oldobjs="" | |
+ my_xlib="" | |
+ my_xabs="" | |
+ my_xdir="" | |
- if test -n "$export_symbols" && test -n "$include_expsyms"; then | |
- $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' | |
- fi | |
+ 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" | |
- tmp_deplibs= | |
- for test_deplib in $deplibs; do | |
- case " $convenience " in | |
- *" $test_deplib "*) ;; | |
- *) | |
- tmp_deplibs="$tmp_deplibs $test_deplib" | |
- ;; | |
- esac | |
- done | |
- deplibs="$tmp_deplibs" | |
+ func_mkdir_p "$my_xdir" | |
- if test -n "$convenience"; then | |
- if test -n "$whole_archive_flag_spec"; then | |
- save_libobjs=$libobjs | |
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |
+ 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` | |
+ darwin_base_archive=`basename "$darwin_archive"` | |
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Arc… | |
+ 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 $dar… | |
+ 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… | |
+ 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_bas… | |
+ 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 … | |
+ darwin_file= | |
+ darwin_files= | |
+ for darwin_file in $darwin_filelist; do | |
+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $… | |
+ $LIPO -create -output "$darwin_file" $darwin_files | |
+ done # $darwin_filelist | |
+ $RM -rf unfat-$$ | |
+ cd "$darwin_orig_dir" | |
else | |
- gentop="$output_objdir/${outputname}x" | |
- generated="$generated $gentop" | |
+ 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… | |
+ done | |
- func_extract_archives $gentop $convenience | |
- libobjs="$libobjs $func_extract_archives_result" | |
- fi | |
- fi | |
- | |
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then | |
- eval flag=\"$thread_safe_flag_spec\" | |
- linker_flags="$linker_flags $flag" | |
- fi | |
+ func_extract_archives_result="$my_oldobjs" | |
+} | |
- # Make a backup of the uninstalled library when relinking | |
- if test "$mode" = relink; then | |
- $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname $… | |
- fi | |
- # Do each of the archive commands. | |
- if test "$module" = yes && test -n "$module_cmds" ; then | |
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then | |
- eval test_cmds=\"$module_expsym_cmds\" | |
- cmds=$module_expsym_cmds | |
- else | |
- eval test_cmds=\"$module_cmds\" | |
- cmds=$module_cmds | |
- fi | |
- else | |
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then | |
- eval test_cmds=\"$archive_expsym_cmds\" | |
- cmds=$archive_expsym_cmds | |
- else | |
- eval test_cmds=\"$archive_cmds\" | |
- cmds=$archive_cmds | |
- fi | |
- fi | |
+# 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 | |
+# 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 in which it is stored is | |
+# the $objdir directory. This is a cygwin/mingw-specific | |
+# behavior. | |
+func_emit_wrapper () | |
+{ | |
+ func_emit_wrapper_arg1=${1-no} | |
- if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` … | |
- test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |
- : | |
- else | |
- # The command line is too long to link in one step, link piecewise. | |
- $echo "creating reloadable object files..." | |
+ $ECHO "\ | |
+#! $SHELL | |
- # Save the value of $output and $libobjs because we want to | |
- # use them later. If we have whole_archive_flag_spec, we | |
- # want to use save_libobjs as it was before | |
- # whole_archive_flag_spec was expanded, because we can't | |
- # assume the linker understands whole_archive_flag_spec. | |
- # This may have to be revisited, in case too many | |
- # convenience libraries get linked in and end up exceeding | |
- # the spec. | |
- if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then | |
- save_libobjs=$libobjs | |
- fi | |
- save_output=$output | |
- output_la=`$echo "X$output" | $Xsed -e "$basename"` | |
+# $output - temporary wrapper script for $objdir/$outputname | |
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $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. | |
- # Clear the reloadable object creation command queue and | |
- # initialize k to one. | |
- test_cmds= | |
- concat_cmds= | |
- objlist= | |
- delfiles= | |
- last_robj= | |
- k=1 | |
- output=$output_objdir/$output_la-${k}.$objext | |
- # Loop over the list of objects to be linked. | |
- for obj in $save_libobjs | |
- do | |
- eval test_cmds=\"$reload_cmds $objlist $last_robj\" | |
- if test "X$objlist" = X || | |
- { len=`expr "X$test_cmds" : ".*"` && | |
- test "$len" -le "$max_cmd_len"; }; then | |
- objlist="$objlist $obj" | |
- else | |
- # The command $test_cmds is almost too long, add a | |
- # command to the queue. | |
- if test "$k" -eq 1 ; then | |
- # The first file doesn't have a previous command to add. | |
- eval concat_cmds=\"$reload_cmds $objlist $last_robj\" | |
- else | |
- # All subsequent reloadable object files will link in | |
- # the last one created. | |
- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_r… | |
- fi | |
- last_robj=$output_objdir/$output_la-${k}.$objext | |
- k=`expr $k + 1` | |
- output=$output_objdir/$output_la-${k}.$objext | |
- objlist=$obj | |
- len=1 | |
- fi | |
- done | |
- # Handle the remaining objects by creating one last | |
- # reloadable object file. All subsequent reloadable object | |
- # files will link in the last one created. | |
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |
- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" | |
- | |
- if ${skipped_export-false}; then | |
- $show "generating symbol list for \`$libname.la'" | |
- export_symbols="$output_objdir/$libname.exp" | |
- $run $rm $export_symbols | |
- libobjs=$output | |
- # Append the command to create the export file. | |
- eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" | |
- fi | |
- | |
- # Set up a command to remove the reloadable object files | |
- # after they are used. | |
- i=0 | |
- while test "$i" -lt "$k" | |
- do | |
- i=`expr $i + 1` | |
- delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" | |
- done | |
+# 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' | |
- $echo "creating a temporary reloadable object file: $output" | |
+# 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 | |
- # Loop through the commands generated above and execute them. | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $concat_cmds; do | |
- IFS="$save_ifs" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
+# 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 | |
- libobjs=$output | |
- # Restore the value of output. | |
- output=$save_output | |
+relink_command=\"$relink_command\" | |
- if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then | |
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |
- fi | |
- # Expand the library linking commands again to reset the | |
- # value of $libobjs for piecewise linking. | |
+# 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\"" | |
- # Do each of the archive commands. | |
- if test "$module" = yes && test -n "$module_cmds" ; then | |
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then | |
- cmds=$module_expsym_cmds | |
- else | |
- cmds=$module_cmds | |
- fi | |
- else | |
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then | |
- cmds=$archive_expsym_cmds | |
- else | |
- cmds=$archive_cmds | |
- fi | |
- fi | |
+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` | |
+ $ECHO "\ | |
- # Append the command to remove the reloadable object files | |
- # to the just-reset $cmds. | |
- eval cmds=\"\$cmds~\$rm $delfiles\" | |
- fi | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
+# 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 | |
- # Restore the uninstalled library and exit | |
- if test "$mode" = relink; then | |
- $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname $… | |
- exit $EXIT_SUCCESS | |
- 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/ which is used only on | |
+# windows platforms, and (c) all begin with the string "--lt-" | |
+# (application programs are unlikely to have options which 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 | |
- # Create links to the real library. | |
- for linkname in $linknames; do | |
- if test "$realname" != "$linkname"; then | |
- $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $lin… | |
- $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname … | |
- fi | |
- done | |
+ # Print the debug banner immediately: | |
+ if test -n \"\$lt_option_debug\"; then | |
+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$T… | |
+ fi | |
+} | |
- # If -module or -export-dynamic was specified, set the dlname. | |
- if test "$module" = yes || test "$export_dynamic" = yes; then | |
- # On all known operating systems, these are identical. | |
- dlname="$soname" | |
- fi | |
- 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_dump_args_N=\`expr \$lt_dump_args_N + 1\` | |
+ done | |
+} | |
- obj) | |
- if test -n "$deplibs"; then | |
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>… | |
+# Core function for launching the target application | |
+func_exec_program_core () | |
+{ | |
+" | |
+ case $host in | |
+ # Backslashes separate directories on plain windows | |
+ *-*-mingw | *-*-os2* | *-cegcc*) | |
+ $ECHO "\ | |
+ if test -n \"\$lt_option_debug\"; then | |
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\… | |
+ func_lt_dump_args \${1+\"\$@\"} 1>&2 | |
fi | |
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} | |
+" | |
+ ;; | |
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |
- $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 | |
+ *) | |
+ $ECHO "\ | |
+ if test -n \"\$lt_option_debug\"; then | |
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$p… | |
+ func_lt_dump_args \${1+\"\$@\"} 1>&2 | |
fi | |
+ exec \"\$progdir/\$program\" \${1+\"\$@\"} | |
+" | |
+ ;; | |
+ esac | |
+ $ECHO "\ | |
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 | |
+ exit 1 | |
+} | |
- if test -n "$rpath"; then | |
- $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 | |
- fi | |
+# 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+\"\$@\"} | |
+} | |
- if test -n "$xrpath"; then | |
- $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 | |
- fi | |
+ # Parse options | |
+ func_parse_lt_options \"\$0\" \${1+\"\$@\"} | |
- if test -n "$vinfo"; then | |
- $echo "$modename: warning: \`-version-info' is ignored for objects" 1>… | |
- fi | |
+ # Find the directory that this script lives in. | |
+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` | |
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=. | |
- if test -n "$release"; then | |
- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 | |
- fi | |
+ # 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%/[^/]*\$%%'\` | |
- case $output in | |
- *.lo) | |
- if test -n "$objs$old_deplibs"; then | |
- $echo "$modename: cannot build library object \`$output' from non-li… | |
- exit $EXIT_FAILURE | |
- fi | |
- libobj="$output" | |
- obj=`$echo "X$output" | $Xsed -e "$lo2o"` | |
- ;; | |
- *) | |
- libobj= | |
- obj="$output" | |
- ;; | |
+ # 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 | |
- # Delete the old objects. | |
- $run $rm $obj $libobj | |
+ file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` | |
+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` | |
+ done | |
- # Objects from convenience libraries. This assumes | |
- # single-version convenience libraries. Whenever we create | |
- # different ones for PIC/non-PIC, this we'll have to duplicate | |
- # the extraction. | |
- reload_conv_objs= | |
- gentop= | |
- # reload_cmds runs $LD directly, so let us get rid of | |
- # -Wl from whole_archive_flag_spec | |
- wl= | |
+ # Usually 'no', except on cygwin/mingw 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 | |
- if test -n "$convenience"; then | |
- if test -n "$whole_archive_flag_spec"; then | |
- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" | |
- else | |
- gentop="$output_objdir/${obj}x" | |
- generated="$generated $gentop" | |
- | |
- func_extract_archives $gentop $convenience | |
- reload_conv_objs="$reload_objs $func_extract_archives_result" | |
- fi | |
- fi | |
- | |
- # Create the old-style object. | |
- reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '… | |
- | |
- output="$obj" | |
- cmds=$reload_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
+ # Try to get the absolute directory name. | |
+ absdir=\`cd \"\$thisdir\" && pwd\` | |
+ test -n \"\$absdir\" && thisdir=\"\$absdir\" | |
+" | |
- # Exit if we aren't doing a library object file. | |
- if test -z "$libobj"; then | |
- if test -n "$gentop"; then | |
- $show "${rm}r $gentop" | |
- $run ${rm}r $gentop | |
- fi | |
+ if test "$fast_install" = yes; then | |
+ $ECHO "\ | |
+ program=lt-'$outputname'$exeext | |
+ progdir=\"\$thisdir/$objdir\" | |
- exit $EXIT_SUCCESS | |
- fi | |
+ if test ! -f \"\$progdir/\$program\" || | |
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/de… | |
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then | |
- if test "$build_libtool_libs" != yes; then | |
- if test -n "$gentop"; then | |
- $show "${rm}r $gentop" | |
- $run ${rm}r $gentop | |
- fi | |
+ file=\"\$\$-\$program\" | |
- # Create an invalid libtool object if no PIC, so that we don't | |
- # accidentally link it into a program. | |
- # $show "echo timestamp > $libobj" | |
- # $run eval "echo timestamp > $libobj" || exit $? | |
- exit $EXIT_SUCCESS | |
- fi | |
+ if test ! -d \"\$progdir\"; then | |
+ $MKDIR \"\$progdir\" | |
+ else | |
+ $RM \"\$progdir/\$file\" | |
+ fi" | |
- if test -n "$pic_flag" || test "$pic_mode" != default; then | |
- # Only do commands if we really have different PIC objects. | |
- reload_objs="$libobjs $reload_conv_objs" | |
- output="$libobj" | |
- cmds=$reload_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
- fi | |
+ $ECHO "\ | |
- if test -n "$gentop"; then | |
- $show "${rm}r $gentop" | |
- $run ${rm}r $gentop | |
+ # 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 | |
- exit $EXIT_SUCCESS | |
- ;; | |
+ $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 | |
- prog) | |
- case $host in | |
- *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; | |
- esac | |
- if test -n "$vinfo"; then | |
- $echo "$modename: warning: \`-version-info' is ignored for programs" 1… | |
- fi | |
+ $ECHO "\ | |
- if test -n "$release"; then | |
- $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 | |
- fi | |
+ if test -f \"\$progdir/\$program\"; then" | |
- if test "$preload" = yes; then | |
- if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && | |
- test "$dlopen_self_static" = unknown; then | |
- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming n… | |
+ # 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 | |
- fi | |
- | |
- case $host in | |
- *-*-rhapsody* | *-*-darwin1.[012]) | |
- # On Rhapsody replace the C library is the System framework | |
- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -fram… | |
- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -fr… | |
- ;; | |
- esac | |
- | |
- case $host in | |
- *darwin*) | |
- # Don't allow lazy linking, it breaks C++ global constructors | |
- if test "$tagname" = CXX ; then | |
- compile_command="$compile_command ${wl}-bind_at_load" | |
- finalize_command="$finalize_command ${wl}-bind_at_load" | |
- fi | |
- ;; | |
- esac | |
- compile_command="$compile_command $compile_deplibs" | |
- finalize_command="$finalize_command $finalize_deplibs" | |
+ # Export our shlibpath_var if we have one. | |
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_va… | |
+ $ECHO "\ | |
+ # Add our own library path to $shlibpath_var | |
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" | |
- if test -n "$rpath$xrpath"; then | |
- # If the user specified any rpath flags, then add them. | |
- for libdir in $rpath $xrpath; do | |
- # This is the magic to use -rpath. | |
- case "$finalize_rpath " in | |
- *" $libdir "*) ;; | |
- *) finalize_rpath="$finalize_rpath $libdir" ;; | |
- esac | |
- done | |
- fi | |
+ # 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/::*\$//'\` | |
- # Now hardcode the library paths | |
- rpath= | |
- hardcode_libdirs= | |
- for libdir in $compile_rpath $finalize_rpath; do | |
- if test -n "$hardcode_libdir_flag_spec"; then | |
- if test -n "$hardcode_libdir_separator"; then | |
- if test -z "$hardcode_libdirs"; then | |
- hardcode_libdirs="$libdir" | |
- else | |
- # Just accumulate the unique libdirs. | |
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir… | |
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |
- ;; | |
- *) | |
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$… | |
- ;; | |
- esac | |
- fi | |
- else | |
- eval flag=\"$hardcode_libdir_flag_spec\" | |
- rpath="$rpath $flag" | |
- fi | |
- elif test -n "$runpath_var"; then | |
- case "$perm_rpath " in | |
- *" $libdir "*) ;; | |
- *) perm_rpath="$perm_rpath $libdir" ;; | |
- esac | |
+ export $shlibpath_var | |
+" | |
fi | |
- case $host in | |
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) | |
- case :$dllsearchpath: in | |
- *":$libdir:"*) ;; | |
- *) dllsearchpath="$dllsearchpath:$libdir";; | |
- esac | |
- ;; | |
- esac | |
- done | |
- # Substitute the hardcoded libdirs into the rpath. | |
- if test -n "$hardcode_libdir_separator" && | |
- test -n "$hardcode_libdirs"; then | |
- libdir="$hardcode_libdirs" | |
- eval rpath=\" $hardcode_libdir_flag_spec\" | |
- fi | |
- compile_rpath="$rpath" | |
- rpath= | |
- hardcode_libdirs= | |
- for libdir in $finalize_rpath; do | |
- if test -n "$hardcode_libdir_flag_spec"; then | |
- if test -n "$hardcode_libdir_separator"; then | |
- if test -z "$hardcode_libdirs"; then | |
- hardcode_libdirs="$libdir" | |
- else | |
- # Just accumulate the unique libdirs. | |
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir… | |
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |
- ;; | |
- *) | |
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$… | |
- ;; | |
- esac | |
- fi | |
- else | |
- eval flag=\"$hardcode_libdir_flag_spec\" | |
- rpath="$rpath $flag" | |
- fi | |
- elif test -n "$runpath_var"; then | |
- case "$finalize_perm_rpath " in | |
- *" $libdir "*) ;; | |
- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; | |
- esac | |
- fi | |
- done | |
- # Substitute the hardcoded libdirs into the rpath. | |
- if test -n "$hardcode_libdir_separator" && | |
- test -n "$hardcode_libdirs"; then | |
- libdir="$hardcode_libdirs" | |
- eval rpath=\" $hardcode_libdir_flag_spec\" | |
- fi | |
- finalize_rpath="$rpath" | |
+ $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\ | |
+" | |
+} | |
- if test -n "$libobjs" && test "$build_old_libs" = yes; then | |
- # Transform all the library objects into standard objects. | |
- compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o"… | |
- finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2… | |
- fi | |
- dlsyms= | |
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |
- if test -n "$NM" && test -n "$global_symbol_pipe"; then | |
- dlsyms="${outputname}S.c" | |
- else | |
- $echo "$modename: not configured to extract global symbols from dlpr… | |
- 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 <<EOF | |
- if test -n "$dlsyms"; then | |
- case $dlsyms in | |
- "") ;; | |
- *.c) | |
- # Discover the nlist of each of the dlfiles. | |
- nlist="$output_objdir/${outputname}.nm" | |
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname | |
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | |
- $show "$rm $nlist ${nlist}S ${nlist}T" | |
- $run $rm "$nlist" "${nlist}S" "${nlist}T" | |
+ The $output program cannot be directly executed until all the libtool | |
+ libraries that it depends on are installed. | |
- # Parse the name list into a source file. | |
- $show "creating $output_objdir/$dlsyms" | |
+ This wrapper executable should never be moved out of the build directory. | |
+ If it is, it will not operate correctly. | |
+*/ | |
+EOF | |
+ cat <<"EOF" | |
+#ifdef _MSC_VER | |
+# define _CRT_SECURE_NO_DEPRECATE 1 | |
+#endif | |
+#include <stdio.h> | |
+#include <stdlib.h> | |
+#ifdef _MSC_VER | |
+# include <direct.h> | |
+# include <process.h> | |
+# include <io.h> | |
+#else | |
+# include <unistd.h> | |
+# include <stdint.h> | |
+# ifdef __CYGWIN__ | |
+# include <io.h> | |
+# endif | |
+#endif | |
+#include <malloc.h> | |
+#include <stdarg.h> | |
+#include <assert.h> | |
+#include <string.h> | |
+#include <ctype.h> | |
+#include <errno.h> | |
+#include <fcntl.h> | |
+#include <sys/stat.h> | |
+ | |
+/* declarations of non-ANSI functions */ | |
+#if defined(__MINGW32__) | |
+# ifdef __STRICT_ANSI__ | |
+int _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 platforms) ... */ | |
+#endif | |
- test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ | |
-/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ | |
-/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ | |
+/* 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 | |
+# ifndef _INTPTR_T_DEFINED | |
+# define _INTPTR_T_DEFINED | |
+# define intptr_t int | |
+# endif | |
+#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 | |
-#ifdef __cplusplus | |
-extern \"C\" { | |
+#if defined(PATH_MAX) | |
+# define LT_PATHMAX PATH_MAX | |
+#elif defined(MAXPATHLEN) | |
+# define LT_PATHMAX MAXPATHLEN | |
+#else | |
+# define LT_PATHMAX 1024 | |
#endif | |
-/* Prevent the only kind of declaration conflicts we can make. */ | |
-#define lt_preloaded_symbols some_other_symbol | |
+#ifndef S_IXOTH | |
+# define S_IXOTH 0 | |
+#endif | |
+#ifndef S_IXGRP | |
+# define S_IXGRP 0 | |
+#endif | |
-/* External symbol declarations for the compiler. */\ | |
-" | |
+/* path handling portability macros */ | |
+#ifndef DIR_SEPARATOR | |
+# define DIR_SEPARATOR '/' | |
+# define PATH_SEPARATOR ':' | |
+#endif | |
- if test "$dlself" = yes; then | |
- $show "generating symbol list for \`$output'" | |
+#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 | |
- test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" | |
+#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 */ | |
- # Add our own program objects to the symbol list. | |
- progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" … | |
- for arg in $progfiles; do | |
- $show "extracting global C symbols from \`$arg'" | |
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" | |
- done | |
+#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 */ | |
- if test -n "$exclude_expsyms"; then | |
- $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' | |
- $run eval '$mv "$nlist"T "$nlist"' | |
- fi | |
+#ifndef FOPEN_WB | |
+# define FOPEN_WB "w" | |
+#endif | |
+#ifndef _O_BINARY | |
+# define _O_BINARY 0 | |
+#endif | |
- if test -n "$export_symbols_regex"; then | |
- $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"… | |
- $run eval '$mv "$nlist"T "$nlist"' | |
- fi | |
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) | |
+#define XFREE(stale) do { \ | |
+ if (stale) { free ((void *) stale); stale = 0; } \ | |
+} while (0) | |
- # Prepare the list of exported symbols | |
- if test -z "$export_symbols"; then | |
- export_symbols="$output_objdir/$outputname.exp" | |
- $run $rm $export_symbols | |
- $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/… | |
- else | |
- $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/… | |
- $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" >… | |
- $run eval 'mv "$nlist"T "$nlist"' | |
- fi | |
- fi | |
+#if defined(LT_DEBUGWRAPPER) | |
+static int lt_debug = 1; | |
+#else | |
+static int lt_debug = 0; | |
+#endif | |
- for arg in $dlprefiles; do | |
- $show "extracting global C symbols from \`$arg'" | |
- name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` | |
- $run eval '$echo ": $name " >> "$nlist"' | |
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" | |
- done | |
+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 | |
- if test -z "$run"; then | |
- # Make sure we have at least an empty file. | |
- test -f "$nlist" || : > "$nlist" | |
+ cat <<EOF | |
+volatile const char * MAGIC_EXE = "$magic_exe"; | |
+const char * LIB_PATH_VARNAME = "$shlibpath_var"; | |
+EOF | |
- if test -n "$exclude_expsyms"; then | |
- $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T | |
- $mv "$nlist"T "$nlist" | |
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpat… | |
+ func_to_host_path "$temp_rpath" | |
+ cat <<EOF | |
+const char * LIB_PATH_VALUE = "$func_to_host_path_result"; | |
+EOF | |
+ else | |
+ cat <<"EOF" | |
+const char * LIB_PATH_VALUE = ""; | |
+EOF | |
fi | |
- # Try sorting and uniquifying the output. | |
- if grep -v "^: " < "$nlist" | | |
- if sort -k 3 </dev/null >/dev/null 2>&1; then | |
- sort -k 3 | |
- else | |
- sort +2 | |
- fi | | |
- uniq > "$nlist"S; then | |
- : | |
+ if test -n "$dllsearchpath"; then | |
+ func_to_host_path "$dllsearchpath:" | |
+ cat <<EOF | |
+const char * EXE_PATH_VARNAME = "PATH"; | |
+const char * EXE_PATH_VALUE = "$func_to_host_path_result"; | |
+EOF | |
else | |
- grep -v "^: " < "$nlist" > "$nlist"S | |
+ cat <<"EOF" | |
+const char * EXE_PATH_VARNAME = ""; | |
+const char * EXE_PATH_VALUE = ""; | |
+EOF | |
fi | |
- if test -f "$nlist"S; then | |
- eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$… | |
+ if test "$fast_install" = yes; then | |
+ cat <<EOF | |
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ | |
+EOF | |
else | |
- $echo '/* NONE */' >> "$output_objdir/$dlsyms" | |
+ cat <<EOF | |
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ | |
+EOF | |
fi | |
- $echo >> "$output_objdir/$dlsyms" "\ | |
-#undef lt_preloaded_symbols | |
+ cat <<"EOF" | |
-#if defined (__STDC__) && __STDC__ | |
-# define lt_ptr void * | |
-#else | |
-# define lt_ptr char * | |
-# define const | |
-#endif | |
- | |
-/* The mapping between symbol names and symbols. */ | |
-" | |
- | |
- case $host in | |
- *cygwin* | *mingw* ) | |
- $echo >> "$output_objdir/$dlsyms" "\ | |
-/* DATA imports from DLLs on WIN32 can't be const, because | |
- runtime relocations are performed -- see ld's documentation | |
- on pseudo-relocs */ | |
-struct { | |
-" | |
- ;; | |
- * ) | |
- $echo >> "$output_objdir/$dlsyms" "\ | |
-const struct { | |
-" | |
- ;; | |
- esac | |
- | |
- | |
- $echo >> "$output_objdir/$dlsyms" "\ | |
- const char *name; | |
- lt_ptr address; | |
-} | |
-lt_preloaded_symbols[] = | |
-{\ | |
-" | |
- | |
- eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_obj… | |
- | |
- $echo >> "$output_objdir/$dlsyms" "\ | |
- {0, (lt_ptr) 0} | |
-}; | |
- | |
-/* This works around a problem in FreeBSD linker */ | |
-#ifdef FREEBSD_WORKAROUND | |
-static const void *lt_preloaded_setup() { | |
- return lt_preloaded_symbols; | |
-} | |
-#endif | |
- | |
-#ifdef __cplusplus | |
-} | |
-#endif\ | |
-" | |
- fi | |
- | |
- pic_flag_for_symtable= | |
- 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*) | |
- case "$compile_command " in | |
- *" -static "*) ;; | |
- *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; | |
- esac;; | |
- *-*-hpux*) | |
- case "$compile_command " in | |
- *" -static "*) ;; | |
- *) pic_flag_for_symtable=" $pic_flag";; | |
- esac | |
- esac | |
- | |
- # Now compile the dynamic symbol file. | |
- $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_s… | |
- $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_f… | |
- | |
- # Clean up the generated files. | |
- $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" | |
- $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" | |
- | |
- # Transform the symbol file into the correct name. | |
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$… | |
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@… | |
- ;; | |
- *) | |
- $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- 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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` | |
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%… | |
- fi | |
- | |
- if test "$need_relink" = no || test "$build_libtool_libs" != yes; then | |
- # Replace the output file specification. | |
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$o… | |
- link_command="$compile_command$compile_rpath" | |
- | |
- # We have no uninstalled library dependencies, so finalize right now. | |
- $show "$link_command" | |
- $run eval "$link_command" | |
- status=$? | |
- | |
- # Delete the generated files. | |
- if test -n "$dlsyms"; then | |
- $show "$rm $output_objdir/${outputname}S.${objext}" | |
- $run $rm "$output_objdir/${outputname}S.${objext}" | |
- fi | |
- | |
- exit $status | |
- fi | |
- | |
- if test -n "$shlibpath_var"; then | |
- # We should set the shlibpath_var | |
- rpath= | |
- for dir in $temp_rpath; do | |
- case $dir in | |
- [\\/]* | [A-Za-z]:[\\/]*) | |
- # Absolute path. | |
- rpath="$rpath$dir:" | |
- ;; | |
- *) | |
- # Relative path: add a thisdir entry. | |
- rpath="$rpath\$thisdir/$dir:" | |
- ;; | |
- esac | |
- done | |
- temp_rpath="$rpath" | |
- fi | |
- | |
- if test -n "$compile_shlibpath$finalize_shlibpath"; then | |
- compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpat… | |
- fi | |
- if test -n "$finalize_shlibpath"; then | |
- finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var… | |
- fi | |
- | |
- compile_var= | |
- finalize_var= | |
- if test -n "$runpath_var"; then | |
- if test -n "$perm_rpath"; then | |
- # We should set the runpath_var. | |
- rpath= | |
- for dir in $perm_rpath; do | |
- rpath="$rpath$dir:" | |
- done | |
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" " | |
- fi | |
- if test -n "$finalize_perm_rpath"; then | |
- # We should set the runpath_var. | |
- rpath= | |
- for dir in $finalize_perm_rpath; do | |
- rpath="$rpath$dir:" | |
- done | |
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " | |
- fi | |
- fi | |
- | |
- if test "$no_install" = yes; then | |
- # We don't need to create a wrapper script. | |
- link_command="$compile_var$compile_command$compile_rpath" | |
- # Replace the output file specification. | |
- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"… | |
- # Delete the old output file. | |
- $run $rm $output | |
- # Link the executable and exit | |
- $show "$link_command" | |
- $run eval "$link_command" || exit $? | |
- exit $EXIT_SUCCESS | |
- fi | |
- | |
- if test "$hardcode_action" = relink; then | |
- # Fast installation is not supported | |
- link_command="$compile_var$compile_command$compile_rpath" | |
- relink_command="$finalize_var$finalize_command$finalize_rpath" | |
- | |
- $echo "$modename: warning: this platform does not like uninstalled sha… | |
- $echo "$modename: \`$output' will be relinked during installation" 1>&2 | |
- else | |
- if test "$fast_install" != no; then | |
- link_command="$finalize_var$compile_command$finalize_rpath" | |
- if test "$fast_install" = yes; then | |
- relink_command=`$echo "X$compile_var$compile_command$compile_rpath… | |
- else | |
- # fast_install is set to needless | |
- relink_command= | |
- fi | |
- else | |
- link_command="$compile_var$compile_command$compile_rpath" | |
- relink_command="$finalize_var$finalize_command$finalize_rpath" | |
- fi | |
- fi | |
- | |
- # Replace the output file specification. | |
- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_ob… | |
- | |
- # Delete the old output files. | |
- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname | |
- | |
- $show "$link_command" | |
- $run eval "$link_command" || exit $? | |
- | |
- # Now create the wrapper script. | |
- $show "creating $output" | |
- | |
- # Quote the relink command for shipping. | |
- if test -n "$relink_command"; then | |
- # Preserve any variables that may affect compiler behavior | |
- for var in $variables_saved_for_relink; do | |
- if eval test -z \"\${$var+set}\"; then | |
- relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var… | |
- elif eval var_value=\$$var; test -z "$var_value"; then | |
- relink_command="$var=; export $var; $relink_command" | |
- else | |
- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` | |
- relink_command="$var=\"$var_value\"; export $var; $relink_command" | |
- fi | |
- done | |
- relink_command="(cd `pwd`; $relink_command)" | |
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` | |
- fi | |
- | |
- # Quote $echo for shipping. | |
- if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then | |
- case $progpath in | |
- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; | |
- *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; | |
- esac | |
- qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` | |
- else | |
- qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` | |
- fi | |
- | |
- # Only actually do things if our run command is non-null. | |
- if test -z "$run"; then | |
- # win32 will think the script is a binary if it has | |
- # a .exe suffix, so we strip it off here. | |
- case $output in | |
- *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; | |
- esac | |
- # test for cygwin because mv fails w/o .exe extensions | |
- case $host in | |
- *cygwin*) | |
- exeext=.exe | |
- outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; | |
- *) exeext= ;; | |
- esac | |
- case $host in | |
- *cygwin* | *mingw* ) | |
- cwrappersource=`$echo ${objdir}/lt-${outputname}.c` | |
- cwrapper=`$echo ${output}.exe` | |
- $rm $cwrappersource $cwrapper | |
- trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 | |
+#define LTWRAPPER_OPTION_PREFIX "--lt-" | |
- cat > $cwrappersource <<EOF | |
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; | |
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script… | |
+static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; | |
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname | |
- Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |
+int | |
+main (int argc, char *argv[]) | |
+{ | |
+ char **newargz; | |
+ int newargc; | |
+ char *tmp_pathspec; | |
+ char *actual_cwrapper_path; | |
+ char *actual_cwrapper_name; | |
+ char *target_name; | |
+ char *lt_argv_zero; | |
+ intptr_t rval = 127; | |
- The $output program cannot be directly executed until all the libtool | |
- libraries that it depends on are installed. | |
+ int i; | |
- This wrapper executable should never be moved out of the build directory. | |
- If it is, it will not operate correctly. | |
+ program_name = (char *) xstrdup (base_name (argv[0])); | |
+ newargz = XMALLOC (char *, argc + 1); | |
- Currently, it simply execs the wrapper *script* "/bin/sh $output", | |
- but could eventually absorb all of the scripts functionality and | |
- exec $objdir/$outputname directly. | |
-*/ | |
+ /* very simple arg parsing; don't want to rely on getopt | |
+ * also, copy all non cwrapper options to newargz, except | |
+ * argz[0], which is handled differently | |
+ */ | |
+ newargc=0; | |
+ for (i = 1; i < argc; i++) | |
+ { | |
+ if (strcmp (argv[i], dumpscript_opt) == 0) | |
+ { | |
EOF | |
- cat >> $cwrappersource<<"EOF" | |
-#include <stdio.h> | |
-#include <stdlib.h> | |
-#include <unistd.h> | |
-#include <malloc.h> | |
-#include <stdarg.h> | |
-#include <assert.h> | |
- | |
-#if defined(PATH_MAX) | |
-# define LT_PATHMAX PATH_MAX | |
-#elif defined(MAXPATHLEN) | |
-# define LT_PATHMAX MAXPATHLEN | |
-#else | |
-# define LT_PATHMAX 1024 | |
-#endif | |
- | |
-#ifndef DIR_SEPARATOR | |
-#define DIR_SEPARATOR '/' | |
-#endif | |
- | |
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ | |
- defined (__OS2__) | |
-#define HAVE_DOS_BASED_FILE_SYSTEM | |
-#ifndef DIR_SEPARATOR_2 | |
-#define DIR_SEPARATOR_2 '\\' | |
-#endif | |
-#endif | |
+ case "$host" in | |
+ *mingw* | *cygwin* ) | |
+ # make stdout use "unix" line endings | |
+ echo " setmode(1,_O_BINARY);" | |
+ ;; | |
+ esac | |
-#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 */ | |
+ cat <<"EOF" | |
+ lt_dump_script (stdout); | |
+ return 0; | |
+ } | |
+ if (strcmp (argv[i], debug_opt) == 0) | |
+ { | |
+ lt_debug = 1; | |
+ continue; | |
+ } | |
+ if (strcmp (argv[i], ltwrapper_option_prefix) == 0) | |
+ { | |
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX | |
+ namespace, but it is not one of the ones we know about and | |
+ have already dealt with, above (inluding dump-script), then | |
+ report an error. Otherwise, targets might begin to believe | |
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX | |
+ namespace. The first time any user complains about this, we'll | |
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option | |
+ or a configure.ac-settable value. | |
+ */ | |
+ lt_fatal (__FILE__, __LINE__, | |
+ "unrecognized %s option: '%s'", | |
+ ltwrapper_option_prefix, argv[i]); | |
+ } | |
+ /* otherwise ... */ | |
+ newargz[++newargc] = xstrdup (argv[i]); | |
+ } | |
+ newargz[++newargc] = NULL; | |
-#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) | |
-#define XFREE(stale) do { \ | |
- if (stale) { free ((void *) stale); stale = 0; } \ | |
-} while (0) | |
+EOF | |
+ cat <<EOF | |
+ /* The GNU banner must be the first non-error debug message */ | |
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP… | |
+EOF | |
+ cat <<"EOF" | |
+ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); | |
+ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_nam… | |
+ | |
+ tmp_pathspec = find_executable (argv[0]); | |
+ if (tmp_pathspec == NULL) | |
+ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); | |
+ lt_debugprintf (__FILE__, __LINE__, | |
+ "(main) found exe (before symlink chase) at: %s\n", | |
+ tmp_pathspec); | |
+ | |
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec); | |
+ lt_debugprintf (__FILE__, __LINE__, | |
+ "(main) found exe (after symlink chase) at: %s\n", | |
+ actual_cwrapper_path); | |
+ XFREE (tmp_pathspec); | |
+ | |
+ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); | |
+ strendzap (actual_cwrapper_path, actual_cwrapper_name); | |
+ | |
+ /* wrapper name transforms */ | |
+ strendzap (actual_cwrapper_name, ".exe"); | |
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); | |
+ XFREE (actual_cwrapper_name); | |
+ actual_cwrapper_name = tmp_pathspec; | |
+ tmp_pathspec = 0; | |
+ | |
+ /* target_name transforms -- use actual target program name; might have lt- … | |
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); | |
+ strendzap (target_name, ".exe"); | |
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1); | |
+ XFREE (target_name); | |
+ target_name = tmp_pathspec; | |
+ tmp_pathspec = 0; | |
+ | |
+ lt_debugprintf (__FILE__, __LINE__, | |
+ "(main) libtool target name: %s\n", | |
+ target_name); | |
+EOF | |
-const char *program_name = NULL; | |
+ cat <<EOF | |
+ newargz[0] = | |
+ XMALLOC (char, (strlen (actual_cwrapper_path) + | |
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1… | |
+ strcpy (newargz[0], actual_cwrapper_path); | |
+ strcat (newargz[0], "$objdir"); | |
+ strcat (newargz[0], "/"); | |
+EOF | |
-void * xmalloc (size_t num); | |
-char * xstrdup (const char *string); | |
-char * basename (const char *name); | |
-char * fnqualify(const char *path); | |
-char * strendzap(char *str, const char *pat); | |
-void lt_fatal (const char *message, ...); | |
+ cat <<"EOF" | |
+ /* stop here, and copy so we don't have to do this twice */ | |
+ tmp_pathspec = xstrdup (newargz[0]); | |
-int | |
-main (int argc, char *argv[]) | |
-{ | |
- char **newargz; | |
- int i; | |
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ | |
+ strcat (newargz[0], actual_cwrapper_name); | |
- program_name = (char *) xstrdup ((char *) basename (argv[0])); | |
- newargz = XMALLOC(char *, argc+2); | |
+ /* DO want the lt- prefix here if it exists, so use target_name */ | |
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); | |
+ XFREE (tmp_pathspec); | |
+ tmp_pathspec = NULL; | |
EOF | |
- cat >> $cwrappersource <<EOF | |
- newargz[0] = "$SHELL"; | |
+ case $host_os in | |
+ mingw*) | |
+ cat <<"EOF" | |
+ { | |
+ char* p; | |
+ while ((p = strchr (newargz[0], '\\')) != NULL) | |
+ { | |
+ *p = '/'; | |
+ } | |
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL) | |
+ { | |
+ *p = '/'; | |
+ } | |
+ } | |
EOF | |
+ ;; | |
+ esac | |
+ | |
+ cat <<"EOF" | |
+ XFREE (target_name); | |
+ XFREE (actual_cwrapper_path); | |
+ XFREE (actual_cwrapper_name); | |
+ | |
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ | |
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */ | |
+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must | |
+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) | |
+ because on Windows, both *_VARNAMEs are PATH but uninstalled | |
+ libraries must come first. */ | |
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); | |
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); | |
+ | |
+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", | |
+ nonnull (lt_argv_zero)); | |
+ for (i = 0; i < newargc; i++) | |
+ { | |
+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", | |
+ i, nonnull (newargz[i])); | |
+ } | |
- cat >> $cwrappersource <<"EOF" | |
- newargz[1] = fnqualify(argv[0]); | |
- /* we know the script has the same name, without the .exe */ | |
- /* so make sure newargz[1] doesn't end in .exe */ | |
- strendzap(newargz[1],".exe"); | |
- for (i = 1; i < argc; i++) | |
- newargz[i+1] = xstrdup(argv[i]); | |
- newargz[argc+1] = NULL; | |
EOF | |
- cat >> $cwrappersource <<EOF | |
- execv("$SHELL",newargz); | |
+ case $host_os in | |
+ mingw*) | |
+ cat <<"EOF" | |
+ /* execv doesn't actually work on mingw as expected on unix */ | |
+ newargz = prepare_spawn (newargz); | |
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); | |
+ if (rval == -1) | |
+ { | |
+ /* failed to start process */ | |
+ lt_debugprintf (__FILE__, __LINE__, | |
+ "(main) failed to launch target \"%s\": %s\n", | |
+ lt_argv_zero, nonnull (strerror (errno))); | |
+ return 127; | |
+ } | |
+ return rval; | |
+EOF | |
+ ;; | |
+ *) | |
+ cat <<"EOF" | |
+ execv (lt_argv_zero, newargz); | |
+ return rval; /* =127, but avoids unused variable warning */ | |
EOF | |
+ ;; | |
+ esac | |
- cat >> $cwrappersource <<"EOF" | |
+ cat <<"EOF" | |
} | |
void * | |
xmalloc (size_t num) | |
{ | |
- void * p = (void *) malloc (num); | |
+ void *p = (void *) malloc (num); | |
if (!p) | |
- lt_fatal ("Memory exhausted"); | |
+ lt_fatal (__FILE__, __LINE__, "memory exhausted"); | |
return p; | |
} | |
t@@ -4777,79 +4560,269 @@ xmalloc (size_t num) | |
char * | |
xstrdup (const char *string) | |
{ | |
- return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NU… | |
-; | |
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), | |
+ string) : NULL; | |
} | |
-char * | |
-basename (const char *name) | |
+const char * | |
+base_name (const char *name) | |
{ | |
const char *base; | |
#if defined (HAVE_DOS_BASED_FILE_SYSTEM) | |
/* Skip over the disk name in MSDOS pathnames. */ | |
- if (isalpha (name[0]) && name[1] == ':') | |
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':') | |
name += 2; | |
#endif | |
for (base = name; *name; name++) | |
if (IS_DIR_SEPARATOR (*name)) | |
base = name + 1; | |
- return (char *) base; | |
+ return base; | |
+} | |
+ | |
+int | |
+check_executable (const char *path) | |
+{ | |
+ struct stat st; | |
+ | |
+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", | |
+ nonempty (path)); | |
+ if ((!path) || (!*path)) | |
+ return 0; | |
+ | |
+ if ((stat (path, &st) >= 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 * | |
-fnqualify(const char *path) | |
+find_executable (const char *wrapper) | |
{ | |
- size_t size; | |
- char *p; | |
+ int has_slash = 0; | |
+ const char *p; | |
+ const char *p_next; | |
+ /* static buffer for getcwd */ | |
char tmp[LT_PATHMAX + 1]; | |
+ int tmp_len; | |
+ char *concat_name; | |
+ | |
+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", | |
+ nonempty (wrapper)); | |
- assert(path != NULL); | |
+ if ((wrapper == NULL) || (*wrapper == '\0')) | |
+ return NULL; | |
- /* Is it qualified already? */ | |
+ /* 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) | |
- if (isalpha (path[0]) && path[1] == ':') | |
- return xstrdup (path); | |
+ } | |
#endif | |
- if (IS_DIR_SEPARATOR (path[0])) | |
- return xstrdup (path); | |
- /* prepend the current directory */ | |
- /* doesn't handle '~' */ | |
+ 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 = 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 ("getcwd failed"); | |
- size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ | |
- p = XMALLOC(char, size); | |
- sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); | |
- return p; | |
+ 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) | |
+strendzap (char *str, const char *pat) | |
{ | |
size_t len, patlen; | |
- assert(str != NULL); | |
- assert(pat != NULL); | |
+ assert (str != NULL); | |
+ assert (pat != NULL); | |
- len = strlen(str); | |
- patlen = strlen(pat); | |
+ len = strlen (str); | |
+ patlen = strlen (pat); | |
if (patlen <= len) | |
- { | |
- str += len - patlen; | |
- if (strcmp(str, pat) == 0) | |
- *str = '\0'; | |
- } | |
+ { | |
+ str += len - patlen; | |
+ if (strcmp (str, pat) == 0) | |
+ *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 * mode, | |
- const char * message, va_list ap) | |
+lt_error_core (int exit_status, const char *file, | |
+ int line, const char *mode, | |
+ const char *message, va_list ap) | |
{ | |
- fprintf (stderr, "%s: %s: ", program_name, mode); | |
+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); | |
vfprintf (stderr, message, ap); | |
fprintf (stderr, ".\n"); | |
t@@ -4858,1226 +4831,4618 @@ lt_error_core (int exit_status, const char * mode, | |
} | |
void | |
-lt_fatal (const char *message, ...) | |
+lt_fatal (const char *file, int line, const char *message, ...) | |
{ | |
va_list ap; | |
va_start (ap, message); | |
- lt_error_core (EXIT_FAILURE, "FATAL", message, ap); | |
+ 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 | |
+ int 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) | |
+ { | |
+ int orig_value_len = strlen (orig_value); | |
+ int 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 #' */ | |
+ int len = strlen (new_value); | |
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[… | |
+ { | |
+ new_value[len-1] = '\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*) | |
+ 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… | |
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\0… | |
+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 | |
- # we should really use a build-platform specific compiler | |
- # here, but OTOH, the wrappers (shell script and this C one) | |
- # are only useful if you want to execute the "real" binary. | |
- # Since the "real" binary is built for $host, then this | |
- # wrapper might as well be built for $host, too. | |
- $run $LTCC -s -o $cwrapper $cwrappersource | |
+} | |
+# 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 () | |
+{ | |
+ $opt_debug | |
+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in | |
+ *import*) : ;; | |
+ *) false ;; | |
+ esac | |
+} | |
+ | |
+# func_mode_link arg... | |
+func_mode_link () | |
+{ | |
+ $opt_debug | |
+ case $host in | |
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | |
+ # It is impossible to link a dll without this setting, and | |
+ # we shouldn't force the makefile maintainer to figure out | |
+ # which 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 which 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= | |
+ 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= | |
+ non_pic_objects= | |
+ precious_files_regex= | |
+ prefer_static_libs=no | |
+ preload=no | |
+ prev= | |
+ prevarg= | |
+ release= | |
+ rpath= | |
+ xrpath= | |
+ perm_rpath= | |
+ temp_rpath= | |
+ thread_safe=no | |
+ vinfo= | |
+ vinfo_number=no | |
+ weak_libs= | |
+ 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 "$build_libtool_libs" != yes && \ | |
+ func_fatal_configuration "can not build a shared library" | |
+ build_old_libs=no | |
+ break | |
+ ;; | |
+ -all-static | -static | -static-libtool-libs) | |
+ case $arg in | |
+ -all-static) | |
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; … | |
+ func_warning "complete static linking is impossible in this config… | |
+ 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_for_eval "$arg" | |
+ qarg=$func_quote_for_eval_unquoted_result | |
+ func_append libtool_args " $func_quote_for_eval_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) | |
+ if test "$preload" = no; then | |
+ # Add the symbol object into the linking commands. | |
+ func_append compile_command " @SYMFILE@" | |
+ func_append finalize_command " @SYMFILE@" | |
+ preload=yes | |
+ fi | |
+ case $arg in | |
+ *.la | *.lo) ;; # We handle these cases below. | |
+ force) | |
+ if test "$dlself" = no; then | |
+ dlself=needless | |
+ export_dynamic=yes | |
+ fi | |
+ prev= | |
+ continue | |
+ ;; | |
+ self) | |
+ if test "$prev" = dlprefiles; then | |
+ dlself=yes | |
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then | |
+ dlself=yes | |
+ else | |
+ dlself=needless | |
+ export_dynamic=yes | |
+ fi | |
+ prev= | |
+ continue | |
+ ;; | |
+ *) | |
+ if test "$prev" = dlfiles; 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 la… | |
+ ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ prev= | |
+ continue | |
+ ;; | |
+ inst_prefix) | |
+ inst_prefix_dir="$arg" | |
+ 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 "$pic_object" = none && | |
+ test "$non_pic_object" = none; 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 "$pic_object" != none; then | |
+ # Prepend the subdirectory the object is found in. | |
+ pic_object="$xdir$pic_object" | |
+ | |
+ if test "$prev" = dlfiles; then | |
+ if test "$build_libtool_libs" = yes && test "$dlopen_suppo… | |
+ func_append dlfiles " $pic_object" | |
+ prev= | |
+ continue | |
+ else | |
+ # If libtool objects are unsupported, then we need to pr… | |
+ prev=dlprefiles | |
+ fi | |
+ fi | |
+ | |
+ # CHECK ME: I think I busted this. -Ossama | |
+ if test "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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 | |
+ ;; | |
+ 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 "only absolute run-paths are allowed" | |
+ ;; | |
+ esac | |
+ if test "$prev" = rpath; 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 | |
+ ;; | |
+ 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 t… | |
+ ;; | |
+ | |
+ -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 al… | |
+ fi | |
+ if test "X$arg" = "X-export-symbols"; 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 \`$d… | |
+ 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* | *-*-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$arg" = "X-lc" || test "X$arg" = "X-lm"; then | |
+ case $host in | |
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-ha… | |
+ # 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$arg" = "X-lc" && continue | |
+ ;; | |
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |
+ # Do not include libc due to us having libc/libc_r. | |
+ test "X$arg" = "X-lc" && 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$arg" = "X-lc" && continue | |
+ ;; | |
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) | |
+ # Compiler inserts libc in the correct place for threads to work | |
+ test "X$arg" = "X-lc" && continue | |
+ ;; | |
+ esac | |
+ elif test "X$arg" = "X-lc_r"; then | |
+ case $host in | |
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |
+ # Do not include libc_r directly, use -pthread flag. | |
+ continue | |
+ ;; | |
+ esac | |
+ fi | |
+ func_append deplibs " $arg" | |
+ 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. | |
+ -model|-arch|-isysroot|--sysroot) | |
+ func_append compiler_flags " $arg" | |
+ func_append compile_command " $arg" | |
+ func_append finalize_command " $arg" | |
+ prev=xcompiler | |
+ continue | |
+ ;; | |
+ | |
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ | |
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) | |
+ func_append compiler_flags " $arg" | |
+ func_append compile_command " $arg" | |
+ func_append finalize_command " $arg" | |
+ case "$new_inherited_linker_flags " in | |
+ *" $arg "*) ;; | |
+ * ) func_append new_inherited_linker_flags " $arg" ;; | |
+ esac | |
+ continue | |
+ ;; | |
+ | |
+ -multi_module) | |
+ single_module="${wl}-multi_module" | |
+ continue | |
+ ;; | |
+ | |
+ -no-fast-install) | |
+ fast_install=no | |
+ continue | |
+ ;; | |
+ | |
+ -no-install) | |
+ case $host in | |
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegc… | |
+ # The PATH hackery in wrapper scripts is required on Windows | |
+ # and Darwin in order for the loader to find any dlls it needs. | |
+ func_warning "\`-no-install' is ignored for $host" | |
+ func_warning "assuming \`-no-fast-install' instead" | |
+ fast_install=no | |
+ ;; | |
+ *) no_install=yes ;; | |
+ esac | |
+ continue | |
+ ;; | |
+ | |
+ -no-undefined) | |
+ allow_undefined=no | |
+ continue | |
+ ;; | |
+ | |
+ -objectlist) | |
+ prev=objectlist | |
+ continue | |
+ ;; | |
+ | |
+ -o) prev=output ;; | |
+ | |
+ -precious-files-regex) | |
+ prev=precious_regex | |
+ continue | |
+ ;; | |
+ | |
+ -release) | |
+ prev=release | |
+ continue | |
+ ;; | |
+ | |
+ -rpath) | |
+ prev=rpath | |
+ continue | |
+ ;; | |
+ | |
+ -R) | |
+ prev=xrpath | |
+ continue | |
+ ;; | |
+ | |
+ -R*) | |
+ func_stripname '-R' '' "$arg" | |
+ dir=$func_stripname_result | |
+ # We need an absolute path. | |
+ case $dir in | |
+ [\\/]* | [A-Za-z]:[\\/]*) ;; | |
+ =*) | |
+ func_stripname '=' '' "$dir" | |
+ dir=$lt_sysroot$func_stripname_result | |
+ ;; | |
+ *) | |
+ func_fatal_error "only absolute run-paths are allowed" | |
+ ;; | |
+ esac | |
+ case "$xrpath " in | |
+ *" $dir "*) ;; | |
+ *) func_append xrpath " $dir" ;; | |
+ esac | |
+ continue | |
+ ;; | |
+ | |
+ -shared) | |
+ # The effects of -shared are defined in a previous loop. | |
+ continue | |
+ ;; | |
+ | |
+ -shrext) | |
+ prev=shrext | |
+ continue | |
+ ;; | |
+ | |
+ -static | -static-libtool-libs) | |
+ # The effects of -static are defined in a previous loop. | |
+ # We used to do the same as -all-static on platforms that | |
+ # didn't have a PIC flag, but the assumption that the effects | |
+ # would be equivalent was wrong. It would break on at least | |
+ # Digital Unix and AIX. | |
+ continue | |
+ ;; | |
+ | |
+ -thread-safe) | |
+ thread_safe=yes | |
+ continue | |
+ ;; | |
+ | |
+ -version-info) | |
+ prev=vinfo | |
+ continue | |
+ ;; | |
+ | |
+ -version-number) | |
+ prev=vinfo | |
+ vinfo_number=yes | |
+ continue | |
+ ;; | |
+ | |
+ -weak) | |
+ prev=weak | |
+ continue | |
+ ;; | |
+ | |
+ -Wc,*) | |
+ func_stripname '-Wc,' '' "$arg" | |
+ args=$func_stripname_result | |
+ arg= | |
+ save_ifs="$IFS"; IFS=',' | |
+ for flag in $args; do | |
+ IFS="$save_ifs" | |
+ func_quote_for_eval "$flag" | |
+ func_append arg " $func_quote_for_eval_result" | |
+ func_append compiler_flags " $func_quote_for_eval_result" | |
+ done | |
+ IFS="$save_ifs" | |
+ func_stripname ' ' '' "$arg" | |
+ arg=$func_stripname_result | |
+ ;; | |
+ | |
+ -Wl,*) | |
+ func_stripname '-Wl,' '' "$arg" | |
+ args=$func_stripname_result | |
+ arg= | |
+ save_ifs="$IFS"; IFS=',' | |
+ for flag in $args; do | |
+ IFS="$save_ifs" | |
+ func_quote_for_eval "$flag" | |
+ func_append arg " $wl$func_quote_for_eval_result" | |
+ func_append compiler_flags " $wl$func_quote_for_eval_result" | |
+ func_append linker_flags " $func_quote_for_eval_result" | |
+ done | |
+ IFS="$save_ifs" | |
+ func_stripname ' ' '' "$arg" | |
+ arg=$func_stripname_result | |
+ ;; | |
+ | |
+ -Xcompiler) | |
+ prev=xcompiler | |
+ continue | |
+ ;; | |
+ | |
+ -Xlinker) | |
+ prev=xlinker | |
+ continue | |
+ ;; | |
+ | |
+ -XCClinker) | |
+ prev=xcclinker | |
+ continue | |
+ ;; | |
+ | |
+ # -msg_* for osf cc | |
+ -msg_*) | |
+ func_quote_for_eval "$arg" | |
+ arg="$func_quote_for_eval_result" | |
+ ;; | |
+ | |
+ # Flags to be passed through unchanged, with rationale: | |
+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler | |
+ # -r[0-9][0-9]* specify processor for the SGI compiler | |
+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler | |
+ # +DA*, +DD* enable 64-bit mode for the HP compiler | |
+ # -q* compiler args for the IBM compiler | |
+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC | |
+ # -F/path path to uninstalled frameworks, gcc on darwin | |
+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC | |
+ # @file GCC response files | |
+ # -tp=* Portland pgcc target processor selection | |
+ # --sysroot=* for sysroot support | |
+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization | |
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ | |
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*… | |
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) | |
+ func_quote_for_eval "$arg" | |
+ arg="$func_quote_for_eval_result" | |
+ func_append compile_command " $arg" | |
+ func_append finalize_command " $arg" | |
+ func_append compiler_flags " $arg" | |
+ continue | |
+ ;; | |
+ | |
+ # Some other compiler flag. | |
+ -* | +*) | |
+ func_quote_for_eval "$arg" | |
+ arg="$func_quote_for_eval_result" | |
+ ;; | |
+ | |
+ *.$objext) | |
+ # A standard object. | |
+ func_append objs " $arg" | |
+ ;; | |
+ | |
+ *.lo) | |
+ # 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 "$pic_object" = none && | |
+ test "$non_pic_object" = none; 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 "$pic_object" != none; then | |
+ # Prepend the subdirectory the object is found in. | |
+ pic_object="$xdir$pic_object" | |
+ | |
+ if test "$prev" = dlfiles; then | |
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = … | |
+ 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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 | |
+ ;; | |
+ | |
+ *.$libext) | |
+ # An archive. | |
+ func_append deplibs " $arg" | |
+ func_append old_deplibs " $arg" | |
+ continue | |
+ ;; | |
+ | |
+ *.la) | |
+ # A libtool-controlled library. | |
+ | |
+ func_resolve_sysroot "$arg" | |
+ if test "$prev" = dlfiles; then | |
+ # This library was specified with -dlopen. | |
+ func_append dlfiles " $func_resolve_sysroot_result" | |
+ prev= | |
+ elif test "$prev" = dlprefiles; then | |
+ # The library was specified with -dlpreopen. | |
+ func_append dlprefiles " $func_resolve_sysroot_result" | |
+ prev= | |
+ else | |
+ func_append deplibs " $func_resolve_sysroot_result" | |
+ fi | |
+ continue | |
+ ;; | |
+ | |
+ # Some other compiler argument. | |
+ *) | |
+ # Unknown arguments in both finalize_command and compile_command need | |
+ # to be aesthetically quoted because they are evaled later. | |
+ func_quote_for_eval "$arg" | |
+ arg="$func_quote_for_eval_result" | |
+ ;; | |
+ esac # arg | |
+ | |
+ # Now actually substitute the argument into the commands. | |
+ if test -n "$arg"; then | |
+ func_append compile_command " $arg" | |
+ func_append finalize_command " $arg" | |
+ fi | |
+ done # argument parsing loop | |
+ | |
+ test -n "$prev" && \ | |
+ func_fatal_help "the \`$prevarg' option requires an argument" | |
+ | |
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; th… | |
+ eval arg=\"$export_dynamic_flag_spec\" | |
+ func_append compile_command " $arg" | |
+ func_append finalize_command " $arg" | |
+ fi | |
+ | |
+ oldlibs= | |
+ # calculate the name of the file, without its directory | |
+ func_basename "$output" | |
+ outputname="$func_basename_result" | |
+ libobjs_save="$libobjs" | |
+ | |
+ if test -n "$shlibpath_var"; then | |
+ # get the directories listed in $shlibpath_var | |
+ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /… | |
+ else | |
+ shlib_search_path= | |
+ fi | |
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\" | |
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" | |
+ | |
+ func_dirname "$output" "/" "" | |
+ output_objdir="$func_dirname_result$objdir" | |
+ func_to_tool_file "$output_objdir/" | |
+ tool_output_objdir=$func_to_tool_file_result | |
+ # Create the object directory. | |
+ func_mkdir_p "$output_objdir" | |
+ | |
+ # Determine the type of output | |
+ case $output in | |
+ "") | |
+ func_fatal_help "you must specify an output file" | |
+ ;; | |
+ *.$libext) linkmode=oldlib ;; | |
+ *.lo | *.$objext) linkmode=obj ;; | |
+ *.la) linkmode=lib ;; | |
+ *) linkmode=prog ;; # Anything else should be a program. | |
+ esac | |
+ | |
+ specialdeplibs= | |
+ | |
+ libs= | |
+ # Find all interdependent deplibs by searching for libraries | |
+ # that are linked more than once (e.g. -la -lb -la) | |
+ for deplib in $deplibs; do | |
+ if $opt_preserve_dup_deps ; then | |
+ case "$libs " in | |
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; | |
+ esac | |
+ fi | |
+ func_append libs " $deplib" | |
+ done | |
+ | |
+ if test "$linkmode" = lib; then | |
+ libs="$predeps $libs $compiler_lib_search_path $postdeps" | |
+ | |
+ # Compute libraries that are listed more than once in $predeps | |
+ # $postdeps and mark them as special (i.e., whose duplicates are | |
+ # not to be eliminated). | |
+ pre_post_deps= | |
+ if $opt_duplicate_compiler_generated_deps; then | |
+ for pre_post_dep in $predeps $postdeps; do | |
+ case "$pre_post_deps " in | |
+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; | |
+ esac | |
+ func_append pre_post_deps " $pre_post_dep" | |
+ done | |
+ fi | |
+ pre_post_deps= | |
+ fi | |
+ | |
+ deplibs= | |
+ newdependency_libs= | |
+ newlib_search_path= | |
+ need_relink=no # whether we're linking any uninstalled libtool libraries | |
+ notinst_deplibs= # not-installed libtool libraries | |
+ notinst_path= # paths that contain not-installed libtool libraries | |
+ | |
+ case $linkmode in | |
+ lib) | |
+ passes="conv dlpreopen link" | |
+ for file in $dlfiles $dlprefiles; do | |
+ case $file in | |
+ *.la) ;; | |
+ *) | |
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: … | |
+ ;; | |
+ esac | |
+ done | |
+ ;; | |
+ prog) | |
+ compile_deplibs= | |
+ finalize_deplibs= | |
+ alldeplibs=no | |
+ newdlfiles= | |
+ newdlprefiles= | |
+ passes="conv scan dlopen dlpreopen link" | |
+ ;; | |
+ *) passes="conv" | |
+ ;; | |
+ esac | |
+ | |
+ for pass in $passes; do | |
+ # The preopen pass in lib mode reverses $deplibs; put it back here | |
+ # so that -L comes before libs that need it for instance... | |
+ if test "$linkmode,$pass" = "lib,link"; then | |
+ ## FIXME: Find the place where the list is rebuilt in the wrong | |
+ ## order, and fix it there properly | |
+ tmp_deplibs= | |
+ for deplib in $deplibs; do | |
+ tmp_deplibs="$deplib $tmp_deplibs" | |
+ done | |
+ deplibs="$tmp_deplibs" | |
+ fi | |
+ | |
+ if test "$linkmode,$pass" = "lib,link" || | |
+ test "$linkmode,$pass" = "prog,scan"; then | |
+ libs="$deplibs" | |
+ deplibs= | |
+ fi | |
+ if test "$linkmode" = prog; then | |
+ case $pass in | |
+ dlopen) libs="$dlfiles" ;; | |
+ dlpreopen) libs="$dlprefiles" ;; | |
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; | |
+ esac | |
+ fi | |
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then | |
+ # Collect and forward deplibs of preopened libtool libs | |
+ for lib in $dlprefiles; do | |
+ # Ignore non-libtool-libs | |
+ dependency_libs= | |
+ func_resolve_sysroot "$lib" | |
+ case $lib in | |
+ *.la) func_source "$func_resolve_sysroot_result" ;; | |
+ esac | |
+ | |
+ # Collect preopened libtool deplibs, except any this library | |
+ # has declared as weak libs | |
+ for deplib in $dependency_libs; do | |
+ func_basename "$deplib" | |
+ deplib_base=$func_basename_result | |
+ case " $weak_libs " in | |
+ *" $deplib_base "*) ;; | |
+ *) func_append deplibs " $deplib" ;; | |
+ esac | |
+ done | |
+ done | |
+ libs="$dlprefiles" | |
+ fi | |
+ if test "$pass" = dlopen; then | |
+ # Collect dlpreopened libraries | |
+ save_deplibs="$deplibs" | |
+ deplibs= | |
+ fi | |
+ | |
+ for deplib in $libs; do | |
+ lib= | |
+ found=no | |
+ case $deplib in | |
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ | |
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) | |
+ if test "$linkmode,$pass" = "prog,link"; then | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ else | |
+ func_append compiler_flags " $deplib" | |
+ if test "$linkmode" = lib ; then | |
+ case "$new_inherited_linker_flags " in | |
+ *" $deplib "*) ;; | |
+ * ) func_append new_inherited_linker_flags " $deplib" ;; | |
+ esac | |
+ fi | |
+ fi | |
+ continue | |
+ ;; | |
+ -l*) | |
+ if test "$linkmode" != lib && test "$linkmode" != prog; then | |
+ func_warning "\`-l' is ignored for archives/objects" | |
+ continue | |
+ fi | |
+ func_stripname '-l' '' "$deplib" | |
+ name=$func_stripname_result | |
+ if test "$linkmode" = lib; then | |
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_sea… | |
+ else | |
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_p… | |
+ fi | |
+ for searchdir in $searchdirs; do | |
+ for search_ext in .la $std_shrext .so .a; do | |
+ # Search the libtool library | |
+ lib="$searchdir/lib${name}${search_ext}" | |
+ if test -f "$lib"; then | |
+ if test "$search_ext" = ".la"; then | |
+ found=yes | |
+ else | |
+ found=no | |
+ fi | |
+ break 2 | |
+ fi | |
+ done | |
+ done | |
+ if test "$found" != yes; then | |
+ # deplib doesn't seem to be a libtool library | |
+ if test "$linkmode,$pass" = "prog,link"; then | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ else | |
+ deplibs="$deplib $deplibs" | |
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdepend… | |
+ fi | |
+ continue | |
+ else # deplib is a libtool library | |
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdl… | |
+ # We need to do some special things here, and not later. | |
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |
+ case " $predeps $postdeps " in | |
+ *" $deplib "*) | |
+ if func_lalib_p "$lib"; then | |
+ library_names= | |
+ old_library= | |
+ func_source "$lib" | |
+ for l in $old_library $library_names; do | |
+ ll="$l" | |
+ done | |
+ if test "X$ll" = "X$old_library" ; then # only static versio… | |
+ found=no | |
+ func_dirname "$lib" "" "." | |
+ ladir="$func_dirname_result" | |
+ lib=$ladir/$old_library | |
+ if test "$linkmode,$pass" = "prog,link"; then | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ else | |
+ deplibs="$deplib $deplibs" | |
+ test "$linkmode" = lib && newdependency_libs="$deplib $n… | |
+ fi | |
+ continue | |
+ fi | |
+ fi | |
+ ;; | |
+ *) ;; | |
+ esac | |
+ fi | |
+ fi | |
+ ;; # -l | |
+ *.ltframework) | |
+ if test "$linkmode,$pass" = "prog,link"; then | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ else | |
+ deplibs="$deplib $deplibs" | |
+ if test "$linkmode" = lib ; then | |
+ case "$new_inherited_linker_flags " in | |
+ *" $deplib "*) ;; | |
+ * ) func_append new_inherited_linker_flags " $deplib" ;; | |
+ esac | |
+ fi | |
+ fi | |
+ continue | |
+ ;; | |
+ -L*) | |
+ case $linkmode in | |
+ lib) | |
+ deplibs="$deplib $deplibs" | |
+ test "$pass" = conv && continue | |
+ newdependency_libs="$deplib $newdependency_libs" | |
+ func_stripname '-L' '' "$deplib" | |
+ func_resolve_sysroot "$func_stripname_result" | |
+ func_append newlib_search_path " $func_resolve_sysroot_result" | |
+ ;; | |
+ prog) | |
+ if test "$pass" = conv; then | |
+ deplibs="$deplib $deplibs" | |
+ continue | |
+ fi | |
+ if test "$pass" = scan; then | |
+ deplibs="$deplib $deplibs" | |
+ else | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ fi | |
+ func_stripname '-L' '' "$deplib" | |
+ func_resolve_sysroot "$func_stripname_result" | |
+ func_append newlib_search_path " $func_resolve_sysroot_result" | |
+ ;; | |
+ *) | |
+ func_warning "\`-L' is ignored for archives/objects" | |
+ ;; | |
+ esac # linkmode | |
+ continue | |
+ ;; # -L | |
+ -R*) | |
+ if test "$pass" = link; then | |
+ func_stripname '-R' '' "$deplib" | |
+ func_resolve_sysroot "$func_stripname_result" | |
+ dir=$func_resolve_sysroot_result | |
+ # Make sure the xrpath contains only unique directories. | |
+ case "$xrpath " in | |
+ *" $dir "*) ;; | |
+ *) func_append xrpath " $dir" ;; | |
+ esac | |
+ fi | |
+ deplibs="$deplib $deplibs" | |
+ continue | |
+ ;; | |
+ *.la) | |
+ func_resolve_sysroot "$deplib" | |
+ lib=$func_resolve_sysroot_result | |
+ ;; | |
+ *.$libext) | |
+ if test "$pass" = conv; then | |
+ deplibs="$deplib $deplibs" | |
+ continue | |
+ fi | |
+ case $linkmode in | |
+ lib) | |
+ # Linking convenience modules into shared libraries is allowed, | |
+ # but linking other static libraries is non-portable. | |
+ case " $dlpreconveniencelibs " in | |
+ *" $deplib "*) ;; | |
+ *) | |
+ valid_a_lib=no | |
+ case $deplibs_check_method in | |
+ match_pattern*) | |
+ set dummy $deplibs_check_method; shift | |
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*… | |
+ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | |
+ | $EGREP "$match_pattern_regex" > /dev/null; then | |
+ valid_a_lib=yes | |
+ fi | |
+ ;; | |
+ pass_all) | |
+ valid_a_lib=yes | |
+ ;; | |
+ esac | |
+ if test "$valid_a_lib" != yes; then | |
+ echo | |
+ $ECHO "*** Warning: Trying to link with static lib archive $de… | |
+ echo "*** I have the capability to make that library automatic… | |
+ echo "*** you link to this library. But I can only do this if… | |
+ echo "*** shared version of the library, which you do not appe… | |
+ echo "*** because the file extensions .$libext of this argumen… | |
+ echo "*** that it is just a static archive that I should not u… | |
+ else | |
+ echo | |
+ $ECHO "*** Warning: Linking the shared library $output against… | |
+ $ECHO "*** static library $deplib is not portable!" | |
+ deplibs="$deplib $deplibs" | |
+ fi | |
+ ;; | |
+ esac | |
+ continue | |
+ ;; | |
+ prog) | |
+ if test "$pass" != link; then | |
+ deplibs="$deplib $deplibs" | |
+ else | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ fi | |
+ continue | |
+ ;; | |
+ esac # linkmode | |
+ ;; # *.$libext | |
+ *.lo | *.$objext) | |
+ if test "$pass" = conv; then | |
+ deplibs="$deplib $deplibs" | |
+ elif test "$linkmode" = prog; then | |
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || te… | |
+ # If there is no dlopen support or we're linking statically, | |
+ # we need to preload. | |
+ func_append newdlprefiles " $deplib" | |
+ compile_deplibs="$deplib $compile_deplibs" | |
+ finalize_deplibs="$deplib $finalize_deplibs" | |
+ else | |
+ func_append newdlfiles " $deplib" | |
+ fi | |
+ fi | |
+ continue | |
+ ;; | |
+ %DEPLIBS%) | |
+ alldeplibs=yes | |
+ continue | |
+ ;; | |
+ esac # case $deplib | |
+ | |
+ if test "$found" = yes || test -f "$lib"; then : | |
+ else | |
+ func_fatal_error "cannot find the library \`$lib' or unhandled argum… | |
+ fi | |
+ | |
+ # Check to see that this really is a libtool archive. | |
+ func_lalib_unsafe_p "$lib" \ | |
+ || func_fatal_error "\`$lib' is not a valid libtool archive" | |
+ | |
+ func_dirname "$lib" "" "." | |
+ ladir="$func_dirname_result" | |
+ | |
+ dlname= | |
+ dlopen= | |
+ dlpreopen= | |
+ libdir= | |
+ library_names= | |
+ old_library= | |
+ inherited_linker_flags= | |
+ # If the library was installed with an old release of libtool, | |
+ # it will not redefine variables installed, or shouldnotlink | |
+ installed=yes | |
+ shouldnotlink=no | |
+ avoidtemprpath= | |
+ | |
+ | |
+ # Read the .la file | |
+ func_source "$lib" | |
+ | |
+ # Convert "-framework foo" to "foo.ltframework" | |
+ if test -n "$inherited_linker_flags"; then | |
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED '… | |
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do | |
+ case " $new_inherited_linker_flags " in | |
+ *" $tmp_inherited_linker_flag "*) ;; | |
+ *) func_append new_inherited_linker_flags " $tmp_inherited_linke… | |
+ esac | |
+ done | |
+ fi | |
+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltfra… | |
+ if test "$linkmode,$pass" = "lib,link" || | |
+ test "$linkmode,$pass" = "prog,scan" || | |
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then | |
+ test -n "$dlopen" && func_append dlfiles " $dlopen" | |
+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" | |
+ fi | |
+ | |
+ if test "$pass" = conv; then | |
+ # Only check for convenience libraries | |
+ deplibs="$lib $deplibs" | |
+ if test -z "$libdir"; then | |
+ if test -z "$old_library"; then | |
+ func_fatal_error "cannot find name of link library for \`$lib'" | |
+ fi | |
+ # It is a libtool convenience library, so add in its objects. | |
+ func_append convenience " $ladir/$objdir/$old_library" | |
+ func_append old_convenience " $ladir/$objdir/$old_library" | |
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then | |
+ func_fatal_error "\`$lib' is not a convenience library" | |
+ fi | |
+ tmp_libs= | |
+ for deplib in $dependency_libs; do | |
+ deplibs="$deplib $deplibs" | |
+ if $opt_preserve_dup_deps ; then | |
+ case "$tmp_libs " in | |
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; | |
+ esac | |
+ fi | |
+ func_append tmp_libs " $deplib" | |
+ done | |
+ continue | |
+ fi # $pass = conv | |
+ | |
+ | |
+ # Get the name of the library we link against. | |
+ linklib= | |
+ if test -n "$old_library" && | |
+ { test "$prefer_static_libs" = yes || | |
+ test "$prefer_static_libs,$installed" = "built,no"; }; then | |
+ linklib=$old_library | |
+ else | |
+ for l in $old_library $library_names; do | |
+ linklib="$l" | |
+ done | |
+ fi | |
+ if test -z "$linklib"; then | |
+ func_fatal_error "cannot find name of link library for \`$lib'" | |
+ fi | |
+ | |
+ # This library was specified with -dlopen. | |
+ if test "$pass" = dlopen; then | |
+ if test -z "$libdir"; then | |
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'" | |
+ fi | |
+ if test -z "$dlname" || | |
+ test "$dlopen_support" != yes || | |
+ test "$build_libtool_libs" = no; then | |
+ # If there is no dlname, no dlopen support or we're linking | |
+ # statically, we need to preload. We also need to preload any | |
+ # dependent libraries so libltdl's deplib preloader doesn't | |
+ # bomb out in the load deplibs phase. | |
+ func_append dlprefiles " $lib $dependency_libs" | |
+ else | |
+ func_append newdlfiles " $lib" | |
+ fi | |
+ continue | |
+ fi # $pass = dlopen | |
+ | |
+ # We need an absolute path. | |
+ case $ladir in | |
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; | |
+ *) | |
+ abs_ladir=`cd "$ladir" && pwd` | |
+ if test -z "$abs_ladir"; then | |
+ func_warning "cannot determine absolute directory name of \`$ladir… | |
+ func_warning "passing it literally to the linker, although it migh… | |
+ abs_ladir="$ladir" | |
+ fi | |
+ ;; | |
+ esac | |
+ func_basename "$lib" | |
+ laname="$func_basename_result" | |
+ | |
+ # Find the relevant object directory and library name. | |
+ if test "X$installed" = Xyes; then | |
+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$l… | |
+ func_warning "library \`$lib' was moved." | |
+ dir="$ladir" | |
+ absdir="$abs_ladir" | |
+ libdir="$abs_ladir" | |
+ else | |
+ dir="$lt_sysroot$libdir" | |
+ absdir="$lt_sysroot$libdir" | |
+ fi | |
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes | |
+ else | |
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linkl… | |
+ dir="$ladir" | |
+ absdir="$abs_ladir" | |
+ # Remove this search path later | |
+ func_append notinst_path " $abs_ladir" | |
+ else | |
+ dir="$ladir/$objdir" | |
+ absdir="$abs_ladir/$objdir" | |
+ # Remove this search path later | |
+ func_append notinst_path " $abs_ladir" | |
+ fi | |
+ fi # $installed = yes | |
+ func_stripname 'lib' '.la' "$laname" | |
+ name=$func_stripname_result | |
+ | |
+ # This library was specified with -dlpreopen. | |
+ if test "$pass" = dlpreopen; then | |
+ if test -z "$libdir" && test "$linkmode" = prog; then | |
+ func_fatal_error "only libraries may -dlpreopen a convenience libr… | |
+ fi | |
+ case "$host" in | |
+ # special handling for platforms with PE-DLLs. | |
+ *cygwin* | *mingw* | *cegcc* ) | |
+ # Linker will automatically link against shared library if both | |
+ # static and shared are present. Therefore, ensure we extract | |
+ # symbols from the import library if a shared library is present | |
+ # (otherwise, the dlopen module name will be incorrect). We do | |
+ # this by putting the import library name into $newdlprefiles. | |
+ # We recover the dlopen module name by 'saving' the la file | |
+ # name in a special purpose variable, and (later) extracting the | |
+ # dlname from the la file. | |
+ if test -n "$dlname"; then | |
+ func_tr_sh "$dir/$linklib" | |
+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" | |
+ func_append newdlprefiles " $dir/$linklib" | |
+ else | |
+ func_append newdlprefiles " $dir/$old_library" | |
+ # Keep a list of preopened convenience libraries to check | |
+ # that they are being used correctly in the link pass. | |
+ test -z "$libdir" && \ | |
+ func_append dlpreconveniencelibs " $dir/$old_library" | |
+ fi | |
+ ;; | |
+ * ) | |
+ # Prefer using a static library (so that no silly _DYNAMIC symbo… | |
+ # are required to link). | |
+ if test -n "$old_library"; then | |
+ func_append newdlprefiles " $dir/$old_library" | |
+ # Keep a list of preopened convenience libraries to check | |
+ # that they are being used correctly in the link pass. | |
+ test -z "$libdir" && \ | |
+ func_append dlpreconveniencelibs " $dir/$old_library" | |
+ # Otherwise, use the dlname, so that lt_dlopen finds it. | |
+ elif test -n "$dlname"; then | |
+ func_append newdlprefiles " $dir/$dlname" | |
+ else | |
+ func_append newdlprefiles " $dir/$linklib" | |
+ fi | |
+ ;; | |
+ esac | |
+ fi # $pass = dlpreopen | |
+ | |
+ if test -z "$libdir"; then | |
+ # Link the convenience library | |
+ if test "$linkmode" = lib; then | |
+ deplibs="$dir/$old_library $deplibs" | |
+ elif test "$linkmode,$pass" = "prog,link"; then | |
+ compile_deplibs="$dir/$old_library $compile_deplibs" | |
+ finalize_deplibs="$dir/$old_library $finalize_deplibs" | |
+ else | |
+ deplibs="$lib $deplibs" # used for prog,scan pass | |
+ fi | |
+ continue | |
+ fi | |
+ | |
+ | |
+ if test "$linkmode" = prog && test "$pass" != link; then | |
+ func_append newlib_search_path " $ladir" | |
+ deplibs="$lib $deplibs" | |
+ | |
+ linkalldeplibs=no | |
+ if test "$link_all_deplibs" != no || test -z "$library_names" || | |
+ test "$build_libtool_libs" = no; then | |
+ linkalldeplibs=yes | |
+ fi | |
+ | |
+ tmp_libs= | |
+ for deplib in $dependency_libs; do | |
+ case $deplib in | |
+ -L*) func_stripname '-L' '' "$deplib" | |
+ func_resolve_sysroot "$func_stripname_result" | |
+ func_append newlib_search_path " $func_resolve_sysroot_result" | |
+ ;; | |
+ esac | |
+ # Need to link against all dependency_libs? | |
+ if test "$linkalldeplibs" = yes; then | |
+ deplibs="$deplib $deplibs" | |
+ else | |
+ # Need to hardcode shared library paths | |
+ # or/and link against static libraries | |
+ newdependency_libs="$deplib $newdependency_libs" | |
+ fi | |
+ if $opt_preserve_dup_deps ; then | |
+ case "$tmp_libs " in | |
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; | |
+ esac | |
+ fi | |
+ func_append tmp_libs " $deplib" | |
+ done # for deplib | |
+ continue | |
+ fi # $linkmode = prog... | |
+ | |
+ if test "$linkmode,$pass" = "prog,link"; then | |
+ if test -n "$library_names" && | |
+ { { test "$prefer_static_libs" = no || | |
+ test "$prefer_static_libs,$installed" = "built,yes"; } || | |
+ test -z "$old_library"; }; then | |
+ # We need to hardcode the library path | |
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then | |
+ # Make sure the rpath contains only unique directories. | |
+ case "$temp_rpath:" in | |
+ *"$absdir:"*) ;; | |
+ *) func_append temp_rpath "$absdir:" ;; | |
+ esac | |
+ fi | |
+ | |
+ # Hardcode the library path. | |
+ # Skip directories that are in the system default run-time | |
+ # search path. | |
+ case " $sys_lib_dlsearch_path " in | |
+ *" $absdir "*) ;; | |
+ *) | |
+ case "$compile_rpath " in | |
+ *" $absdir "*) ;; | |
+ *) func_append compile_rpath " $absdir" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ case " $sys_lib_dlsearch_path " in | |
+ *" $libdir "*) ;; | |
+ *) | |
+ case "$finalize_rpath " in | |
+ *" $libdir "*) ;; | |
+ *) func_append finalize_rpath " $libdir" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ fi # $linkmode,$pass = prog,link... | |
+ | |
+ if test "$alldeplibs" = yes && | |
+ { test "$deplibs_check_method" = pass_all || | |
+ { test "$build_libtool_libs" = yes && | |
+ test -n "$library_names"; }; }; then | |
+ # We only need to search for static libraries | |
+ continue | |
+ fi | |
+ fi | |
+ | |
+ link_static=no # Whether the deplib will be linked statically | |
+ use_static_libs=$prefer_static_libs | |
+ if test "$use_static_libs" = built && test "$installed" = yes; then | |
+ use_static_libs=no | |
+ fi | |
+ if test -n "$library_names" && | |
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then | |
+ case $host in | |
+ *cygwin* | *mingw* | *cegcc*) | |
+ # No point in relinking DLLs because paths are not encoded | |
+ func_append notinst_deplibs " $lib" | |
+ need_relink=no | |
+ ;; | |
+ *) | |
+ if test "$installed" = no; then | |
+ func_append notinst_deplibs " $lib" | |
+ need_relink=yes | |
+ fi | |
+ ;; | |
+ esac | |
+ # This is a shared library | |
+ | |
+ # Warn about portability, can't link against -module's on some | |
+ # systems (darwin). Don't bleat about dlopened modules though! | |
+ dlopenmodule="" | |
+ for dlpremoduletest in $dlprefiles; do | |
+ if test "X$dlpremoduletest" = "X$lib"; then | |
+ dlopenmodule="$dlpremoduletest" | |
+ break | |
+ fi | |
+ done | |
+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$… | |
+ echo | |
+ if test "$linkmode" = prog; then | |
+ $ECHO "*** Warning: Linking the executable $output against the l… | |
+ else | |
+ $ECHO "*** Warning: Linking the shared library $output against t… | |
+ fi | |
+ $ECHO "*** $linklib is not portable!" | |
+ fi | |
+ if test "$linkmode" = lib && | |
+ test "$hardcode_into_libs" = yes; then | |
+ # Hardcode the library path. | |
+ # Skip directories that are in the system default run-time | |
+ # search path. | |
+ case " $sys_lib_dlsearch_path " in | |
+ *" $absdir "*) ;; | |
+ *) | |
+ case "$compile_rpath " in | |
+ *" $absdir "*) ;; | |
+ *) func_append compile_rpath " $absdir" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ case " $sys_lib_dlsearch_path " in | |
+ *" $libdir "*) ;; | |
+ *) | |
+ case "$finalize_rpath " in | |
+ *" $libdir "*) ;; | |
+ *) func_append finalize_rpath " $libdir" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ fi | |
+ | |
+ if test -n "$old_archive_from_expsyms_cmds"; then | |
+ # figure out the soname | |
+ set dummy $library_names | |
+ shift | |
+ realname="$1" | |
+ shift | |
+ libname=`eval "\\$ECHO \"$libname_spec\""` | |
+ # use dlname if we got it. it's perfectly good, no? | |
+ if test -n "$dlname"; then | |
+ soname="$dlname" | |
+ elif test -n "$soname_spec"; then | |
+ # bleh windows | |
+ case $host in | |
+ *cygwin* | mingw* | *cegcc*) | |
+ func_arith $current - $age | |
+ major=$func_arith_result | |
+ versuffix="-$major" | |
+ ;; | |
+ esac | |
+ eval soname=\"$soname_spec\" | |
+ else | |
+ soname="$realname" | |
+ fi | |
+ | |
+ # Make a new name for the extract_expsyms_cmds to use | |
+ soroot="$soname" | |
+ func_basename "$soroot" | |
+ soname="$func_basename_result" | |
+ func_stripname 'lib' '.dll' "$soname" | |
+ newlib=libimp-$func_stripname_result.a | |
+ | |
+ # If the library has no export list, then create one now | |
+ if test -f "$output_objdir/$soname-def"; then : | |
+ else | |
+ func_verbose "extracting exported symbol list from \`$soname'" | |
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?' | |
+ fi | |
+ | |
+ # Create $newlib | |
+ if test -f "$output_objdir/$newlib"; then :; else | |
+ func_verbose "generating import library for \`$soname'" | |
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' | |
+ fi | |
+ # make sure the library variables are pointing to the new library | |
+ dir=$output_objdir | |
+ linklib=$newlib | |
+ fi # test -n "$old_archive_from_expsyms_cmds" | |
+ | |
+ if test "$linkmode" = prog || test "$opt_mode" != relink; then | |
+ add_shlibpath= | |
+ add_dir= | |
+ add= | |
+ lib_linked=yes | |
+ case $hardcode_action in | |
+ immediate | unsupported) | |
+ if test "$hardcode_direct" = no; then | |
+ add="$dir/$linklib" | |
+ case $host in | |
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; | |
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;; | |
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ | |
+ *-*-unixware7*) add_dir="-L$dir" ;; | |
+ *-*-darwin* ) | |
+ # if the lib is a (non-dlopened) module then we can not | |
+ # link against it, someone is ignoring the earlier warnings | |
+ if /usr/bin/file -L $add 2> /dev/null | | |
+ $GREP ": [^:]* bundle" >/dev/null ; then | |
+ if test "X$dlopenmodule" != "X$lib"; then | |
+ $ECHO "*** Warning: lib $linklib is a module, not a sh… | |
+ if test -z "$old_library" ; then | |
+ echo | |
+ echo "*** And there doesn't seem to be a static arch… | |
+ echo "*** The link will probably fail, sorry" | |
+ else | |
+ add="$dir/$old_library" | |
+ fi | |
+ elif test -n "$old_library"; then | |
+ add="$dir/$old_library" | |
+ fi | |
+ fi | |
+ esac | |
+ elif test "$hardcode_minus_L" = no; then | |
+ case $host in | |
+ *-*-sunos*) add_shlibpath="$dir" ;; | |
+ esac | |
+ add_dir="-L$dir" | |
+ add="-l$name" | |
+ elif test "$hardcode_shlibpath_var" = no; then | |
+ add_shlibpath="$dir" | |
+ add="-l$name" | |
+ else | |
+ lib_linked=no | |
+ fi | |
+ ;; | |
+ relink) | |
+ if test "$hardcode_direct" = yes && | |
+ test "$hardcode_direct_absolute" = no; then | |
+ add="$dir/$linklib" | |
+ elif test "$hardcode_minus_L" = yes; then | |
+ add_dir="-L$absdir" | |
+ # Try looking first in the location we're being installed to. | |
+ if test -n "$inst_prefix_dir"; then | |
+ case $libdir in | |
+ [\\/]*) | |
+ func_append add_dir " -L$inst_prefix_dir$libdir" | |
+ ;; | |
+ esac | |
+ fi | |
+ add="-l$name" | |
+ elif test "$hardcode_shlibpath_var" = yes; then | |
+ add_shlibpath="$dir" | |
+ add="-l$name" | |
+ else | |
+ lib_linked=no | |
+ fi | |
+ ;; | |
+ *) lib_linked=no ;; | |
+ esac | |
+ | |
+ if test "$lib_linked" != yes; then | |
+ func_fatal_configuration "unsupported hardcode properties" | |
+ fi | |
+ | |
+ if test -n "$add_shlibpath"; then | |
+ case :$compile_shlibpath: in | |
+ *":$add_shlibpath:"*) ;; | |
+ *) func_append compile_shlibpath "$add_shlibpath:" ;; | |
+ esac | |
+ fi | |
+ if test "$linkmode" = prog; then | |
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" | |
+ test -n "$add" && compile_deplibs="$add $compile_deplibs" | |
+ else | |
+ test -n "$add_dir" && deplibs="$add_dir $deplibs" | |
+ test -n "$add" && deplibs="$add $deplibs" | |
+ if test "$hardcode_direct" != yes && | |
+ test "$hardcode_minus_L" != yes && | |
+ test "$hardcode_shlibpath_var" = yes; then | |
+ case :$finalize_shlibpath: in | |
+ *":$libdir:"*) ;; | |
+ *) func_append finalize_shlibpath "$libdir:" ;; | |
+ esac | |
+ fi | |
+ fi | |
+ fi | |
+ | |
+ if test "$linkmode" = prog || test "$opt_mode" = relink; then | |
+ add_shlibpath= | |
+ add_dir= | |
+ add= | |
+ # Finalize command for both is simple: just hardcode it. | |
+ if test "$hardcode_direct" = yes && | |
+ test "$hardcode_direct_absolute" = no; then | |
+ add="$libdir/$linklib" | |
+ elif test "$hardcode_minus_L" = yes; then | |
+ add_dir="-L$libdir" | |
+ add="-l$name" | |
+ elif test "$hardcode_shlibpath_var" = yes; then | |
+ case :$finalize_shlibpath: in | |
+ *":$libdir:"*) ;; | |
+ *) func_append finalize_shlibpath "$libdir:" ;; | |
+ esac | |
+ add="-l$name" | |
+ elif test "$hardcode_automatic" = yes; then | |
+ if test -n "$inst_prefix_dir" && | |
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then | |
+ add="$inst_prefix_dir$libdir/$linklib" | |
+ else | |
+ add="$libdir/$linklib" | |
+ fi | |
+ else | |
+ # We cannot seem to hardcode it, guess we'll fake it. | |
+ add_dir="-L$libdir" | |
+ # Try looking first in the location we're being installed to. | |
+ if test -n "$inst_prefix_dir"; then | |
+ case $libdir in | |
+ [\\/]*) | |
+ func_append add_dir " -L$inst_prefix_dir$libdir" | |
+ ;; | |
+ esac | |
+ fi | |
+ add="-l$name" | |
+ fi | |
+ | |
+ if test "$linkmode" = prog; then | |
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_depli… | |
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs" | |
+ else | |
+ test -n "$add_dir" && deplibs="$add_dir $deplibs" | |
+ test -n "$add" && deplibs="$add $deplibs" | |
+ fi | |
+ fi | |
+ elif test "$linkmode" = prog; then | |
+ # Here we assume that one of hardcode_direct or hardcode_minus_L | |
+ # is not unsupported. This is valid on all known static and | |
+ # shared platforms. | |
+ if test "$hardcode_direct" != unsupported; then | |
+ test -n "$old_library" && linklib="$old_library" | |
+ compile_deplibs="$dir/$linklib $compile_deplibs" | |
+ finalize_deplibs="$dir/$linklib $finalize_deplibs" | |
+ else | |
+ compile_deplibs="-l$name -L$dir $compile_deplibs" | |
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs" | |
+ fi | |
+ elif test "$build_libtool_libs" = yes; then | |
+ # Not a shared library | |
+ if test "$deplibs_check_method" != pass_all; then | |
+ # We're trying link a shared library against a static one | |
+ # but the system doesn't support it. | |
+ | |
+ # Just print a warning and add the library to dependency_libs so | |
+ # that the program can be linked against the static library. | |
+ echo | |
+ $ECHO "*** Warning: This system can not link to static lib archive… | |
+ echo "*** I have the capability to make that library automatically… | |
+ echo "*** you link to this library. But I can only do this if you… | |
+ echo "*** shared version of the library, which you do not appear t… | |
+ if test "$module" = yes; then | |
+ echo "*** But as you try to build a module library, libtool will… | |
+ echo "*** a static module, that should work as long as the dlope… | |
+ echo "*** is linked with the -dlopen flag to resolve symbols at … | |
+ if test -z "$global_symbol_pipe"; then | |
+ echo | |
+ echo "*** However, this would only work if libtool was able to… | |
+ echo "*** lists from a program, using \`nm' or equivalent, but… | |
+ echo "*** not find such a program. So, this module is probabl… | |
+ echo "*** \`nm' from GNU binutils and a full rebuild may help." | |
+ fi | |
+ if test "$build_old_libs" = no; then | |
+ build_libtool_libs=module | |
+ build_old_libs=yes | |
+ else | |
+ build_libtool_libs=no | |
+ fi | |
+ fi | |
+ else | |
+ deplibs="$dir/$old_library $deplibs" | |
+ link_static=yes | |
+ fi | |
+ fi # link shared/static library? | |
+ | |
+ if test "$linkmode" = lib; then | |
+ if test -n "$dependency_libs" && | |
+ { test "$hardcode_into_libs" != yes || | |
+ test "$build_old_libs" = yes || | |
+ test "$link_static" = yes; }; then | |
+ # Extract -R from dependency_libs | |
+ temp_deplibs= | |
+ for libdir in $dependency_libs; do | |
+ case $libdir in | |
+ -R*) func_stripname '-R' '' "$libdir" | |
+ temp_xrpath=$func_stripname_result | |
+ case " $xrpath " in | |
+ *" $temp_xrpath "*) ;; | |
+ *) func_append xrpath " $temp_xrpath";; | |
+ esac;; | |
+ *) func_append temp_deplibs " $libdir";; | |
+ esac | |
+ done | |
+ dependency_libs="$temp_deplibs" | |
+ fi | |
+ | |
+ func_append newlib_search_path " $absdir" | |
+ # Link against this library | |
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $… | |
+ # ... and its dependency_libs | |
+ tmp_libs= | |
+ for deplib in $dependency_libs; do | |
+ newdependency_libs="$deplib $newdependency_libs" | |
+ case $deplib in | |
+ -L*) func_stripname '-L' '' "$deplib" | |
+ func_resolve_sysroot "$func_stripname_result";; | |
+ *) func_resolve_sysroot "$deplib" ;; | |
+ esac | |
+ if $opt_preserve_dup_deps ; then | |
+ case "$tmp_libs " in | |
+ *" $func_resolve_sysroot_result "*) | |
+ func_append specialdeplibs " $func_resolve_sysroot_result" ;; | |
+ esac | |
+ fi | |
+ func_append tmp_libs " $func_resolve_sysroot_result" | |
+ done | |
+ | |
+ if test "$link_all_deplibs" != no; then | |
+ # Add the search paths of all dependency libraries | |
+ for deplib in $dependency_libs; do | |
+ path= | |
+ case $deplib in | |
+ -L*) path="$deplib" ;; | |
+ *.la) | |
+ func_resolve_sysroot "$deplib" | |
+ deplib=$func_resolve_sysroot_result | |
+ func_dirname "$deplib" "" "." | |
+ dir=$func_dirname_result | |
+ # We need an absolute path. | |
+ case $dir in | |
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; | |
+ *) | |
+ absdir=`cd "$dir" && pwd` | |
+ if test -z "$absdir"; then | |
+ func_warning "cannot determine absolute directory name of … | |
+ absdir="$dir" | |
+ fi | |
+ ;; | |
+ esac | |
+ if $GREP "^installed=no" $deplib > /dev/null; then | |
+ case $host in | |
+ *-*-darwin*) | |
+ depdepl= | |
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)… | |
+ if test -n "$deplibrary_names" ; then | |
+ for tmp in $deplibrary_names ; do | |
+ depdepl=$tmp | |
+ done | |
+ if test -f "$absdir/$objdir/$depdepl" ; then | |
+ depdepl="$absdir/$objdir/$depdepl" | |
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR… | |
+ if test -z "$darwin_install_name"; then | |
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '… | |
+ fi | |
+ func_append compiler_flags " ${wl}-dylib_file ${wl}${dar… | |
+ func_append linker_flags " -dylib_file ${darwin_install_… | |
+ path= | |
+ fi | |
+ fi | |
+ ;; | |
+ *) | |
+ path="-L$absdir/$objdir" | |
+ ;; | |
+ esac | |
+ else | |
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | |
+ test -z "$libdir" && \ | |
+ func_fatal_error "\`$deplib' is not a valid libtool archiv… | |
+ test "$absdir" != "$libdir" && \ | |
+ func_warning "\`$deplib' seems to be moved" | |
+ | |
+ path="-L$absdir" | |
+ fi | |
+ ;; | |
+ esac | |
+ case " $deplibs " in | |
+ *" $path "*) ;; | |
+ *) deplibs="$path $deplibs" ;; | |
+ esac | |
+ done | |
+ fi # link_all_deplibs != no | |
+ fi # linkmode = lib | |
+ done # for deplib in $libs | |
+ if test "$pass" = link; then | |
+ if test "$linkmode" = "prog"; then | |
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs" | |
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" | |
+ else | |
+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flag… | |
+ fi | |
+ fi | |
+ dependency_libs="$newdependency_libs" | |
+ if test "$pass" = dlpreopen; then | |
+ # Link the dlpreopened libraries before other libraries | |
+ for deplib in $save_deplibs; do | |
+ deplibs="$deplib $deplibs" | |
+ done | |
+ fi | |
+ if test "$pass" != dlopen; then | |
+ if test "$pass" != conv; then | |
+ # Make sure lib_search_path contains only unique directories. | |
+ lib_search_path= | |
+ for dir in $newlib_search_path; do | |
+ case "$lib_search_path " in | |
+ *" $dir "*) ;; | |
+ *) func_append lib_search_path " $dir" ;; | |
+ esac | |
+ done | |
+ newlib_search_path= | |
+ fi | |
+ | |
+ if test "$linkmode,$pass" != "prog,link"; then | |
+ vars="deplibs" | |
+ else | |
+ vars="compile_deplibs finalize_deplibs" | |
+ fi | |
+ for var in $vars dependency_libs; do | |
+ # Add libraries to $var in reverse order | |
+ eval tmp_libs=\"\$$var\" | |
+ new_libs= | |
+ for deplib in $tmp_libs; do | |
+ # FIXME: Pedantically, this is the right thing to do, so | |
+ # that some nasty dependency loop isn't accidentally | |
+ # broken: | |
+ #new_libs="$deplib $new_libs" | |
+ # Pragmatically, this seems to cause very few problems in | |
+ # practice: | |
+ case $deplib in | |
+ -L*) new_libs="$deplib $new_libs" ;; | |
+ -R*) ;; | |
+ *) | |
+ # And here is the reason: when a library appears more | |
+ # than once as an explicit dependence of a library, or | |
+ # is implicitly linked in more than once by the | |
+ # compiler, it is considered special, and multiple | |
+ # occurrences thereof are not removed. Compare this | |
+ # with having the same library being listed as a | |
+ # dependency of multiple other libraries: in this case, | |
+ # we know (pedantically, we assume) the library does not | |
+ # need to be listed more than once, so we keep only the | |
+ # last copy. This is not always right, but it is rare | |
+ # enough that we require users that really mean to play | |
+ # such unportable linking tricks to link the library | |
+ # using -Wl,-lname, so that libtool does not consider it | |
+ # for duplicate removal. | |
+ case " $specialdeplibs " in | |
+ *" $deplib "*) new_libs="$deplib $new_libs" ;; | |
+ *) | |
+ case " $new_libs " in | |
+ *" $deplib "*) ;; | |
+ *) new_libs="$deplib $new_libs" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ done | |
+ tmp_libs= | |
+ for deplib in $new_libs; do | |
+ case $deplib in | |
+ -L*) | |
+ case " $tmp_libs " in | |
+ *" $deplib "*) ;; | |
+ *) func_append tmp_libs " $deplib" ;; | |
+ esac | |
+ ;; | |
+ *) func_append tmp_libs " $deplib" ;; | |
+ esac | |
+ done | |
+ eval $var=\"$tmp_libs\" | |
+ done # for var | |
+ fi | |
+ # Last step: remove runtime libs from dependency_libs | |
+ # (they stay in deplibs) | |
+ tmp_libs= | |
+ for i in $dependency_libs ; do | |
+ case " $predeps $postdeps $compiler_lib_search_path " in | |
+ *" $i "*) | |
+ i="" | |
+ ;; | |
+ esac | |
+ if test -n "$i" ; then | |
+ func_append tmp_libs " $i" | |
+ fi | |
+ done | |
+ dependency_libs=$tmp_libs | |
+ done # for pass | |
+ if test "$linkmode" = prog; then | |
+ dlfiles="$newdlfiles" | |
+ fi | |
+ if test "$linkmode" = prog || test "$linkmode" = lib; then | |
+ dlprefiles="$newdlprefiles" | |
+ fi | |
+ | |
+ case $linkmode in | |
+ oldlib) | |
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |
+ func_warning "\`-dlopen' is ignored for archives" | |
+ fi | |
+ | |
+ case " $deplibs" in | |
+ *\ -l* | *\ -L*) | |
+ func_warning "\`-l' and \`-L' are ignored for archives" ;; | |
+ esac | |
+ | |
+ test -n "$rpath" && \ | |
+ func_warning "\`-rpath' is ignored for archives" | |
+ | |
+ test -n "$xrpath" && \ | |
+ func_warning "\`-R' is ignored for archives" | |
+ | |
+ test -n "$vinfo" && \ | |
+ func_warning "\`-version-info/-version-number' is ignored for archives" | |
+ | |
+ test -n "$release" && \ | |
+ func_warning "\`-release' is ignored for archives" | |
+ | |
+ test -n "$export_symbols$export_symbols_regex" && \ | |
+ func_warning "\`-export-symbols' is ignored for archives" | |
+ | |
+ # Now set the variables for building old libraries. | |
+ build_libtool_libs=no | |
+ oldlibs="$output" | |
+ func_append objs "$old_deplibs" | |
+ ;; | |
+ | |
+ lib) | |
+ # Make sure we only generate libraries of the form `libNAME.la'. | |
+ case $outputname in | |
+ lib*) | |
+ func_stripname 'lib' '.la' "$outputname" | |
+ name=$func_stripname_result | |
+ eval shared_ext=\"$shrext_cmds\" | |
+ eval libname=\"$libname_spec\" | |
+ ;; | |
+ *) | |
+ test "$module" = no && \ | |
+ func_fatal_help "libtool library \`$output' must begin with \`lib'" | |
+ | |
+ if test "$need_lib_prefix" != no; then | |
+ # Add the "lib" prefix for modules if required | |
+ func_stripname '' '.la' "$outputname" | |
+ name=$func_stripname_result | |
+ eval shared_ext=\"$shrext_cmds\" | |
+ eval libname=\"$libname_spec\" | |
+ else | |
+ func_stripname '' '.la' "$outputname" | |
+ libname=$func_stripname_result | |
+ fi | |
+ ;; | |
+ esac | |
+ | |
+ if test -n "$objs"; then | |
+ if test "$deplibs_check_method" != pass_all; then | |
+ func_fatal_error "cannot build libtool library \`$output' from non-l… | |
+ else | |
+ echo | |
+ $ECHO "*** Warning: Linking the shared library $output against the n… | |
+ $ECHO "*** objects $objs is not portable!" | |
+ func_append libobjs " $objs" | |
+ fi | |
+ fi | |
+ | |
+ test "$dlself" != no && \ | |
+ func_warning "\`-dlopen self' is ignored for libtool libraries" | |
+ | |
+ set dummy $rpath | |
+ shift | |
+ test "$#" -gt 1 && \ | |
+ func_warning "ignoring multiple \`-rpath's for a libtool library" | |
+ | |
+ install_libdir="$1" | |
+ | |
+ oldlibs= | |
+ if test -z "$rpath"; then | |
+ if test "$build_libtool_libs" = yes; then | |
+ # Building a libtool convenience library. | |
+ # Some compilers have problems with a `.al' extension so | |
+ # convenience libraries should have the same extension an | |
+ # archive normally would. | |
+ oldlibs="$output_objdir/$libname.$libext $oldlibs" | |
+ build_libtool_libs=convenience | |
+ build_old_libs=yes | |
+ fi | |
+ | |
+ test -n "$vinfo" && \ | |
+ func_warning "\`-version-info/-version-number' is ignored for conven… | |
+ | |
+ test -n "$release" && \ | |
+ func_warning "\`-release' is ignored for convenience libraries" | |
+ else | |
+ | |
+ # Parse the version information argument. | |
+ save_ifs="$IFS"; IFS=':' | |
+ set dummy $vinfo 0 0 0 | |
+ shift | |
+ IFS="$save_ifs" | |
+ | |
+ test -n "$7" && \ | |
+ func_fatal_help "too many parameters to \`-version-info'" | |
+ | |
+ # convert absolute version numbers to libtool ages | |
+ # this retains compatibility with .la files and attempts | |
+ # to make the code below a bit more comprehensible | |
+ | |
+ case $vinfo_number in | |
+ yes) | |
+ number_major="$1" | |
+ number_minor="$2" | |
+ number_revision="$3" | |
+ # | |
+ # There are really only two kinds -- those that | |
+ # use the current revision as the major version | |
+ # and those that subtract age and use age as | |
+ # a minor version. But, then there is irix | |
+ # which has an extra 1 added just for fun | |
+ # | |
+ case $version_type in | |
+ # correct linux to gnu/linux during the next big refactor | |
+ darwin|linux|osf|windows|none) | |
+ func_arith $number_major + $number_minor | |
+ current=$func_arith_result | |
+ age="$number_minor" | |
+ revision="$number_revision" | |
+ ;; | |
+ freebsd-aout|freebsd-elf|qnx|sunos) | |
+ current="$number_major" | |
+ revision="$number_minor" | |
+ age="0" | |
+ ;; | |
+ irix|nonstopux) | |
+ func_arith $number_major + $number_minor | |
+ current=$func_arith_result | |
+ age="$number_minor" | |
+ revision="$number_minor" | |
+ lt_irix_increment=no | |
+ ;; | |
+ esac | |
+ ;; | |
+ no) | |
+ current="$1" | |
+ revision="$2" | |
+ age="$3" | |
+ ;; | |
+ esac | |
+ | |
+ # Check that each of the things are valid numbers. | |
+ case $current in | |
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9… | |
+ *) | |
+ func_error "CURRENT \`$current' must be a nonnegative integer" | |
+ func_fatal_error "\`$vinfo' is not valid version information" | |
+ ;; | |
+ esac | |
+ | |
+ case $revision in | |
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9… | |
+ *) | |
+ func_error "REVISION \`$revision' must be a nonnegative integer" | |
+ func_fatal_error "\`$vinfo' is not valid version information" | |
+ ;; | |
+ esac | |
+ | |
+ case $age in | |
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9… | |
+ *) | |
+ func_error "AGE \`$age' must be a nonnegative integer" | |
+ func_fatal_error "\`$vinfo' is not valid version information" | |
+ ;; | |
+ esac | |
+ | |
+ if test "$age" -gt "$current"; then | |
+ func_error "AGE \`$age' is greater than the current interface number… | |
+ func_fatal_error "\`$vinfo' is not valid version information" | |
+ fi | |
+ | |
+ # Calculate the version variables. | |
+ major= | |
+ versuffix= | |
+ verstring= | |
+ case $version_type in | |
+ none) ;; | |
+ | |
+ darwin) | |
+ # Like Linux, but with the current version available in | |
+ # verstring for coding it into the library header | |
+ func_arith $current - $age | |
+ major=.$func_arith_result | |
+ versuffix="$major.$age.$revision" | |
+ # Darwin ld doesn't like 0 for these options... | |
+ func_arith $current + 1 | |
+ minor_current=$func_arith_result | |
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-… | |
+ verstring="-compatibility_version $minor_current -current_version $m… | |
+ ;; | |
+ | |
+ freebsd-aout) | |
+ major=".$current" | |
+ versuffix=".$current.$revision"; | |
+ ;; | |
+ | |
+ freebsd-elf) | |
+ major=".$current" | |
+ versuffix=".$current" | |
+ ;; | |
+ | |
+ irix | nonstopux) | |
+ if test "X$lt_irix_increment" = "Xno"; then | |
+ func_arith $current - $age | |
+ else | |
+ func_arith $current - $age + 1 | |
+ fi | |
+ major=$func_arith_result | |
+ | |
+ case $version_type in | |
+ nonstopux) verstring_prefix=nonstopux ;; | |
+ *) verstring_prefix=sgi ;; | |
+ esac | |
+ verstring="$verstring_prefix$major.$revision" | |
+ | |
+ # Add in all the interfaces that we are compatible with. | |
+ loop=$revision | |
+ while test "$loop" -ne 0; do | |
+ func_arith $revision - $loop | |
+ iface=$func_arith_result | |
+ func_arith $loop - 1 | |
+ loop=$func_arith_result | |
+ verstring="$verstring_prefix$major.$iface:$verstring" | |
+ done | |
+ | |
+ # Before this point, $major must not contain `.'. | |
+ major=.$major | |
+ versuffix="$major.$revision" | |
+ ;; | |
+ | |
+ linux) # correct to gnu/linux during the next big refactor | |
+ func_arith $current - $age | |
+ major=.$func_arith_result | |
+ versuffix="$major.$age.$revision" | |
+ ;; | |
+ | |
+ osf) | |
+ func_arith $current - $age | |
+ major=.$func_arith_result | |
+ versuffix=".$current.$age.$revision" | |
+ verstring="$current.$age.$revision" | |
+ | |
+ # Add in all the interfaces that we are compatible with. | |
+ loop=$age | |
+ while test "$loop" -ne 0; do | |
+ func_arith $current - $loop | |
+ iface=$func_arith_result | |
+ func_arith $loop - 1 | |
+ loop=$func_arith_result | |
+ verstring="$verstring:${iface}.0" | |
+ done | |
+ | |
+ # Make executables depend on our current version. | |
+ func_append verstring ":${current}.0" | |
+ ;; | |
+ | |
+ qnx) | |
+ major=".$current" | |
+ versuffix=".$current" | |
+ ;; | |
+ | |
+ sunos) | |
+ major=".$current" | |
+ versuffix=".$current.$revision" | |
+ ;; | |
+ | |
+ windows) | |
+ # Use '-' rather than '.', since we only want one | |
+ # extension on DOS 8.3 filesystems. | |
+ func_arith $current - $age | |
+ major=$func_arith_result | |
+ versuffix="-$major" | |
+ ;; | |
+ | |
+ *) | |
+ func_fatal_configuration "unknown library version type \`$version_ty… | |
+ ;; | |
+ esac | |
+ | |
+ # Clear the version info if we defaulted, and they specified a release. | |
+ if test -z "$vinfo" && test -n "$release"; then | |
+ major= | |
+ case $version_type in | |
+ darwin) | |
+ # we can't check for "0.0" in archive_cmds due to quoting | |
+ # problems, so we reset it completely | |
+ verstring= | |
+ ;; | |
+ *) | |
+ verstring="0.0" | |
+ ;; | |
+ esac | |
+ if test "$need_version" = no; then | |
+ versuffix= | |
+ else | |
+ versuffix=".0.0" | |
+ fi | |
+ fi | |
+ | |
+ # Remove version info from name if versioning should be avoided | |
+ if test "$avoid_version" = yes && test "$need_version" = no; then | |
+ major= | |
+ versuffix= | |
+ verstring="" | |
+ fi | |
+ | |
+ # Check to see if the archive will have undefined symbols. | |
+ if test "$allow_undefined" = yes; then | |
+ if test "$allow_undefined_flag" = unsupported; then | |
+ func_warning "undefined symbols not allowed in $host shared librar… | |
+ build_libtool_libs=no | |
+ build_old_libs=yes | |
+ fi | |
+ else | |
+ # Don't allow undefined symbols. | |
+ allow_undefined_flag="$no_undefined_flag" | |
+ fi | |
+ | |
+ fi | |
+ | |
+ func_generate_dlsyms "$libname" "$libname" "yes" | |
+ func_append libobjs " $symfileobj" | |
+ test "X$libobjs" = "X " && libobjs= | |
+ | |
+ if test "$opt_mode" != relink; then | |
+ # Remove our outputs, but don't remove object files since they | |
+ # may have been created when compiling PIC objects. | |
+ removelist= | |
+ tempremovelist=`$ECHO "$output_objdir/*"` | |
+ for p in $tempremovelist; do | |
+ case $p in | |
+ *.$objext | *.gcno) | |
+ ;; | |
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_o… | |
+ if test "X$precious_files_regex" != "X"; then | |
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null … | |
+ then | |
+ continue | |
+ fi | |
+ fi | |
+ func_append removelist " $p" | |
+ ;; | |
+ *) ;; | |
+ esac | |
+ done | |
+ test -n "$removelist" && \ | |
+ func_show_eval "${RM}r \$removelist" | |
+ fi | |
+ | |
+ # Now set the variables for building old libraries. | |
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != conveni… | |
+ func_append oldlibs " $output_objdir/$libname.$libext" | |
+ | |
+ # Transform .lo files to .o files. | |
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $l… | |
+ fi | |
+ | |
+ # Eliminate all temporary directories. | |
+ #for path in $notinst_path; do | |
+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %… | |
+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` | |
+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path %… | |
+ #done | |
+ | |
+ if test -n "$xrpath"; then | |
+ # If the user specified any rpath flags, then add them. | |
+ temp_xrpath= | |
+ for libdir in $xrpath; do | |
+ func_replace_sysroot "$libdir" | |
+ func_append temp_xrpath " -R$func_replace_sysroot_result" | |
+ case "$finalize_rpath " in | |
+ *" $libdir "*) ;; | |
+ *) func_append finalize_rpath " $libdir" ;; | |
+ esac | |
+ done | |
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; … | |
+ dependency_libs="$temp_xrpath $dependency_libs" | |
+ fi | |
+ fi | |
+ | |
+ # Make sure dlfiles contains only unique files that won't be dlpreopened | |
+ old_dlfiles="$dlfiles" | |
+ dlfiles= | |
+ for lib in $old_dlfiles; do | |
+ case " $dlprefiles $dlfiles " in | |
+ *" $lib "*) ;; | |
+ *) func_append dlfiles " $lib" ;; | |
+ esac | |
+ done | |
+ | |
+ # Make sure dlprefiles contains only unique files | |
+ old_dlprefiles="$dlprefiles" | |
+ dlprefiles= | |
+ for lib in $old_dlprefiles; do | |
+ case "$dlprefiles " in | |
+ *" $lib "*) ;; | |
+ *) func_append dlprefiles " $lib" ;; | |
+ esac | |
+ done | |
+ | |
+ if test "$build_libtool_libs" = yes; then | |
+ if test -n "$rpath"; then | |
+ case $host in | |
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegc… | |
+ # these systems don't actually have a c library (as such)! | |
+ ;; | |
+ *-*-rhapsody* | *-*-darwin1.[012]) | |
+ # Rhapsody C library is in the System framework | |
+ func_append deplibs " System.ltframework" | |
+ ;; | |
+ *-*-netbsd*) | |
+ # Don't link with libc until the a.out ld.so is fixed. | |
+ ;; | |
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |
+ # Do not include libc due to us having libc/libc_r. | |
+ ;; | |
+ *-*-sco3.2v5* | *-*-sco5v6*) | |
+ # Causes problems with __ctype | |
+ ;; | |
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) | |
+ # Compiler inserts libc in the correct place for threads to work | |
+ ;; | |
+ *) | |
+ # Add libc to deplibs on all other systems if necessary. | |
+ if test "$build_libtool_need_lc" = "yes"; then | |
+ func_append deplibs " -lc" | |
+ fi | |
+ ;; | |
+ esac | |
+ fi | |
+ | |
+ # Transform deplibs into only deplibs that can be linked in shared. | |
+ name_save=$name | |
+ libname_save=$libname | |
+ release_save=$release | |
+ versuffix_save=$versuffix | |
+ major_save=$major | |
+ # I'm not sure if I'm treating the release correctly. I think | |
+ # release should show up in the -l (ie -lgmp5) so we don't want to | |
+ # add it in twice. Is that correct? | |
+ release="" | |
+ versuffix="" | |
+ major="" | |
+ newdeplibs= | |
+ droppeddeps=no | |
+ case $deplibs_check_method in | |
+ pass_all) | |
+ # Don't check for shared/static. Everything works. | |
+ # This might be a little naive. We might want to check | |
+ # whether the library exists or not. But this is on | |
+ # osf3 & osf4 and I'm not really sure... Just | |
+ # implementing what was already the behavior. | |
+ newdeplibs=$deplibs | |
+ ;; | |
+ test_compile) | |
+ # This code stresses the "libraries are programs" paradigm to its | |
+ # limits. Maybe even breaks it. We compile a program, linking it | |
+ # against the deplibs as a proxy for the library. Then we can check | |
+ # whether they linked in statically or dynamically with ldd. | |
+ $opt_dry_run || $RM conftest.c | |
+ cat > conftest.c <<EOF | |
+ int main() { return 0; } | |
+EOF | |
+ $opt_dry_run || $RM conftest | |
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then | |
+ ldd_output=`ldd conftest` | |
+ for i in $deplibs; do | |
+ case $i in | |
+ -l*) | |
+ func_stripname -l '' "$i" | |
+ name=$func_stripname_result | |
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ;… | |
+ case " $predeps $postdeps " in | |
+ *" $i "*) | |
+ func_append newdeplibs " $i" | |
+ i="" | |
+ ;; | |
+ esac | |
+ fi | |
+ if test -n "$i" ; then | |
+ libname=`eval "\\$ECHO \"$libname_spec\""` | |
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` | |
+ set dummy $deplib_matches; shift | |
+ deplib_match=$1 | |
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then | |
+ func_append newdeplibs " $i" | |
+ else | |
+ droppeddeps=yes | |
+ echo | |
+ $ECHO "*** Warning: dynamic linker does not accept needed … | |
+ echo "*** I have the capability to make that library autom… | |
+ echo "*** you link to this library. But I can only do thi… | |
+ echo "*** shared version of the library, which I believe y… | |
+ echo "*** because a test_compile did reveal that the linke… | |
+ echo "*** its dynamic dependency list that programs get re… | |
+ fi | |
+ fi | |
+ ;; | |
+ *) | |
+ func_append newdeplibs " $i" | |
+ ;; | |
+ esac | |
+ done | |
+ else | |
+ # Error occurred in the first compile. Let's try to salvage | |
+ # the situation: Compile a separate program for each library. | |
+ for i in $deplibs; do | |
+ case $i in | |
+ -l*) | |
+ func_stripname -l '' "$i" | |
+ name=$func_stripname_result | |
+ $opt_dry_run || $RM conftest | |
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then | |
+ ldd_output=`ldd conftest` | |
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes"… | |
+ case " $predeps $postdeps " in | |
+ *" $i "*) | |
+ func_append newdeplibs " $i" | |
+ i="" | |
+ ;; | |
+ esac | |
+ fi | |
+ if test -n "$i" ; then | |
+ libname=`eval "\\$ECHO \"$libname_spec\""` | |
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` | |
+ set dummy $deplib_matches; shift | |
+ deplib_match=$1 | |
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; t… | |
+ func_append newdeplibs " $i" | |
+ else | |
+ droppeddeps=yes | |
+ echo | |
+ $ECHO "*** Warning: dynamic linker does not accept neede… | |
+ echo "*** I have the capability to make that library aut… | |
+ echo "*** you link to this library. But I can only do t… | |
+ echo "*** shared version of the library, which you do no… | |
+ echo "*** because a test_compile did reveal that the lin… | |
+ echo "*** as a dynamic dependency that programs can get … | |
+ fi | |
+ fi | |
+ else | |
+ droppeddeps=yes | |
+ echo | |
+ $ECHO "*** Warning! Library $i is needed by this library bu… | |
+ echo "*** make it link in! You will probably need to instal… | |
+ echo "*** library that it depends on before this library wil… | |
+ echo "*** functional. Installing it before continuing would… | |
+ fi | |
+ ;; | |
+ *) | |
+ func_append newdeplibs " $i" | |
+ ;; | |
+ esac | |
+ done | |
+ fi | |
+ ;; | |
+ file_magic*) | |
+ set dummy $deplibs_check_method; shift | |
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` | |
+ for a_deplib in $deplibs; do | |
+ case $a_deplib in | |
+ -l*) | |
+ func_stripname -l '' "$a_deplib" | |
+ name=$func_stripname_result | |
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; t… | |
+ case " $predeps $postdeps " in | |
+ *" $a_deplib "*) | |
+ func_append newdeplibs " $a_deplib" | |
+ a_deplib="" | |
+ ;; | |
+ esac | |
+ fi | |
+ if test -n "$a_deplib" ; then | |
+ libname=`eval "\\$ECHO \"$libname_spec\""` | |
+ if test -n "$file_magic_glob"; then | |
+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_… | |
+ else | |
+ libnameglob=$libname | |
+ fi | |
+ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocasegl… | |
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_p… | |
+ if test "$want_nocaseglob" = yes; then | |
+ shopt -s nocaseglob | |
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` | |
+ $nocaseglob | |
+ else | |
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` | |
+ fi | |
+ for potent_lib in $potential_libs; do | |
+ # Follow soft links. | |
+ if ls -lLd "$potent_lib" 2>/dev/null | | |
+ $GREP " -> " >/dev/null; then | |
+ continue | |
+ fi | |
+ # The statement above tries to avoid entering an | |
+ # endless loop below, in case of cyclic links. | |
+ # We might still enter an endless loop, since a link | |
+ # loop can be closed while we follow links, | |
+ # but so what? | |
+ potlib="$potent_lib" | |
+ while test -h "$potlib" 2>/dev/null; do | |
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` | |
+ case $potliblink in | |
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; | |
+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potli… | |
+ esac | |
+ done | |
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | | |
+ $SED -e 10q | | |
+ $EGREP "$file_magic_regex" > /dev/null; then | |
+ func_append newdeplibs " $a_deplib" | |
+ a_deplib="" | |
+ break 2 | |
+ fi | |
+ done | |
+ done | |
+ fi | |
+ if test -n "$a_deplib" ; then | |
+ droppeddeps=yes | |
+ echo | |
+ $ECHO "*** Warning: linker path does not have real file for li… | |
+ echo "*** I have the capability to make that library automatic… | |
+ echo "*** you link to this library. But I can only do this if… | |
+ echo "*** shared version of the library, which you do not appe… | |
+ echo "*** because I did check the linker path looking for a fi… | |
+ if test -z "$potlib" ; then | |
+ $ECHO "*** with $libname but no candidates were found. (...f… | |
+ else | |
+ $ECHO "*** with $libname and none of the candidates passed a… | |
+ $ECHO "*** using a file magic. Last file checked: $potlib" | |
+ fi | |
+ fi | |
+ ;; | |
+ *) | |
+ # Add a -L argument. | |
+ func_append newdeplibs " $a_deplib" | |
+ ;; | |
+ esac | |
+ done # Gone through all deplibs. | |
+ ;; | |
+ match_pattern*) | |
+ set dummy $deplibs_check_method; shift | |
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` | |
+ for a_deplib in $deplibs; do | |
+ case $a_deplib in | |
+ -l*) | |
+ func_stripname -l '' "$a_deplib" | |
+ name=$func_stripname_result | |
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; t… | |
+ case " $predeps $postdeps " in | |
+ *" $a_deplib "*) | |
+ func_append newdeplibs " $a_deplib" | |
+ a_deplib="" | |
+ ;; | |
+ esac | |
+ fi | |
+ if test -n "$a_deplib" ; then | |
+ libname=`eval "\\$ECHO \"$libname_spec\""` | |
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_p… | |
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | |
+ for potent_lib in $potential_libs; do | |
+ potlib="$potent_lib" # see symlink-check above in file_mag… | |
+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ | |
+ $EGREP "$match_pattern_regex" > /dev/null; then | |
+ func_append newdeplibs " $a_deplib" | |
+ a_deplib="" | |
+ break 2 | |
+ fi | |
+ done | |
+ done | |
+ fi | |
+ if test -n "$a_deplib" ; then | |
+ droppeddeps=yes | |
+ echo | |
+ $ECHO "*** Warning: linker path does not have real file for li… | |
+ echo "*** I have the capability to make that library automatic… | |
+ echo "*** you link to this library. But I can only do this if… | |
+ echo "*** shared version of the library, which you do not appe… | |
+ echo "*** because I did check the linker path looking for a fi… | |
+ if test -z "$potlib" ; then | |
+ $ECHO "*** with $libname but no candidates were found. (...f… | |
+ else | |
+ $ECHO "*** with $libname and none of the candidates passed a… | |
+ $ECHO "*** using a regex pattern. Last file checked: $potlib" | |
+ fi | |
+ fi | |
+ ;; | |
+ *) | |
+ # Add a -L argument. | |
+ func_append newdeplibs " $a_deplib" | |
+ ;; | |
+ esac | |
+ done # Gone through all deplibs. | |
+ ;; | |
+ none | unknown | *) | |
+ newdeplibs="" | |
+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` | |
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |
+ for i in $predeps $postdeps ; do | |
+ # can't use Xsed below, because $i might contain '/' | |
+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` | |
+ done | |
+ fi | |
+ case $tmp_deplibs in | |
+ *[!\ \ ]*) | |
+ echo | |
+ if test "X$deplibs_check_method" = "Xnone"; then | |
+ echo "*** Warning: inter-library dependencies are not supported … | |
+ else | |
+ echo "*** Warning: inter-library dependencies are not known to b… | |
+ fi | |
+ echo "*** All declared inter-library dependencies are being droppe… | |
+ droppeddeps=yes | |
+ ;; | |
+ esac | |
;; | |
esac | |
- $rm $output | |
- trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 | |
- | |
- $echo > $output "\ | |
-#! $SHELL | |
- | |
-# $output - temporary wrapper script for $objdir/$outputname | |
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |
-# | |
-# 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. | |
-Xsed='${SED} -e 1s/^X//' | |
-sed_quote_subst='$sed_quote_subst' | |
- | |
-# 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 variable: | |
- 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 | |
- echo=\"$qecho\" | |
- file=\"\$0\" | |
- # Make sure echo works. | |
- if test \"X\$1\" = X--no-reexec; then | |
- # Discard the --no-reexec flag, and continue. | |
- shift | |
- elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then | |
- # Yippee, \$echo works! | |
- : | |
- else | |
- # Restart under the correct shell, and then maybe \$echo will work. | |
- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} | |
- fi | |
- fi\ | |
-" | |
- $echo >> $output "\ | |
+ versuffix=$versuffix_save | |
+ major=$major_save | |
+ release=$release_save | |
+ libname=$libname_save | |
+ name=$name_save | |
- # Find the directory that this script lives in. | |
- thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` | |
- test \"x\$thisdir\" = \"x\$file\" && thisdir=. | |
+ case $host in | |
+ *-*-rhapsody* | *-*-darwin1.[012]) | |
+ # On Rhapsody replace the C library with the System framework | |
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework… | |
+ ;; | |
+ esac | |
- # 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 \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` | |
+ if test "$droppeddeps" = yes; then | |
+ if test "$module" = yes; then | |
+ echo | |
+ echo "*** Warning: libtool could not satisfy all declared inter-li… | |
+ $ECHO "*** dependencies of module $libname. Therefore, libtool wi… | |
+ echo "*** a static module, that should work as long as the dlopeni… | |
+ echo "*** application is linked with the -dlopen flag." | |
+ if test -z "$global_symbol_pipe"; then | |
+ echo | |
+ echo "*** However, this would only work if libtool was able to e… | |
+ echo "*** lists from a program, using \`nm' or equivalent, but l… | |
+ echo "*** not find such a program. So, this module is probably … | |
+ echo "*** \`nm' from GNU binutils and a full rebuild may help." | |
+ fi | |
+ if test "$build_old_libs" = no; then | |
+ oldlibs="$output_objdir/$libname.$libext" | |
+ build_libtool_libs=module | |
+ build_old_libs=yes | |
+ else | |
+ build_libtool_libs=no | |
+ fi | |
+ else | |
+ echo "*** The inter-library dependencies that have been dropped he… | |
+ echo "*** automatically added whenever a program is linked with th… | |
+ echo "*** or is declared to -dlopen it." | |
- # 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\" ;; | |
+ if test "$allow_undefined" = no; then | |
+ echo | |
+ echo "*** Since this library must not contain undefined symbols," | |
+ echo "*** because either the platform does not support them or" | |
+ echo "*** it was explicitly requested with -no-undefined," | |
+ echo "*** libtool will only create a static version of it." | |
+ if test "$build_old_libs" = no; then | |
+ oldlibs="$output_objdir/$libname.$libext" | |
+ build_libtool_libs=module | |
+ build_old_libs=yes | |
+ else | |
+ build_libtool_libs=no | |
+ fi | |
+ fi | |
+ fi | |
+ fi | |
+ # Done checking deplibs! | |
+ deplibs=$newdeplibs | |
+ fi | |
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" | |
+ case $host in | |
+ *-*-darwin*) | |
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% … | |
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $… | |
+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -frame… | |
+ ;; | |
esac | |
- fi | |
- | |
- file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` | |
- file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` | |
- done | |
- | |
- # Try to get the absolute directory name. | |
- absdir=\`cd \"\$thisdir\" && pwd\` | |
- test -n \"\$absdir\" && thisdir=\"\$absdir\" | |
-" | |
- | |
- if test "$fast_install" = yes; then | |
- $echo >> $output "\ | |
- program=lt-'$outputname'$exeext | |
- progdir=\"\$thisdir/$objdir\" | |
- if test ! -f \"\$progdir/\$program\" || \\ | |
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/de… | |
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then | |
+ # move library search paths that coincide with paths to not yet | |
+ # installed libraries to the beginning of the library search list | |
+ new_libs= | |
+ for path in $notinst_path; do | |
+ case " $new_libs " in | |
+ *" -L$path/$objdir "*) ;; | |
+ *) | |
+ case " $deplibs " in | |
+ *" -L$path/$objdir "*) | |
+ func_append new_libs " -L$path/$objdir" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ done | |
+ for deplib in $deplibs; do | |
+ case $deplib in | |
+ -L*) | |
+ case " $new_libs " in | |
+ *" $deplib "*) ;; | |
+ *) func_append new_libs " $deplib" ;; | |
+ esac | |
+ ;; | |
+ *) func_append new_libs " $deplib" ;; | |
+ esac | |
+ done | |
+ deplibs="$new_libs" | |
- file=\"\$\$-\$program\" | |
+ # All the library-specific variables (install_libdir is set above). | |
+ library_names= | |
+ old_library= | |
+ dlname= | |
- if test ! -d \"\$progdir\"; then | |
- $mkdir \"\$progdir\" | |
- else | |
- $rm \"\$progdir/\$file\" | |
- fi" | |
+ # Test again, we may have decided not to build it any more | |
+ if test "$build_libtool_libs" = yes; then | |
+ # Remove ${wl} instances when linking with ld. | |
+ # FIXME: should test the right _cmds variable. | |
+ case $archive_cmds in | |
+ *\$LD\ *) wl= ;; | |
+ esac | |
+ if test "$hardcode_into_libs" = yes; then | |
+ # Hardcode the library paths | |
+ hardcode_libdirs= | |
+ dep_rpath= | |
+ rpath="$finalize_rpath" | |
+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath" | |
+ for libdir in $rpath; do | |
+ if test -n "$hardcode_libdir_flag_spec"; then | |
+ if test -n "$hardcode_libdir_separator"; then | |
+ func_replace_sysroot "$libdir" | |
+ libdir=$func_replace_sysroot_result | |
+ if test -z "$hardcode_libdirs"; then | |
+ hardcode_libdirs="$libdir" | |
+ else | |
+ # Just accumulate the unique libdirs. | |
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_li… | |
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separato… | |
+ ;; | |
+ *) | |
+ func_append hardcode_libdirs "$hardcode_libdir_separator$l… | |
+ ;; | |
+ esac | |
+ fi | |
+ else | |
+ eval flag=\"$hardcode_libdir_flag_spec\" | |
+ func_append dep_rpath " $flag" | |
+ fi | |
+ elif test -n "$runpath_var"; then | |
+ case "$perm_rpath " in | |
+ *" $libdir "*) ;; | |
+ *) func_append perm_rpath " $libdir" ;; | |
+ esac | |
+ fi | |
+ done | |
+ # Substitute the hardcoded libdirs into the rpath. | |
+ if test -n "$hardcode_libdir_separator" && | |
+ test -n "$hardcode_libdirs"; then | |
+ libdir="$hardcode_libdirs" | |
+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" | |
+ fi | |
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then | |
+ # We should set the runpath_var. | |
+ rpath= | |
+ for dir in $perm_rpath; do | |
+ func_append rpath "$dir:" | |
+ done | |
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" | |
+ fi | |
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" | |
+ fi | |
- $echo >> $output "\ | |
+ shlibpath="$finalize_shlibpath" | |
+ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" | |
+ if test -n "$shlibpath"; then | |
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath… | |
+ fi | |
- # 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 $EXIT_FAILURE | |
- fi | |
- fi | |
+ # Get the real and link names of the library. | |
+ eval shared_ext=\"$shrext_cmds\" | |
+ eval library_names=\"$library_names_spec\" | |
+ set dummy $library_names | |
+ shift | |
+ realname="$1" | |
+ shift | |
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || | |
- { $rm \"\$progdir/\$program\"; | |
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } | |
- $rm \"\$progdir/\$file\" | |
- fi" | |
+ if test -n "$soname_spec"; then | |
+ eval soname=\"$soname_spec\" | |
else | |
- $echo >> $output "\ | |
- program='$outputname' | |
- progdir=\"\$thisdir/$objdir\" | |
-" | |
+ soname="$realname" | |
+ fi | |
+ if test -z "$dlname"; then | |
+ dlname=$soname | |
fi | |
- $echo >> $output "\ | |
- | |
- if test -f \"\$progdir/\$program\"; then" | |
- | |
- # Export our shlibpath_var if we have one. | |
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_va… | |
- $echo >> $output "\ | |
- # 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` | |
+ lib="$output_objdir/$realname" | |
+ linknames= | |
+ for link | |
+ do | |
+ func_append linknames " $link" | |
+ done | |
- export $shlibpath_var | |
-" | |
- fi | |
+ # Use standard objects if they are pic | |
+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2… | |
+ test "X$libobjs" = "X " && libobjs= | |
- # fixup the dll searchpath if we need to. | |
- if test -n "$dllsearchpath"; then | |
- $echo >> $output "\ | |
- # Add the dll search path components to the executable PATH | |
- PATH=$dllsearchpath:\$PATH | |
-" | |
+ delfiles= | |
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then | |
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" | |
+ export_symbols="$output_objdir/$libname.uexp" | |
+ func_append delfiles " $export_symbols" | |
fi | |
- $echo >> $output "\ | |
- if test \"\$libtool_execute_magic\" != \"$magic\"; then | |
- # Run the actual program with our arguments. | |
-" | |
- case $host in | |
- # Backslashes separate directories on plain windows | |
- *-*-mingw | *-*-os2*) | |
- $echo >> $output "\ | |
- exec \$progdir\\\\\$program \${1+\"\$@\"} | |
-" | |
- ;; | |
- | |
- *) | |
- $echo >> $output "\ | |
- exec \$progdir/\$program \${1+\"\$@\"} | |
-" | |
+ orig_export_symbols= | |
+ case $host_os in | |
+ cygwin* | mingw* | cegcc*) | |
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then | |
+ # exporting using user supplied symfile | |
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then | |
+ # and it's NOT already a .def file. Must figure out | |
+ # which of the given symbols are data symbols and tag | |
+ # them as such. So, trigger use of export_symbols_cmds. | |
+ # export_symbols gets reassigned inside the "prepare | |
+ # the list of exported symbols" if statement, so the | |
+ # include_expsyms logic still works. | |
+ orig_export_symbols="$export_symbols" | |
+ export_symbols= | |
+ always_export_symbols=yes | |
+ fi | |
+ fi | |
;; | |
esac | |
- $echo >> $output "\ | |
- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" | |
- exit $EXIT_FAILURE | |
- 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 $EXIT_FAILURE | |
- fi | |
-fi\ | |
-" | |
- chmod +x $output | |
- fi | |
- exit $EXIT_SUCCESS | |
- ;; | |
- esac | |
- # See if we need to build an old-fashioned archive. | |
- for oldlib in $oldlibs; do | |
- | |
- if test "$build_libtool_libs" = convenience; then | |
- oldobjs="$libobjs_save" | |
- addlibs="$convenience" | |
- build_libtool_libs=no | |
- else | |
- if test "$build_libtool_libs" = module; then | |
- oldobjs="$libobjs_save" | |
- build_libtool_libs=no | |
- else | |
- oldobjs="$old_deplibs $non_pic_objects" | |
+ # Prepare the list of exported symbols | |
+ if test -z "$export_symbols"; then | |
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_r… | |
+ func_verbose "generating symbol list for \`$libname.la'" | |
+ export_symbols="$output_objdir/$libname.exp" | |
+ $opt_dry_run || $RM $export_symbols | |
+ cmds=$export_symbols_cmds | |
+ save_ifs="$IFS"; IFS='~' | |
+ for cmd1 in $cmds; do | |
+ IFS="$save_ifs" | |
+ # Take the normal branch if the nm_file_list_spec branch | |
+ # doesn't work or if tool conversion is not needed. | |
+ case $nm_file_list_spec~$to_tool_file_cmd in | |
+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~… | |
+ try_normal_branch=yes | |
+ eval cmd=\"$cmd1\" | |
+ func_len " $cmd" | |
+ len=$func_len_result | |
+ ;; | |
+ *) | |
+ try_normal_branch=no | |
+ ;; | |
+ esac | |
+ if test "$try_normal_branch" = yes \ | |
+ && { test "$len" -lt "$max_cmd_len" \ | |
+ || test "$max_cmd_len" -le -1; } | |
+ then | |
+ func_show_eval "$cmd" 'exit $?' | |
+ skipped_export=false | |
+ elif test -n "$nm_file_list_spec"; then | |
+ func_basename "$output" | |
+ output_la=$func_basename_result | |
+ save_libobjs=$libobjs | |
+ save_output=$output | |
+ output=${output_objdir}/${output_la}.nm | |
+ func_to_tool_file "$output" | |
+ libobjs=$nm_file_list_spec$func_to_tool_file_result | |
+ func_append delfiles " $output" | |
+ func_verbose "creating $NM input file list: $output" | |
+ for obj in $save_libobjs; do | |
+ func_to_tool_file "$obj" | |
+ $ECHO "$func_to_tool_file_result" | |
+ done > "$output" | |
+ eval cmd=\"$cmd1\" | |
+ func_show_eval "$cmd" 'exit $?' | |
+ output=$save_output | |
+ libobjs=$save_libobjs | |
+ skipped_export=false | |
+ else | |
+ # The command line is too long to execute in one step. | |
+ func_verbose "using reloadable object file for export list..." | |
+ skipped_export=: | |
+ # Break out early, otherwise skipped_export may be | |
+ # set to false by a later but shorter cmd. | |
+ break | |
+ fi | |
+ done | |
+ IFS="$save_ifs" | |
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "… | |
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbo… | |
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' | |
+ fi | |
+ fi | |
fi | |
- addlibs="$old_convenience" | |
- fi | |
- if test -n "$addlibs"; then | |
- gentop="$output_objdir/${outputname}x" | |
- generated="$generated $gentop" | |
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then | |
+ tmp_export_symbols="$export_symbols" | |
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_s… | |
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_exp… | |
+ fi | |
- func_extract_archives $gentop $addlibs | |
- oldobjs="$oldobjs $func_extract_archives_result" | |
- fi | |
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; … | |
+ # The given exports_symbols file has to be filtered, so filter it. | |
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA expo… | |
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of | |
+ # 's' commands which not all seds can handle. GNU sed should be fine | |
+ # though. Also, the filter scales superlinearly with the number of | |
+ # global variables. join(1) would be nice here, but unfortunately | |
+ # isn't a blessed tool. | |
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\… | |
+ func_append delfiles " $export_symbols $output_objdir/$libname.filte… | |
+ export_symbols=$output_objdir/$libname.def | |
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_expor… | |
+ fi | |
- # Do each command in the archive commands. | |
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = … | |
- cmds=$old_archive_from_new_cmds | |
- else | |
- # POSIX demands no paths to be encoded in archives. We have | |
- # to avoid creating archives with duplicate basenames if we | |
- # might have to extract them afterwards, e.g., when creating a | |
- # static archive out of a convenience library, or when linking | |
- # the entirety of a libtool archive into another (currently | |
- # not supported by libtool). | |
- if (for obj in $oldobjs | |
- do | |
- $echo "X$obj" | $Xsed -e 's%^.*/%%' | |
- done | sort | sort -uc >/dev/null 2>&1); then | |
- : | |
- else | |
- $echo "copying selected object files to avoid basename conflicts..." | |
+ tmp_deplibs= | |
+ for test_deplib in $deplibs; do | |
+ case " $convenience " in | |
+ *" $test_deplib "*) ;; | |
+ *) | |
+ func_append tmp_deplibs " $test_deplib" | |
+ ;; | |
+ esac | |
+ done | |
+ deplibs="$tmp_deplibs" | |
- if test -z "$gentop"; then | |
+ if test -n "$convenience"; then | |
+ if test -n "$whole_archive_flag_spec" && | |
+ test "$compiler_needs_object" = yes && | |
+ test -z "$libobjs"; then | |
+ # extract the archives, so we have objects to list. | |
+ # TODO: could optimize this to just extract one archive. | |
+ whole_archive_flag_spec= | |
+ fi | |
+ if test -n "$whole_archive_flag_spec"; then | |
+ save_libobjs=$libobjs | |
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |
+ test "X$libobjs" = "X " && libobjs= | |
+ else | |
gentop="$output_objdir/${outputname}x" | |
- generated="$generated $gentop" | |
- | |
- $show "${rm}r $gentop" | |
- $run ${rm}r "$gentop" | |
- $show "$mkdir $gentop" | |
- $run $mkdir "$gentop" | |
- status=$? | |
- if test "$status" -ne 0 && test ! -d "$gentop"; then | |
- exit $status | |
- fi | |
+ func_append generated " $gentop" | |
+ | |
+ func_extract_archives $gentop $convenience | |
+ func_append libobjs " $func_extract_archives_result" | |
+ test "X$libobjs" = "X " && libobjs= | |
fi | |
+ fi | |
- save_oldobjs=$oldobjs | |
- oldobjs= | |
- counter=1 | |
- for obj in $save_oldobjs | |
- do | |
- objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` | |
- case " $oldobjs " in | |
- " ") oldobjs=$obj ;; | |
- *[\ /]"$objbase "*) | |
- while :; do | |
- # Make sure we don't pick an alternate name that also | |
- # overlaps. | |
- newobj=lt$counter-$objbase | |
- counter=`expr $counter + 1` | |
- case " $oldobjs " in | |
- *[\ /]"$newobj "*) ;; | |
- *) if test ! -f "$gentop/$newobj"; then break; fi ;; | |
- esac | |
- done | |
- $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" | |
- $run ln "$obj" "$gentop/$newobj" || | |
- $run cp "$obj" "$gentop/$newobj" | |
- oldobjs="$oldobjs $gentop/$newobj" | |
- ;; | |
- *) oldobjs="$oldobjs $obj" ;; | |
- esac | |
- done | |
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then | |
+ eval flag=\"$thread_safe_flag_spec\" | |
+ func_append linker_flags " $flag" | |
fi | |
- eval cmds=\"$old_archive_cmds\" | |
+ # Make a backup of the uninstalled library when relinking | |
+ if test "$opt_mode" = relink; then | |
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV … | |
+ fi | |
- if len=`expr "X$cmds" : ".*"` && | |
- test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |
- cmds=$old_archive_cmds | |
+ # Do each of the archive commands. | |
+ if test "$module" = yes && test -n "$module_cmds" ; then | |
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then | |
+ eval test_cmds=\"$module_expsym_cmds\" | |
+ cmds=$module_expsym_cmds | |
+ else | |
+ eval test_cmds=\"$module_cmds\" | |
+ cmds=$module_cmds | |
+ fi | |
else | |
- # the command line is too long to link in one step, link in parts | |
- $echo "using piecewise archive linking..." | |
- save_RANLIB=$RANLIB | |
- RANLIB=: | |
- objlist= | |
- concat_cmds= | |
- save_oldobjs=$oldobjs | |
- | |
- # Is there a better way of finding the last object in the list? | |
- for obj in $save_oldobjs | |
- do | |
- last_oldobj=$obj | |
- done | |
- for obj in $save_oldobjs | |
- do | |
- oldobjs="$objlist $obj" | |
- objlist="$objlist $obj" | |
- eval test_cmds=\"$old_archive_cmds\" | |
- if len=`expr "X$test_cmds" : ".*"` && | |
- test "$len" -le "$max_cmd_len"; then | |
- : | |
- else | |
- # the above command should be used before it gets too long | |
- oldobjs=$objlist | |
- if test "$obj" = "$last_oldobj" ; then | |
- RANLIB=$save_RANLIB | |
- fi | |
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |
- eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" | |
- objlist= | |
- fi | |
- done | |
- RANLIB=$save_RANLIB | |
- oldobjs=$objlist | |
- if test "X$oldobjs" = "X" ; then | |
- eval cmds=\"\$concat_cmds\" | |
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then | |
+ eval test_cmds=\"$archive_expsym_cmds\" | |
+ cmds=$archive_expsym_cmds | |
else | |
- eval cmds=\"\$concat_cmds~\$old_archive_cmds\" | |
+ eval test_cmds=\"$archive_cmds\" | |
+ cmds=$archive_cmds | |
fi | |
fi | |
- fi | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- eval cmd=\"$cmd\" | |
- IFS="$save_ifs" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
- done | |
- | |
- if test -n "$generated"; then | |
- $show "${rm}r$generated" | |
- $run ${rm}r$generated | |
- fi | |
- | |
- # Now create the libtool archive. | |
- case $output in | |
- *.la) | |
- old_library= | |
- test "$build_old_libs" = yes && old_library="$libname.$libext" | |
- $show "creating $output" | |
- # Preserve any variables that may affect compiler behavior | |
- for var in $variables_saved_for_relink; do | |
- if eval test -z \"\${$var+set}\"; then | |
- relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=;… | |
- elif eval var_value=\$$var; test -z "$var_value"; then | |
- relink_command="$var=; export $var; $relink_command" | |
+ if test "X$skipped_export" != "X:" && | |
+ func_len " $test_cmds" && | |
+ len=$func_len_result && | |
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |
+ : | |
else | |
- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` | |
- relink_command="$var=\"$var_value\"; export $var; $relink_command" | |
- fi | |
- done | |
- # Quote the link command for shipping. | |
- relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink… | |
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` | |
- if test "$hardcode_automatic" = yes ; then | |
- relink_command= | |
- fi | |
+ # The command line is too long to link in one step, link piecewise | |
+ # or, if using GNU ld and skipped_export is not :, use a linker | |
+ # script. | |
+ | |
+ # Save the value of $output and $libobjs because we want to | |
+ # use them later. If we have whole_archive_flag_spec, we | |
+ # want to use save_libobjs as it was before | |
+ # whole_archive_flag_spec was expanded, because we can't | |
+ # assume the linker understands whole_archive_flag_spec. | |
+ # This may have to be revisited, in case too many | |
+ # convenience libraries get linked in and end up exceeding | |
+ # the spec. | |
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then | |
+ save_libobjs=$libobjs | |
+ fi | |
+ save_output=$output | |
+ func_basename "$output" | |
+ output_la=$func_basename_result | |
+ # Clear the reloadable object creation command queue and | |
+ # initialize k to one. | |
+ test_cmds= | |
+ concat_cmds= | |
+ objlist= | |
+ last_robj= | |
+ k=1 | |
- # Only create the output if not a dry run. | |
- if test -z "$run"; then | |
- for installed in no yes; do | |
- if test "$installed" = yes; then | |
- if test -z "$install_libdir"; then | |
- break | |
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && tes… | |
+ output=${output_objdir}/${output_la}.lnkscript | |
+ func_verbose "creating GNU ld script: $output" | |
+ echo 'INPUT (' > $output | |
+ for obj in $save_libobjs | |
+ do | |
+ func_to_tool_file "$obj" | |
+ $ECHO "$func_to_tool_file_result" >> $output | |
+ done | |
+ echo ')' >> $output | |
+ func_append delfiles " $output" | |
+ func_to_tool_file "$output" | |
+ output=$func_to_tool_file_result | |
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && t… | |
+ output=${output_objdir}/${output_la}.lnk | |
+ func_verbose "creating linker input file list: $output" | |
+ : > $output | |
+ set x $save_libobjs | |
+ shift | |
+ firstobj= | |
+ if test "$compiler_needs_object" = yes; then | |
+ firstobj="$1 " | |
+ shift | |
fi | |
- output="$output_objdir/$outputname"i | |
- # Replace all uninstalled libtool libraries with the installed ones | |
- newdependency_libs= | |
- for deplib in $dependency_libs; do | |
- case $deplib in | |
- *.la) | |
- name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` | |
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | |
- if test -z "$libdir"; then | |
- $echo "$modename: \`$deplib' is not a valid libtool archive"… | |
- exit $EXIT_FAILURE | |
- fi | |
- newdependency_libs="$newdependency_libs $libdir/$name" | |
- ;; | |
- *) newdependency_libs="$newdependency_libs $deplib" ;; | |
- esac | |
+ for obj | |
+ do | |
+ func_to_tool_file "$obj" | |
+ $ECHO "$func_to_tool_file_result" >> $output | |
done | |
- dependency_libs="$newdependency_libs" | |
- newdlfiles= | |
- for lib in $dlfiles; do | |
- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` | |
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |
- if test -z "$libdir"; then | |
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |
- exit $EXIT_FAILURE | |
+ func_append delfiles " $output" | |
+ func_to_tool_file "$output" | |
+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\" | |
+ else | |
+ if test -n "$save_libobjs"; then | |
+ func_verbose "creating reloadable object files..." | |
+ output=$output_objdir/$output_la-${k}.$objext | |
+ eval test_cmds=\"$reload_cmds\" | |
+ func_len " $test_cmds" | |
+ len0=$func_len_result | |
+ len=$len0 | |
+ | |
+ # Loop over the list of objects to be linked. | |
+ for obj in $save_libobjs | |
+ do | |
+ func_len " $obj" | |
+ func_arith $len + $func_len_result | |
+ len=$func_arith_result | |
+ if test "X$objlist" = X || | |
+ test "$len" -lt "$max_cmd_len"; then | |
+ func_append objlist " $obj" | |
+ else | |
+ # The command $test_cmds is almost too long, add a | |
+ # command to the queue. | |
+ if test "$k" -eq 1 ; then | |
+ # The first file doesn't have a previous command to add. | |
+ reload_objs=$objlist | |
+ eval concat_cmds=\"$reload_cmds\" | |
+ else | |
+ # All subsequent reloadable object files will link in | |
+ # the last one created. | |
+ reload_objs="$objlist $last_robj" | |
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_r… | |
+ fi | |
+ last_robj=$output_objdir/$output_la-${k}.$objext | |
+ func_arith $k + 1 | |
+ k=$func_arith_result | |
+ output=$output_objdir/$output_la-${k}.$objext | |
+ objlist=" $obj" | |
+ func_len " $last_robj" | |
+ func_arith $len0 + $func_len_result | |
+ len=$func_arith_result | |
+ fi | |
+ done | |
+ # Handle the remaining objects by creating one last | |
+ # reloadable object file. All subsequent reloadable object | |
+ # files will link in the last one created. | |
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |
+ reload_objs="$objlist $last_robj" | |
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\" | |
+ if test -n "$last_robj"; then | |
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" | |
fi | |
- newdlfiles="$newdlfiles $libdir/$name" | |
- done | |
- dlfiles="$newdlfiles" | |
- newdlprefiles= | |
- for lib in $dlprefiles; do | |
- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` | |
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |
- if test -z "$libdir"; then | |
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |
- exit $EXIT_FAILURE | |
+ func_append delfiles " $output" | |
+ | |
+ else | |
+ output= | |
+ fi | |
+ | |
+ if ${skipped_export-false}; then | |
+ func_verbose "generating symbol list for \`$libname.la'" | |
+ export_symbols="$output_objdir/$libname.exp" | |
+ $opt_dry_run || $RM $export_symbols | |
+ libobjs=$output | |
+ # Append the command to create the export file. | |
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" | |
+ if test -n "$last_robj"; then | |
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" | |
fi | |
- newdlprefiles="$newdlprefiles $libdir/$name" | |
+ fi | |
+ | |
+ test -n "$save_libobjs" && | |
+ func_verbose "creating a temporary reloadable object file: $outp… | |
+ | |
+ # Loop through the commands generated above and execute them. | |
+ save_ifs="$IFS"; IFS='~' | |
+ for cmd in $concat_cmds; do | |
+ IFS="$save_ifs" | |
+ $opt_silent || { | |
+ func_quote_for_expand "$cmd" | |
+ eval "func_echo $func_quote_for_expand_result" | |
+ } | |
+ $opt_dry_run || eval "$cmd" || { | |
+ lt_exit=$? | |
+ | |
+ # Restore the uninstalled library and exit | |
+ if test "$opt_mode" = relink; then | |
+ ( cd "$output_objdir" && \ | |
+ $RM "${realname}T" && \ | |
+ $MV "${realname}U" "$realname" ) | |
+ fi | |
+ | |
+ exit $lt_exit | |
+ } | |
done | |
- dlprefiles="$newdlprefiles" | |
+ IFS="$save_ifs" | |
+ | |
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then | |
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbo… | |
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' | |
+ fi | |
+ fi | |
+ | |
+ if ${skipped_export-false}; then | |
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then | |
+ tmp_export_symbols="$export_symbols" | |
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_expo… | |
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp… | |
+ fi | |
+ | |
+ if test -n "$orig_export_symbols"; then | |
+ # The given exports_symbols file has to be filtered, so filter i… | |
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA … | |
+ # FIXME: $output_objdir/$libname.filter potentially contains lot… | |
+ # 's' commands which not all seds can handle. GNU sed should be … | |
+ # though. Also, the filter scales superlinearly with the number … | |
+ # global variables. join(1) would be nice here, but unfortunately | |
+ # isn't a blessed tool. | |
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$… | |
+ func_append delfiles " $export_symbols $output_objdir/$libname.f… | |
+ export_symbols=$output_objdir/$libname.def | |
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_e… | |
+ fi | |
+ fi | |
+ | |
+ libobjs=$output | |
+ # Restore the value of output. | |
+ output=$save_output | |
+ | |
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then | |
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |
+ test "X$libobjs" = "X " && libobjs= | |
+ fi | |
+ # Expand the library linking commands again to reset the | |
+ # value of $libobjs for piecewise linking. | |
+ | |
+ # Do each of the archive commands. | |
+ if test "$module" = yes && test -n "$module_cmds" ; then | |
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then | |
+ cmds=$module_expsym_cmds | |
+ else | |
+ cmds=$module_cmds | |
+ fi | |
else | |
- newdlfiles= | |
- for lib in $dlfiles; do | |
- case $lib in | |
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | |
- *) abs=`pwd`"/$lib" ;; | |
- esac | |
- newdlfiles="$newdlfiles $abs" | |
- done | |
- dlfiles="$newdlfiles" | |
- newdlprefiles= | |
- for lib in $dlprefiles; do | |
- case $lib in | |
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | |
- *) abs=`pwd`"/$lib" ;; | |
- esac | |
- newdlprefiles="$newdlprefiles $abs" | |
- done | |
- dlprefiles="$newdlprefiles" | |
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; th… | |
+ cmds=$archive_expsym_cmds | |
+ else | |
+ cmds=$archive_cmds | |
+ fi | |
fi | |
- $rm $output | |
- # place dlname in correct position for cygwin | |
- tdlname=$dlname | |
- case $host,$output,$installed,$module,$dlname in | |
- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=..… | |
- esac | |
- $echo > $output "\ | |
-# $outputname - a libtool library file | |
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP | |
-# | |
-# Please DO NOT delete this file! | |
-# It is necessary for linking the library. | |
+ fi | |
-# The name that we can dlopen(3). | |
-dlname='$tdlname' | |
+ if test -n "$delfiles"; then | |
+ # Append the command to remove temporary files to $cmds. | |
+ eval cmds=\"\$cmds~\$RM $delfiles\" | |
+ fi | |
-# Names of this library. | |
-library_names='$library_names' | |
+ # Add any objects from preloaded convenience libraries | |
+ if test -n "$dlprefiles"; then | |
+ gentop="$output_objdir/${outputname}x" | |
+ func_append generated " $gentop" | |
-# The name of the static archive. | |
-old_library='$old_library' | |
+ func_extract_archives $gentop $dlprefiles | |
+ func_append libobjs " $func_extract_archives_result" | |
+ test "X$libobjs" = "X " && libobjs= | |
+ fi | |
-# Libraries that this one depends upon. | |
-dependency_libs='$dependency_libs' | |
+ save_ifs="$IFS"; IFS='~' | |
+ for cmd in $cmds; do | |
+ IFS="$save_ifs" | |
+ eval cmd=\"$cmd\" | |
+ $opt_silent || { | |
+ func_quote_for_expand "$cmd" | |
+ eval "func_echo $func_quote_for_expand_result" | |
+ } | |
+ $opt_dry_run || eval "$cmd" || { | |
+ lt_exit=$? | |
+ | |
+ # Restore the uninstalled library and exit | |
+ if test "$opt_mode" = relink; then | |
+ ( cd "$output_objdir" && \ | |
+ $RM "${realname}T" && \ | |
+ $MV "${realname}U" "$realname" ) | |
+ fi | |
-# Version information for $libname. | |
-current=$current | |
-age=$age | |
-revision=$revision | |
+ exit $lt_exit | |
+ } | |
+ done | |
+ IFS="$save_ifs" | |
-# Is this an already installed library? | |
-installed=$installed | |
+ # Restore the uninstalled library and exit | |
+ if test "$opt_mode" = relink; then | |
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV … | |
-# Should we warn about portability when linking against -modules? | |
-shouldnotlink=$module | |
+ if test -n "$convenience"; then | |
+ if test -z "$whole_archive_flag_spec"; then | |
+ func_show_eval '${RM}r "$gentop"' | |
+ fi | |
+ fi | |
-# Files to dlopen/dlpreopen | |
-dlopen='$dlfiles' | |
-dlpreopen='$dlprefiles' | |
+ exit $EXIT_SUCCESS | |
+ fi | |
-# Directory that this library needs to be installed in: | |
-libdir='$install_libdir'" | |
- if test "$installed" = no && test "$need_relink" = yes; then | |
- $echo >> $output "\ | |
-relink_command=\"$relink_command\"" | |
+ # Create links to the real library. | |
+ for linkname in $linknames; do | |
+ if test "$realname" != "$linkname"; then | |
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "… | |
fi | |
done | |
- fi | |
- # Do a symbolic link so that the libtool archive can be found in | |
- # LD_LIBRARY_PATH before the program is installed. | |
- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $ou… | |
- $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname… | |
+ # If -module or -export-dynamic was specified, set the dlname. | |
+ if test "$module" = yes || test "$export_dynamic" = yes; then | |
+ # On all known operating systems, these are identical. | |
+ dlname="$soname" | |
+ fi | |
+ fi | |
;; | |
- esac | |
- exit $EXIT_SUCCESS | |
- ;; | |
- # libtool install mode | |
- install) | |
- modename="$modename: install" | |
+ obj) | |
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then | |
+ func_warning "\`-dlopen' is ignored for objects" | |
+ fi | |
- # There may be an optional sh(1) argument at the beginning of | |
- # install_prog (especially on Windows NT). | |
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || | |
- # Allow the use of GNU shtool's install command. | |
- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then | |
- # Aesthetically quote it. | |
- arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
+ case " $deplibs" in | |
+ *\ -l* | *\ -L*) | |
+ func_warning "\`-l' and \`-L' are ignored for objects" ;; | |
esac | |
- install_prog="$arg " | |
- arg="$1" | |
- shift | |
- else | |
- install_prog= | |
- arg="$nonopt" | |
- fi | |
- # The real first argument should be the name of the installation program. | |
- # Aesthetically quote it. | |
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- install_prog="$install_prog$arg" | |
+ test -n "$rpath" && \ | |
+ func_warning "\`-rpath' is ignored for objects" | |
- # We need to accept at least all the BSD install flags. | |
- dest= | |
- files= | |
- opts= | |
- prev= | |
- install_type= | |
- isdir=no | |
- stripme= | |
- for arg | |
- do | |
- if test -n "$dest"; then | |
- files="$files $dest" | |
- dest="$arg" | |
- continue | |
- fi | |
+ test -n "$xrpath" && \ | |
+ func_warning "\`-R' is ignored for objects" | |
- case $arg in | |
- -d) isdir=yes ;; | |
- -f) prev="-f" ;; | |
- -g) prev="-g" ;; | |
- -m) prev="-m" ;; | |
- -o) prev="-o" ;; | |
- -s) | |
- stripme=" -s" | |
- continue | |
- ;; | |
- -*) ;; | |
+ test -n "$vinfo" && \ | |
+ func_warning "\`-version-info' is ignored for objects" | |
+ | |
+ test -n "$release" && \ | |
+ func_warning "\`-release' is ignored for objects" | |
+ case $output in | |
+ *.lo) | |
+ test -n "$objs$old_deplibs" && \ | |
+ func_fatal_error "cannot build library object \`$output' from non-li… | |
+ | |
+ libobj=$output | |
+ func_lo2o "$libobj" | |
+ obj=$func_lo2o_result | |
+ ;; | |
*) | |
- # If the previous option needed an argument, then skip it. | |
- if test -n "$prev"; then | |
- prev= | |
- else | |
- dest="$arg" | |
- continue | |
- fi | |
+ libobj= | |
+ obj="$output" | |
;; | |
esac | |
- # Aesthetically quote the argument. | |
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` | |
- case $arg in | |
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") | |
- arg="\"$arg\"" | |
- ;; | |
- esac | |
- install_prog="$install_prog $arg" | |
- done | |
+ # Delete the old objects. | |
+ $opt_dry_run || $RM $obj $libobj | |
- if test -z "$install_prog"; then | |
- $echo "$modename: you must specify an install program" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ # Objects from convenience libraries. This assumes | |
+ # single-version convenience libraries. Whenever we create | |
+ # different ones for PIC/non-PIC, this we'll have to duplicate | |
+ # the extraction. | |
+ reload_conv_objs= | |
+ gentop= | |
+ # reload_cmds runs $LD directly, so let us get rid of | |
+ # -Wl from whole_archive_flag_spec and hope we can get by with | |
+ # turning comma into space.. | |
+ wl= | |
- if test -n "$prev"; then | |
- $echo "$modename: the \`$prev' option requires an argument" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ if test -n "$convenience"; then | |
+ if test -n "$whole_archive_flag_spec"; then | |
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" | |
+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $… | |
+ else | |
+ gentop="$output_objdir/${obj}x" | |
+ func_append generated " $gentop" | |
- if test -z "$files"; then | |
- if test -z "$dest"; then | |
- $echo "$modename: no file or destination specified" 1>&2 | |
- else | |
- $echo "$modename: you must specify a destination" 1>&2 | |
+ func_extract_archives $gentop $convenience | |
+ reload_conv_objs="$reload_objs $func_extract_archives_result" | |
+ fi | |
fi | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
- # Strip any trailing slash from the destination. | |
- dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` | |
+ # If we're not building shared, we need to use non_pic_objs | |
+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" | |
- # Check to see that the destination is a directory. | |
- test -d "$dest" && isdir=yes | |
- if test "$isdir" = yes; then | |
- destdir="$dest" | |
- destname= | |
- else | |
- destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` | |
- test "X$destdir" = "X$dest" && destdir=. | |
- destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` | |
+ # Create the old-style object. | |
+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${… | |
- # Not a directory, so check to see that there is only one file specified. | |
- set dummy $files | |
- if test "$#" -gt 2; then | |
- $echo "$modename: \`$dest' is not a directory" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
+ output="$obj" | |
+ func_execute_cmds "$reload_cmds" 'exit $?' | |
+ | |
+ # Exit if we aren't doing a library object file. | |
+ if test -z "$libobj"; then | |
+ if test -n "$gentop"; then | |
+ func_show_eval '${RM}r "$gentop"' | |
+ fi | |
+ | |
+ exit $EXIT_SUCCESS | |
fi | |
- fi | |
- case $destdir in | |
- [\\/]* | [A-Za-z]:[\\/]*) ;; | |
- *) | |
- for file in $files; do | |
- case $file in | |
- *.lo) ;; | |
- *) | |
- $echo "$modename: \`$destdir' must be an absolute directory name" 1>… | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
- done | |
+ | |
+ if test "$build_libtool_libs" != yes; then | |
+ if test -n "$gentop"; then | |
+ func_show_eval '${RM}r "$gentop"' | |
+ fi | |
+ | |
+ # Create an invalid libtool object if no PIC, so that we don't | |
+ # accidentally link it into a program. | |
+ # $show "echo timestamp > $libobj" | |
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? | |
+ exit $EXIT_SUCCESS | |
+ fi | |
+ | |
+ if test -n "$pic_flag" || test "$pic_mode" != default; then | |
+ # Only do commands if we really have different PIC objects. | |
+ reload_objs="$libobjs $reload_conv_objs" | |
+ output="$libobj" | |
+ func_execute_cmds "$reload_cmds" 'exit $?' | |
+ fi | |
+ | |
+ if test -n "$gentop"; then | |
+ func_show_eval '${RM}r "$gentop"' | |
+ fi | |
+ | |
+ exit $EXIT_SUCCESS | |
;; | |
- esac | |
- # This variable tells wrapper scripts just to set variables rather | |
- # than running their programs. | |
- libtool_install_magic="$magic" | |
+ prog) | |
+ case $host in | |
+ *cygwin*) func_stripname '' '.exe' "$output" | |
+ output=$func_stripname_result.exe;; | |
+ esac | |
+ test -n "$vinfo" && \ | |
+ func_warning "\`-version-info' is ignored for programs" | |
- staticlibs= | |
- future_libdirs= | |
- current_libdirs= | |
- for file in $files; do | |
+ test -n "$release" && \ | |
+ func_warning "\`-release' is ignored for programs" | |
- # Do each installation. | |
- case $file in | |
- *.$libext) | |
- # Do the static libraries later. | |
- staticlibs="$staticlibs $file" | |
+ test "$preload" = yes \ | |
+ && test "$dlopen_support" = unknown \ | |
+ && test "$dlopen_self" = unknown \ | |
+ && test "$dlopen_self_static" = unknown && \ | |
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen supp… | |
+ | |
+ case $host in | |
+ *-*-rhapsody* | *-*-darwin1.[012]) | |
+ # On Rhapsody replace the C library is the System framework | |
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltf… | |
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.l… | |
;; | |
+ esac | |
- *.la) | |
- # Check to see that this really is a libtool archive. | |
- if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/nu… | |
- else | |
- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
+ case $host in | |
+ *-*-darwin*) | |
+ # Don't allow lazy linking, it breaks C++ global constructors | |
+ # But is supposedly fixed on 10.4 or later (yay!). | |
+ if test "$tagname" = CXX ; then | |
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in | |
+ 10.[0123]) | |
+ func_append compile_command " ${wl}-bind_at_load" | |
+ func_append finalize_command " ${wl}-bind_at_load" | |
+ ;; | |
+ esac | |
fi | |
+ # Time to change all our "foo.ltframework" stuff back to "-framework f… | |
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltfra… | |
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltf… | |
+ ;; | |
+ esac | |
- library_names= | |
- old_library= | |
- relink_command= | |
- # If there is no directory component, then add one. | |
- case $file in | |
- */* | *\\*) . $file ;; | |
- *) . ./$file ;; | |
+ | |
+ # move library search paths that coincide with paths to not yet | |
+ # installed libraries to the beginning of the library search list | |
+ new_libs= | |
+ for path in $notinst_path; do | |
+ case " $new_libs " in | |
+ *" -L$path/$objdir "*) ;; | |
+ *) | |
+ case " $compile_deplibs " in | |
+ *" -L$path/$objdir "*) | |
+ func_append new_libs " -L$path/$objdir" ;; | |
+ esac | |
+ ;; | |
+ esac | |
+ done | |
+ for deplib in $compile_deplibs; do | |
+ case $deplib in | |
+ -L*) | |
+ case " $new_libs " in | |
+ *" $deplib "*) ;; | |
+ *) func_append new_libs " $deplib" ;; | |
+ esac | |
+ ;; | |
+ *) func_append new_libs " $deplib" ;; | |
esac | |
+ done | |
+ compile_deplibs="$new_libs" | |
- # Add the libdir to current_libdirs if it is the destination. | |
- if test "X$destdir" = "X$libdir"; then | |
- case "$current_libdirs " in | |
+ | |
+ func_append compile_command " $compile_deplibs" | |
+ func_append finalize_command " $finalize_deplibs" | |
+ | |
+ if test -n "$rpath$xrpath"; then | |
+ # If the user specified any rpath flags, then add them. | |
+ for libdir in $rpath $xrpath; do | |
+ # This is the magic to use -rpath. | |
+ case "$finalize_rpath " in | |
*" $libdir "*) ;; | |
- *) current_libdirs="$current_libdirs $libdir" ;; | |
+ *) func_append finalize_rpath " $libdir" ;; | |
esac | |
- else | |
- # Note the libdir as a future libdir. | |
- case "$future_libdirs " in | |
+ done | |
+ fi | |
+ | |
+ # Now hardcode the library paths | |
+ rpath= | |
+ hardcode_libdirs= | |
+ for libdir in $compile_rpath $finalize_rpath; do | |
+ if test -n "$hardcode_libdir_flag_spec"; then | |
+ if test -n "$hardcode_libdir_separator"; then | |
+ if test -z "$hardcode_libdirs"; then | |
+ hardcode_libdirs="$libdir" | |
+ else | |
+ # Just accumulate the unique libdirs. | |
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir… | |
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |
+ ;; | |
+ *) | |
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdi… | |
+ ;; | |
+ esac | |
+ fi | |
+ else | |
+ eval flag=\"$hardcode_libdir_flag_spec\" | |
+ func_append rpath " $flag" | |
+ fi | |
+ elif test -n "$runpath_var"; then | |
+ case "$perm_rpath " in | |
*" $libdir "*) ;; | |
- *) future_libdirs="$future_libdirs $libdir" ;; | |
+ *) func_append perm_rpath " $libdir" ;; | |
esac | |
fi | |
+ case $host in | |
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | |
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` | |
+ case :$dllsearchpath: in | |
+ *":$libdir:"*) ;; | |
+ ::) dllsearchpath=$libdir;; | |
+ *) func_append dllsearchpath ":$libdir";; | |
+ esac | |
+ case :$dllsearchpath: in | |
+ *":$testbindir:"*) ;; | |
+ ::) dllsearchpath=$testbindir;; | |
+ *) func_append dllsearchpath ":$testbindir";; | |
+ esac | |
+ ;; | |
+ esac | |
+ done | |
+ # Substitute the hardcoded libdirs into the rpath. | |
+ if test -n "$hardcode_libdir_separator" && | |
+ test -n "$hardcode_libdirs"; then | |
+ libdir="$hardcode_libdirs" | |
+ eval rpath=\" $hardcode_libdir_flag_spec\" | |
+ fi | |
+ compile_rpath="$rpath" | |
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ | |
- test "X$dir" = "X$file/" && dir= | |
- dir="$dir$objdir" | |
- | |
- if test -n "$relink_command"; then | |
- # Determine the prefix the user has applied to our future dir. | |
- inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` | |
- | |
- # 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. | |
- if test "$inst_prefix_dir" = "$destdir"; then | |
- $echo "$modename: error: cannot install \`$file' to a directory no… | |
- exit $EXIT_FAILURE | |
- fi | |
- | |
- 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… | |
- else | |
- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir… | |
- fi | |
- | |
- $echo "$modename: warning: relinking \`$file'" 1>&2 | |
- $show "$relink_command" | |
- if $run eval "$relink_command"; then : | |
+ rpath= | |
+ hardcode_libdirs= | |
+ for libdir in $finalize_rpath; do | |
+ if test -n "$hardcode_libdir_flag_spec"; then | |
+ if test -n "$hardcode_libdir_separator"; then | |
+ if test -z "$hardcode_libdirs"; then | |
+ hardcode_libdirs="$libdir" | |
+ else | |
+ # Just accumulate the unique libdirs. | |
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir… | |
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) | |
+ ;; | |
+ *) | |
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdi… | |
+ ;; | |
+ esac | |
+ fi | |
else | |
- $echo "$modename: error: relink \`$file' with the above command be… | |
- exit $EXIT_FAILURE | |
+ eval flag=\"$hardcode_libdir_flag_spec\" | |
+ func_append rpath " $flag" | |
fi | |
+ elif test -n "$runpath_var"; then | |
+ case "$finalize_perm_rpath " in | |
+ *" $libdir "*) ;; | |
+ *) func_append finalize_perm_rpath " $libdir" ;; | |
+ esac | |
fi | |
+ done | |
+ # Substitute the hardcoded libdirs into the rpath. | |
+ if test -n "$hardcode_libdir_separator" && | |
+ test -n "$hardcode_libdirs"; then | |
+ libdir="$hardcode_libdirs" | |
+ eval rpath=\" $hardcode_libdir_flag_spec\" | |
+ fi | |
+ finalize_rpath="$rpath" | |
- # See the names of the shared library. | |
- set dummy $library_names | |
- if test -n "$2"; then | |
- realname="$2" | |
- shift | |
- shift | |
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then | |
+ # Transform all the library objects into standard objects. | |
+ compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $N… | |
+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | … | |
+ fi | |
- srcname="$realname" | |
- test -n "$relink_command" && srcname="$realname"T | |
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no" | |
- # Install the shared library and build the symlinks. | |
- $show "$install_prog $dir/$srcname $destdir/$realname" | |
- $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? | |
- if test -n "$stripme" && test -n "$striplib"; then | |
- $show "$striplib $destdir/$realname" | |
- $run eval "$striplib $destdir/$realname" || exit $? | |
- fi | |
+ # template prelinking step | |
+ if test -n "$prelink_cmds"; then | |
+ func_execute_cmds "$prelink_cmds" 'exit $?' | |
+ fi | |
- if test "$#" -gt 0; then | |
- # Delete the old symlinks, and create new ones. | |
- for linkname | |
- do | |
- if test "$linkname" != "$realname"; then | |
- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkn… | |
- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $l… | |
- fi | |
- done | |
- fi | |
+ wrappers_required=yes | |
+ case $host in | |
+ *cegcc* | *mingw32ce*) | |
+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compili… | |
+ wrappers_required=no | |
+ ;; | |
+ *cygwin* | *mingw* ) | |
+ if test "$build_libtool_libs" != yes; then | |
+ wrappers_required=no | |
+ fi | |
+ ;; | |
+ *) | |
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then | |
+ wrappers_required=no | |
+ fi | |
+ ;; | |
+ esac | |
+ if test "$wrappers_required" = no; then | |
+ # Replace the output file specification. | |
+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output… | |
+ link_command="$compile_command$compile_rpath" | |
- # Do each command in the postinstall commands. | |
- lib="$destdir/$realname" | |
- cmds=$postinstall_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
+ # We have no uninstalled library dependencies, so finalize right now. | |
+ exit_status=0 | |
+ func_show_eval "$link_command" 'exit_status=$?' | |
+ | |
+ if test -n "$postlink_cmds"; then | |
+ func_to_tool_file "$output" | |
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%… | |
+ func_execute_cmds "$postlink_cmds" 'exit $?' | |
fi | |
- # Install the pseudo-library for information purposes. | |
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |
- instname="$dir/$name"i | |
- $show "$install_prog $instname $destdir/$name" | |
- $run eval "$install_prog $instname $destdir/$name" || exit $? | |
+ # Delete the generated files. | |
+ if test -f "$output_objdir/${outputname}S.${objext}"; then | |
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' | |
+ fi | |
- # Maybe install the static library, too. | |
- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" | |
- ;; | |
+ exit $exit_status | |
+ fi | |
- *.lo) | |
- # Install (i.e. copy) a libtool object. | |
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then | |
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpat… | |
+ fi | |
+ if test -n "$finalize_shlibpath"; then | |
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var… | |
+ fi | |
- # Figure out destination file name, if it wasn't already specified. | |
- if test -n "$destname"; then | |
- destfile="$destdir/$destname" | |
- else | |
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |
- destfile="$destdir/$destfile" | |
+ compile_var= | |
+ finalize_var= | |
+ if test -n "$runpath_var"; then | |
+ if test -n "$perm_rpath"; then | |
+ # We should set the runpath_var. | |
+ rpath= | |
+ for dir in $perm_rpath; do | |
+ func_append rpath "$dir:" | |
+ done | |
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" " | |
fi | |
- | |
- # Deduce the name of the destination old-style object file. | |
- case $destfile in | |
- *.lo) | |
- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` | |
- ;; | |
- *.$objext) | |
- staticdest="$destfile" | |
- destfile= | |
- ;; | |
- *) | |
- $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
- | |
- # Install the libtool object if requested. | |
- if test -n "$destfile"; then | |
- $show "$install_prog $file $destfile" | |
- $run eval "$install_prog $file $destfile" || exit $? | |
+ if test -n "$finalize_perm_rpath"; then | |
+ # We should set the runpath_var. | |
+ rpath= | |
+ for dir in $finalize_perm_rpath; do | |
+ func_append rpath "$dir:" | |
+ done | |
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " | |
fi | |
+ fi | |
- # Install the old object if enabled. | |
- if test "$build_old_libs" = yes; then | |
- # Deduce the name of the old-style object file. | |
- staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` | |
+ if test "$no_install" = yes; then | |
+ # We don't need to create a wrapper script. | |
+ link_command="$compile_var$compile_command$compile_rpath" | |
+ # Replace the output file specification. | |
+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` | |
+ # Delete the old output file. | |
+ $opt_dry_run || $RM $output | |
+ # Link the executable and exit | |
+ func_show_eval "$link_command" 'exit $?' | |
- $show "$install_prog $staticobj $staticdest" | |
- $run eval "$install_prog \$staticobj \$staticdest" || exit $? | |
+ if test -n "$postlink_cmds"; then | |
+ func_to_tool_file "$output" | |
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%… | |
+ func_execute_cmds "$postlink_cmds" 'exit $?' | |
fi | |
+ | |
exit $EXIT_SUCCESS | |
- ;; | |
+ fi | |
- *) | |
- # Figure out destination file name, if it wasn't already specified. | |
- if test -n "$destname"; then | |
- destfile="$destdir/$destname" | |
+ if test "$hardcode_action" = relink; then | |
+ # Fast installation is not supported | |
+ link_command="$compile_var$compile_command$compile_rpath" | |
+ relink_command="$finalize_var$finalize_command$finalize_rpath" | |
+ | |
+ func_warning "this platform does not like uninstalled shared libraries" | |
+ func_warning "\`$output' will be relinked during installation" | |
+ else | |
+ if test "$fast_install" != no; then | |
+ link_command="$finalize_var$compile_command$finalize_rpath" | |
+ if test "$fast_install" = yes; then | |
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath"… | |
+ else | |
+ # fast_install is set to needless | |
+ relink_command= | |
+ fi | |
else | |
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |
- destfile="$destdir/$destfile" | |
+ link_command="$compile_var$compile_command$compile_rpath" | |
+ relink_command="$finalize_var$finalize_command$finalize_rpath" | |
fi | |
+ 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 | |
- file=`$echo $file|${SED} 's,.exe$,,'` | |
- stripped_ext=".exe" | |
- fi | |
- ;; | |
- esac | |
- | |
- # Do a test to see if this is really a libtool program. | |
- case $host in | |
- *cygwin*|*mingw*) | |
- wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` | |
- ;; | |
- *) | |
- wrapper=$file | |
- ;; | |
- esac | |
- if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/… | |
- notinst_deplibs= | |
- relink_command= | |
+ # Replace the output file specification. | |
+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/… | |
- # To insure that "foo" is sourced, and not "foo.exe", | |
- # finese the cygwin/MSYS system by explicitly sourcing "foo." | |
- # which disallows the automatic-append-.exe behavior. | |
- case $build in | |
- *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; | |
- *) wrapperdot=${wrapper} ;; | |
- esac | |
- # If there is no directory component, then add one. | |
- case $file in | |
- */* | *\\*) . ${wrapperdot} ;; | |
- *) . ./${wrapperdot} ;; | |
- esac | |
+ # Delete the old output files. | |
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt… | |
- # Check the variables that should have been set. | |
- if test -z "$notinst_deplibs"; then | |
- $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ func_show_eval "$link_command" 'exit $?' | |
- finalize=yes | |
- for lib in $notinst_deplibs; do | |
- # Check to see that each library is installed. | |
- libdir= | |
- if test -f "$lib"; then | |
- # If there is no directory component, then add one. | |
- case $lib in | |
- */* | *\\*) . $lib ;; | |
- *) . ./$lib ;; | |
- esac | |
- fi | |
- libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### tests… | |
- if test -n "$libdir" && test ! -f "$libfile"; then | |
- $echo "$modename: warning: \`$lib' has not been installed in \`$… | |
- finalize=no | |
- fi | |
- done | |
+ if test -n "$postlink_cmds"; then | |
+ func_to_tool_file "$output_objdir/$outputname" | |
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"… | |
+ func_execute_cmds "$postlink_cmds" 'exit $?' | |
+ fi | |
- relink_command= | |
- # To insure that "foo" is sourced, and not "foo.exe", | |
- # finese the cygwin/MSYS system by explicitly sourcing "foo." | |
- # which disallows the automatic-append-.exe behavior. | |
- case $build in | |
- *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; | |
- *) wrapperdot=${wrapper} ;; | |
- esac | |
- # If there is no directory component, then add one. | |
- case $file in | |
- */* | *\\*) . ${wrapperdot} ;; | |
- *) . ./${wrapperdot} ;; | |
- esac | |
+ # Now create the wrapper script. | |
+ func_verbose "creating $output" | |
- outputname= | |
- if test "$fast_install" = no && test -n "$relink_command"; then | |
- if test "$finalize" = yes && test -z "$run"; then | |
- tmpdir="/tmp" | |
- test -n "$TMPDIR" && tmpdir="$TMPDIR" | |
- tmpdir="$tmpdir/libtool-$$" | |
- save_umask=`umask` | |
- umask 0077 | |
- if $mkdir "$tmpdir"; then | |
- umask $save_umask | |
- else | |
- umask $save_umask | |
- $echo "$modename: error: cannot create temporary directory \`$… | |
- continue | |
- fi | |
- file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` | |
- outputname="$tmpdir/$file" | |
- # Replace the output file specification. | |
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%… | |
+ # Quote the relink command for shipping. | |
+ if test -n "$relink_command"; then | |
+ # Preserve any variables that may affect compiler behavior | |
+ for var in $variables_saved_for_relink; do | |
+ if eval test -z \"\${$var+set}\"; then | |
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { … | |
+ elif eval var_value=\$$var; test -z "$var_value"; then | |
+ relink_command="$var=; export $var; $relink_command" | |
+ else | |
+ func_quote_for_eval "$var_value" | |
+ relink_command="$var=$func_quote_for_eval_result; export $var; $re… | |
+ fi | |
+ done | |
+ relink_command="(cd `pwd`; $relink_command)" | |
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` | |
+ fi | |
- $show "$relink_command" | |
- if $run eval "$relink_command"; then : | |
+ # Only actually do things if not in dry run mode. | |
+ $opt_dry_run || { | |
+ # win32 will think the script is a binary if it has | |
+ # a .exe suffix, so we strip it off here. | |
+ case $output in | |
+ *.exe) func_stripname '' '.exe' "$output" | |
+ output=$func_stripname_result ;; | |
+ esac | |
+ # test for cygwin because mv fails w/o .exe extensions | |
+ case $host in | |
+ *cygwin*) | |
+ exeext=.exe | |
+ func_stripname '' '.exe' "$outputname" | |
+ outputname=$func_stripname_result ;; | |
+ *) exeext= ;; | |
+ esac | |
+ case $host in | |
+ *cygwin* | *mingw* ) | |
+ func_dirname_and_basename "$output" "" "." | |
+ output_name=$func_basename_result | |
+ output_path=$func_dirname_result | |
+ cwrappersource="$output_path/$objdir/lt-$output_name.c" | |
+ cwrapper="$output_path/$output_name.exe" | |
+ $RM $cwrappersource $cwrapper | |
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 | |
+ | |
+ func_emit_cwrapperexe_src > $cwrappersource | |
+ | |
+ # The wrapper executable is built using the $host compiler, | |
+ # because it contains $host paths and files. If cross- | |
+ # compiling, it, like the target executable, must be | |
+ # executed on the $host or under an emulation environment. | |
+ $opt_dry_run || { | |
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource | |
+ $STRIP $cwrapper | |
+ } | |
+ | |
+ # Now, create the wrapper script for func_source use: | |
+ func_ltwrapper_scriptname $cwrapper | |
+ $RM $func_ltwrapper_scriptname_result | |
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1… | |
+ $opt_dry_run || { | |
+ # note: this script will not be executed, so do not chmod. | |
+ if test "x$build" = "x$host" ; then | |
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result | |
else | |
- $echo "$modename: error: relink \`$file' with the above comman… | |
- ${rm}r "$tmpdir" | |
- continue | |
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result | |
fi | |
- file="$outputname" | |
- else | |
- $echo "$modename: warning: cannot relink \`$file'" 1>&2 | |
- fi | |
- else | |
- # Install the binary that we compiled earlier. | |
- file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir… | |
- fi | |
- fi | |
+ } | |
+ ;; | |
+ * ) | |
+ $RM $output | |
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 | |
- # remove .exe since cygwin /usr/bin/install will append another | |
- # one anyways | |
- case $install_prog,$host in | |
- */usr/bin/install*,*cygwin*) | |
- case $file:$destfile in | |
- *.exe:*.exe) | |
- # this is ok | |
- ;; | |
- *.exe:*) | |
- destfile=$destfile.exe | |
- ;; | |
- *:*.exe) | |
- destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` | |
- ;; | |
- esac | |
+ func_emit_wrapper no > $output | |
+ chmod +x $output | |
;; | |
esac | |
- $show "$install_prog$stripme $file $destfile" | |
- $run eval "$install_prog\$stripme \$file \$destfile" || exit $? | |
- test -n "$outputname" && ${rm}r "$tmpdir" | |
- ;; | |
- esac | |
- done | |
- | |
- for file in $staticlibs; do | |
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |
- | |
- # Set up the ranlib parameters. | |
- oldlib="$destdir/$name" | |
+ } | |
+ exit $EXIT_SUCCESS | |
+ ;; | |
+ esac | |
- $show "$install_prog $file $oldlib" | |
- $run eval "$install_prog \$file \$oldlib" || exit $? | |
+ # See if we need to build an old-fashioned archive. | |
+ for oldlib in $oldlibs; do | |
- if test -n "$stripme" && test -n "$old_striplib"; then | |
- $show "$old_striplib $oldlib" | |
- $run eval "$old_striplib $oldlib" || exit $? | |
+ if test "$build_libtool_libs" = convenience; then | |
+ oldobjs="$libobjs_save $symfileobj" | |
+ addlibs="$convenience" | |
+ build_libtool_libs=no | |
+ else | |
+ if test "$build_libtool_libs" = module; then | |
+ oldobjs="$libobjs_save" | |
+ build_libtool_libs=no | |
+ else | |
+ oldobjs="$old_deplibs $non_pic_objects" | |
+ if test "$preload" = yes && test -f "$symfileobj"; then | |
+ func_append oldobjs " $symfileobj" | |
+ fi | |
+ fi | |
+ addlibs="$old_convenience" | |
fi | |
- # Do each command in the postinstall commands. | |
- cmds=$old_postinstall_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || exit $? | |
- done | |
- IFS="$save_ifs" | |
- done | |
+ if test -n "$addlibs"; then | |
+ gentop="$output_objdir/${outputname}x" | |
+ func_append generated " $gentop" | |
- if test -n "$future_libdirs"; then | |
- $echo "$modename: warning: remember to run \`$progname --finish$future_l… | |
- fi | |
+ func_extract_archives $gentop $addlibs | |
+ func_append oldobjs " $func_extract_archives_result" | |
+ fi | |
- if test -n "$current_libdirs"; then | |
- # Maybe just do a dry run. | |
- test -n "$run" && current_libdirs=" -n$current_libdirs" | |
- exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' | |
- else | |
- exit $EXIT_SUCCESS | |
- fi | |
- ;; | |
+ # Do each command in the archive commands. | |
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = … | |
+ cmds=$old_archive_from_new_cmds | |
+ else | |
- # libtool finish mode | |
- finish) | |
- modename="$modename: finish" | |
- libdirs="$nonopt" | |
- admincmds= | |
+ # Add any objects from preloaded convenience libraries | |
+ if test -n "$dlprefiles"; then | |
+ gentop="$output_objdir/${outputname}x" | |
+ func_append generated " $gentop" | |
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then | |
- for dir | |
- do | |
- libdirs="$libdirs $dir" | |
- done | |
+ func_extract_archives $gentop $dlprefiles | |
+ func_append oldobjs " $func_extract_archives_result" | |
+ fi | |
- for libdir in $libdirs; do | |
- if test -n "$finish_cmds"; then | |
- # Do each command in the finish commands. | |
- cmds=$finish_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" || admincmds="$admincmds | |
- $cmd" | |
+ # POSIX demands no paths to be encoded in archives. We have | |
+ # to avoid creating archives with duplicate basenames if we | |
+ # might have to extract them afterwards, e.g., when creating a | |
+ # static archive out of a convenience library, or when linking | |
+ # the entirety of a libtool archive into another (currently | |
+ # not supported by libtool). | |
+ if (for obj in $oldobjs | |
+ do | |
+ func_basename "$obj" | |
+ $ECHO "$func_basename_result" | |
+ done | sort | sort -uc >/dev/null 2>&1); then | |
+ : | |
+ else | |
+ echo "copying selected object files to avoid basename conflicts..." | |
+ gentop="$output_objdir/${outputname}x" | |
+ func_append generated " $gentop" | |
+ func_mkdir_p "$gentop" | |
+ save_oldobjs=$oldobjs | |
+ oldobjs= | |
+ counter=1 | |
+ for obj in $save_oldobjs | |
+ do | |
+ func_basename "$obj" | |
+ objbase="$func_basename_result" | |
+ case " $oldobjs " in | |
+ " ") oldobjs=$obj ;; | |
+ *[\ /]"$objbase "*) | |
+ while :; do | |
+ # Make sure we don't pick an alternate name that also | |
+ # overlaps. | |
+ newobj=lt$counter-$objbase | |
+ func_arith $counter + 1 | |
+ counter=$func_arith_result | |
+ case " $oldobjs " in | |
+ *[\ /]"$newobj "*) ;; | |
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;; | |
+ esac | |
+ done | |
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newo… | |
+ func_append oldobjs " $gentop/$newobj" | |
+ ;; | |
+ *) func_append oldobjs " $obj" ;; | |
+ esac | |
done | |
- IFS="$save_ifs" | |
fi | |
- if test -n "$finish_eval"; then | |
- # Do the single finish_eval. | |
- eval cmds=\"$finish_eval\" | |
- $run eval "$cmds" || admincmds="$admincmds | |
- $cmds" | |
- fi | |
- done | |
- fi | |
- | |
- # Exit here if they wanted silent mode. | |
- test "$show" = : && exit $EXIT_SUCCESS | |
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 | |
+ tool_oldlib=$func_to_tool_file_result | |
+ eval cmds=\"$old_archive_cmds\" | |
- $echo "-------------------------------------------------------------------… | |
- $echo "Libraries have been installed in:" | |
- for libdir in $libdirs; do | |
- $echo " $libdir" | |
+ func_len " $cmds" | |
+ len=$func_len_result | |
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then | |
+ cmds=$old_archive_cmds | |
+ elif test -n "$archiver_list_spec"; then | |
+ func_verbose "using command file archive linking..." | |
+ for obj in $oldobjs | |
+ do | |
+ func_to_tool_file "$obj" | |
+ $ECHO "$func_to_tool_file_result" | |
+ done > $output_objdir/$libname.libcmd | |
+ func_to_tool_file "$output_objdir/$libname.libcmd" | |
+ oldobjs=" $archiver_list_spec$func_to_tool_file_result" | |
+ cmds=$old_archive_cmds | |
+ else | |
+ # the command line is too long to link in one step, link in parts | |
+ func_verbose "using piecewise archive linking..." | |
+ save_RANLIB=$RANLIB | |
+ RANLIB=: | |
+ objlist= | |
+ concat_cmds= | |
+ save_oldobjs=$oldobjs | |
+ oldobjs= | |
+ # Is there a better way of finding the last object in the list? | |
+ for obj in $save_oldobjs | |
+ do | |
+ last_oldobj=$obj | |
+ done | |
+ eval test_cmds=\"$old_archive_cmds\" | |
+ func_len " $test_cmds" | |
+ len0=$func_len_result | |
+ len=$len0 | |
+ for obj in $save_oldobjs | |
+ do | |
+ func_len " $obj" | |
+ func_arith $len + $func_len_result | |
+ len=$func_arith_result | |
+ func_append objlist " $obj" | |
+ if test "$len" -lt "$max_cmd_len"; then | |
+ : | |
+ else | |
+ # the above command should be used before it gets too long | |
+ oldobjs=$objlist | |
+ if test "$obj" = "$last_oldobj" ; then | |
+ RANLIB=$save_RANLIB | |
+ fi | |
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" | |
+ objlist= | |
+ len=$len0 | |
+ fi | |
+ done | |
+ RANLIB=$save_RANLIB | |
+ oldobjs=$objlist | |
+ if test "X$oldobjs" = "X" ; then | |
+ eval cmds=\"\$concat_cmds\" | |
+ else | |
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" | |
+ fi | |
+ fi | |
+ fi | |
+ func_execute_cmds "$cmds" 'exit $?' | |
done | |
- $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.co… | |
- fi | |
- $echo | |
- $echo "See any operating system documentation about shared libraries for" | |
- $echo "more information, such as the ld(1) and ld.so(8) manual pages." | |
- $echo "-------------------------------------------------------------------… | |
- exit $EXIT_SUCCESS | |
- ;; | |
- | |
- # libtool execute mode | |
- execute) | |
- modename="$modename: execute" | |
- # The first argument is the command name. | |
- cmd="$nonopt" | |
- if test -z "$cmd"; then | |
- $echo "$modename: you must specify a COMMAND" 1>&2 | |
- $echo "$help" | |
- exit $EXIT_FAILURE | |
- fi | |
+ test -n "$generated" && \ | |
+ func_show_eval "${RM}r$generated" | |
- # Handle -dlopen flags immediately. | |
- for file in $execute_dlfiles; do | |
- if test ! -f "$file"; then | |
- $echo "$modename: \`$file' is not a file" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ # Now create the libtool archive. | |
+ case $output in | |
+ *.la) | |
+ old_library= | |
+ test "$build_old_libs" = yes && old_library="$libname.$libext" | |
+ func_verbose "creating $output" | |
- dir= | |
- case $file in | |
- *.la) | |
- # Check to see that this really is a libtool archive. | |
- if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/nu… | |
+ # Preserve any variables that may affect compiler behavior | |
+ for var in $variables_saved_for_relink; do | |
+ if eval test -z \"\${$var+set}\"; then | |
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $v… | |
+ elif eval var_value=\$$var; test -z "$var_value"; then | |
+ relink_command="$var=; export $var; $relink_command" | |
else | |
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
+ func_quote_for_eval "$var_value" | |
+ relink_command="$var=$func_quote_for_eval_result; export $var; $reli… | |
fi | |
+ done | |
+ # Quote the link command for shipping. | |
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink… | |
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` | |
+ if test "$hardcode_automatic" = yes ; then | |
+ relink_command= | |
+ fi | |
- # Read the libtool library. | |
- dlname= | |
- library_names= | |
+ # Only create the output if not a dry run. | |
+ $opt_dry_run || { | |
+ for installed in no yes; do | |
+ if test "$installed" = yes; then | |
+ if test -z "$install_libdir"; then | |
+ break | |
+ fi | |
+ output="$output_objdir/$outputname"i | |
+ # Replace all uninstalled libtool libraries with the installed ones | |
+ newdependency_libs= | |
+ for deplib in $dependency_libs; do | |
+ case $deplib in | |
+ *.la) | |
+ func_basename "$deplib" | |
+ name="$func_basename_result" | |
+ func_resolve_sysroot "$deplib" | |
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resol… | |
+ test -z "$libdir" && \ | |
+ func_fatal_error "\`$deplib' is not a valid libtool archive" | |
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" | |
+ ;; | |
+ -L*) | |
+ func_stripname -L '' "$deplib" | |
+ func_replace_sysroot "$func_stripname_result" | |
+ func_append newdependency_libs " -L$func_replace_sysroot_resul… | |
+ ;; | |
+ -R*) | |
+ func_stripname -R '' "$deplib" | |
+ func_replace_sysroot "$func_stripname_result" | |
+ func_append newdependency_libs " -R$func_replace_sysroot_resul… | |
+ ;; | |
+ *) func_append newdependency_libs " $deplib" ;; | |
+ esac | |
+ done | |
+ dependency_libs="$newdependency_libs" | |
+ newdlfiles= | |
+ | |
+ for lib in $dlfiles; do | |
+ case $lib in | |
+ *.la) | |
+ func_basename "$lib" | |
+ name="$func_basename_result" | |
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |
+ test -z "$libdir" && \ | |
+ func_fatal_error "\`$lib' is not a valid libtool archive" | |
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" | |
+ ;; | |
+ *) func_append newdlfiles " $lib" ;; | |
+ esac | |
+ done | |
+ dlfiles="$newdlfiles" | |
+ newdlprefiles= | |
+ for lib in $dlprefiles; do | |
+ case $lib in | |
+ *.la) | |
+ # Only pass preopened files to the pseudo-archive (for | |
+ # eventual linking with the app. that links it) if we | |
+ # didn't already link the preopened objects directly into | |
+ # the library: | |
+ func_basename "$lib" | |
+ name="$func_basename_result" | |
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |
+ test -z "$libdir" && \ | |
+ func_fatal_error "\`$lib' is not a valid libtool archive" | |
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" | |
+ ;; | |
+ esac | |
+ done | |
+ dlprefiles="$newdlprefiles" | |
+ else | |
+ newdlfiles= | |
+ for lib in $dlfiles; do | |
+ case $lib in | |
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | |
+ *) abs=`pwd`"/$lib" ;; | |
+ esac | |
+ func_append newdlfiles " $abs" | |
+ done | |
+ dlfiles="$newdlfiles" | |
+ newdlprefiles= | |
+ for lib in $dlprefiles; do | |
+ case $lib in | |
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | |
+ *) abs=`pwd`"/$lib" ;; | |
+ esac | |
+ func_append newdlprefiles " $abs" | |
+ done | |
+ dlprefiles="$newdlprefiles" | |
+ fi | |
+ $RM $output | |
+ # place dlname in correct position for cygwin | |
+ # In fact, it would be nice if we could use this code for all target | |
+ # systems that can't hard-code library paths into their executables | |
+ # and that have no shared library path variable independent of PATH, | |
+ # but it turns out we can't easily determine that from inspecting | |
+ # libtool variables, so we have to hard-code the OSs to which it | |
+ # applies here; at the moment, that means platforms that use the PE | |
+ # object format with DLL files. See the long comment at the top of | |
+ # tests/bindir.at for full details. | |
+ tdlname=$dlname | |
+ case $host,$output,$installed,$module,$dlname in | |
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*… | |
+ # If a -bindir argument was supplied, place the dll there. | |
+ if test "x$bindir" != x ; | |
+ then | |
+ func_relative_path "$install_libdir" "$bindir" | |
+ tdlname=$func_relative_path_result$dlname | |
+ else | |
+ # Otherwise fall back on heuristic. | |
+ tdlname=../bin/$dlname | |
+ fi | |
+ ;; | |
+ esac | |
+ $ECHO > $output "\ | |
+# $outputname - a libtool library file | |
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | |
+# | |
+# Please DO NOT delete this file! | |
+# It is necessary for linking the library. | |
- # If there is no directory component, then add one. | |
- case $file in | |
- */* | *\\*) . $file ;; | |
- *) . ./$file ;; | |
- esac | |
+# The name that we can dlopen(3). | |
+dlname='$tdlname' | |
- # Skip this library if it cannot be dlopened. | |
- if test -z "$dlname"; then | |
- # Warn if it was a shared library. | |
- test -n "$library_names" && $echo "$modename: warning: \`$file' was … | |
- continue | |
- fi | |
+# Names of this library. | |
+library_names='$library_names' | |
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` | |
- test "X$dir" = "X$file" && dir=. | |
+# The name of the static archive. | |
+old_library='$old_library' | |
- if test -f "$dir/$objdir/$dlname"; then | |
- dir="$dir/$objdir" | |
- else | |
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdi… | |
- exit $EXIT_FAILURE | |
- fi | |
- ;; | |
+# Linker flags that can not go in dependency_libs. | |
+inherited_linker_flags='$new_inherited_linker_flags' | |
- *.lo) | |
- # Just add the directory containing the .lo file. | |
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` | |
- test "X$dir" = "X$file" && dir=. | |
- ;; | |
+# Libraries that this one depends upon. | |
+dependency_libs='$dependency_libs' | |
- *) | |
- $echo "$modename: warning \`-dlopen' is ignored for non-libtool librar… | |
- continue | |
- ;; | |
- esac | |
+# Names of additional weak libraries provided by this library | |
+weak_library_names='$weak_libs' | |
- # Get the absolute pathname. | |
- absdir=`cd "$dir" && pwd` | |
- test -n "$absdir" && dir="$absdir" | |
+# Version information for $libname. | |
+current=$current | |
+age=$age | |
+revision=$revision | |
- # 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 | |
+# Is this an already installed library? | |
+installed=$installed | |
- # This variable tells wrapper scripts just to set shlibpath_var | |
- # rather than running their programs. | |
- libtool_execute_magic="$magic" | |
+# Should we warn about portability when linking against -modules? | |
+shouldnotlink=$module | |
- # Check if any of the arguments is a wrapper script. | |
- args= | |
- for file | |
- do | |
- case $file in | |
- -*) ;; | |
- *) | |
- # Do a test to see if this is really a libtool program. | |
- if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/nu… | |
- # If there is no directory component, then add one. | |
- case $file in | |
- */* | *\\*) . $file ;; | |
- *) . ./$file ;; | |
- esac | |
+# Files to dlopen/dlpreopen | |
+dlopen='$dlfiles' | |
+dlpreopen='$dlprefiles' | |
- # Transform arg to wrapped name. | |
- file="$progdir/$program" | |
- fi | |
- ;; | |
- esac | |
- # Quote arguments (to preserve shell metacharacters). | |
- file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` | |
- args="$args \"$file\"" | |
- done | |
+# Directory that this library needs to be installed in: | |
+libdir='$install_libdir'" | |
+ if test "$installed" = no && test "$need_relink" = yes; then | |
+ $ECHO >> $output "\ | |
+relink_command=\"$relink_command\"" | |
+ fi | |
+ done | |
+ } | |
- if test -z "$run"; then | |
- if test -n "$shlibpath_var"; then | |
- # Export the shlibpath_var. | |
- eval "export $shlibpath_var" | |
- fi | |
+ # Do a symbolic link so that the libtool archive can be found in | |
+ # LD_LIBRARY_PATH before the program is installed. | |
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../… | |
+ ;; | |
+ esac | |
+ exit $EXIT_SUCCESS | |
+} | |
- # Restore saved environment variables | |
- if test "${save_LC_ALL+set}" = set; then | |
- LC_ALL="$save_LC_ALL"; export LC_ALL | |
- fi | |
- if test "${save_LANG+set}" = set; then | |
- LANG="$save_LANG"; export LANG | |
- fi | |
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } && | |
+ func_mode_link ${1+"$@"} | |
- # Now prepare to actually exec the command. | |
- exec_cmd="\$cmd$args" | |
- else | |
- # 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 | |
- fi | |
- ;; | |
- # libtool clean and uninstall mode | |
- clean | uninstall) | |
- modename="$modename: $mode" | |
- rm="$nonopt" | |
+# func_mode_uninstall arg... | |
+func_mode_uninstall () | |
+{ | |
+ $opt_debug | |
+ RM="$nonopt" | |
files= | |
rmforce= | |
exit_status=0 | |
t@@ -6089,44 +9454,41 @@ relink_command=\"$relink_command\"" | |
for arg | |
do | |
case $arg in | |
- -f) rm="$rm $arg"; rmforce=yes ;; | |
- -*) rm="$rm $arg" ;; | |
- *) files="$files $arg" ;; | |
+ -f) func_append RM " $arg"; rmforce=yes ;; | |
+ -*) func_append RM " $arg" ;; | |
+ *) func_append files " $arg" ;; | |
esac | |
done | |
- if test -z "$rm"; then | |
- $echo "$modename: you must specify an RM program" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
+ test -z "$RM" && \ | |
+ func_fatal_help "you must specify an RM program" | |
rmdirs= | |
- origobjdir="$objdir" | |
for file in $files; do | |
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` | |
- if test "X$dir" = "X$file"; then | |
- dir=. | |
- objdir="$origobjdir" | |
+ func_dirname "$file" "" "." | |
+ dir="$func_dirname_result" | |
+ if test "X$dir" = X.; then | |
+ odir="$objdir" | |
else | |
- objdir="$dir/$origobjdir" | |
+ odir="$dir/$objdir" | |
fi | |
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` | |
- test "$mode" = uninstall && objdir="$dir" | |
+ func_basename "$file" | |
+ name="$func_basename_result" | |
+ test "$opt_mode" = uninstall && odir="$dir" | |
- # Remember objdir for removal later, being careful to avoid duplicates | |
- if test "$mode" = clean; then | |
+ # Remember odir for removal later, being careful to avoid duplicates | |
+ if test "$opt_mode" = clean; then | |
case " $rmdirs " in | |
- *" $objdir "*) ;; | |
- *) rmdirs="$rmdirs $objdir" ;; | |
+ *" $odir "*) ;; | |
+ *) func_append rmdirs " $odir" ;; | |
esac | |
fi | |
# Don't error if the file doesn't exist and rm -f was used. | |
- if (test -L "$file") >/dev/null 2>&1 \ | |
- || (test -h "$file") >/dev/null 2>&1 \ | |
- || test -f "$file"; then | |
+ if { test -L "$file"; } >/dev/null 2>&1 || | |
+ { test -h "$file"; } >/dev/null 2>&1 || | |
+ test -f "$file"; then | |
: | |
elif test -d "$file"; then | |
exit_status=1 | |
t@@ -6140,335 +9502,130 @@ relink_command=\"$relink_command\"" | |
case $name in | |
*.la) | |
# Possibly a libtool archive, so verify it. | |
- if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/nu… | |
- . $dir/$name | |
+ if func_lalib_p "$file"; then | |
+ func_source $dir/$name | |
# Delete the libtool libraries and symlinks. | |
for n in $library_names; do | |
- rmfiles="$rmfiles $objdir/$n" | |
+ func_append rmfiles " $odir/$n" | |
done | |
- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" | |
- test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${na… | |
+ test -n "$old_library" && func_append rmfiles " $odir/$old_library" | |
- if test "$mode" = uninstall; then | |
+ case "$opt_mode" in | |
+ clean) | |
+ case " $library_names " in | |
+ *" $dlname "*) ;; | |
+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; | |
+ esac | |
+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${nam… | |
+ ;; | |
+ uninstall) | |
if test -n "$library_names"; then | |
# Do each command in the postuninstall commands. | |
- cmds=$postuninstall_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" | |
- if test "$?" -ne 0 && test "$rmforce" != yes; then | |
- exit_status=1 | |
- fi | |
- done | |
- IFS="$save_ifs" | |
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes |… | |
fi | |
if test -n "$old_library"; then | |
# Do each command in the old_postuninstall commands. | |
- cmds=$old_postuninstall_cmds | |
- save_ifs="$IFS"; IFS='~' | |
- for cmd in $cmds; do | |
- IFS="$save_ifs" | |
- eval cmd=\"$cmd\" | |
- $show "$cmd" | |
- $run eval "$cmd" | |
- if test "$?" -ne 0 && test "$rmforce" != yes; then | |
- exit_status=1 | |
- fi | |
- done | |
- IFS="$save_ifs" | |
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = y… | |
fi | |
# FIXME: should reinstall the best remaining shared library. | |
- fi | |
+ ;; | |
+ esac | |
fi | |
;; | |
*.lo) | |
# Possibly a libtool object, so verify it. | |
- if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/nu… | |
+ if func_lalib_p "$file"; then | |
# Read the .lo file | |
- . $dir/$name | |
+ func_source $dir/$name | |
# Add PIC object to the list of files to remove. | |
- if test -n "$pic_object" \ | |
- && test "$pic_object" != none; then | |
- rmfiles="$rmfiles $dir/$pic_object" | |
+ if test -n "$pic_object" && | |
+ test "$pic_object" != none; then | |
+ func_append rmfiles " $dir/$pic_object" | |
fi | |
# Add non-PIC object to the list of files to remove. | |
- if test -n "$non_pic_object" \ | |
- && test "$non_pic_object" != none; then | |
- rmfiles="$rmfiles $dir/$non_pic_object" | |
+ if test -n "$non_pic_object" && | |
+ test "$non_pic_object" != none; then | |
+ func_append rmfiles " $dir/$non_pic_object" | |
fi | |
fi | |
;; | |
*) | |
- if test "$mode" = clean ; then | |
+ if test "$opt_mode" = clean ; then | |
noexename=$name | |
case $file in | |
*.exe) | |
- file=`$echo $file|${SED} 's,.exe$,,'` | |
- noexename=`$echo $name|${SED} 's,.exe$,,'` | |
+ func_stripname '' '.exe' "$file" | |
+ file=$func_stripname_result | |
+ func_stripname '' '.exe' "$name" | |
+ noexename=$func_stripname_result | |
# $file with .exe has already been added to rmfiles, | |
# add $file without .exe | |
- rmfiles="$rmfiles $file" | |
+ func_append rmfiles " $file" | |
;; | |
esac | |
# Do a test to see if this is a libtool program. | |
- if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/… | |
- relink_command= | |
- . $dir/$noexename | |
+ if func_ltwrapper_p "$file"; then | |
+ if func_ltwrapper_executable_p "$file"; then | |
+ func_ltwrapper_scriptname "$file" | |
+ relink_command= | |
+ func_source $func_ltwrapper_scriptname_result | |
+ func_append rmfiles " $func_ltwrapper_scriptname_result" | |
+ else | |
+ relink_command= | |
+ func_source $dir/$noexename | |
+ fi | |
# note $name still contains .exe if it was in $file originally | |
# as does the version of $file that was added into $rmfiles | |
- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" | |
+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}" | |
if test "$fast_install" = yes && test -n "$relink_command"; then | |
- rmfiles="$rmfiles $objdir/lt-$name" | |
+ func_append rmfiles " $odir/lt-$name" | |
fi | |
if test "X$noexename" != "X$name" ; then | |
- rmfiles="$rmfiles $objdir/lt-${noexename}.c" | |
+ func_append rmfiles " $odir/lt-${noexename}.c" | |
fi | |
fi | |
fi | |
;; | |
esac | |
- $show "$rm $rmfiles" | |
- $run $rm $rmfiles || exit_status=1 | |
+ func_show_eval "$RM $rmfiles" 'exit_status=1' | |
done | |
- objdir="$origobjdir" | |
# Try to remove the ${objdir}s in the directories where we deleted files | |
for dir in $rmdirs; do | |
if test -d "$dir"; then | |
- $show "rmdir $dir" | |
- $run rmdir $dir >/dev/null 2>&1 | |
+ func_show_eval "rmdir $dir >/dev/null 2>&1" | |
fi | |
done | |
exit $exit_status | |
- ;; | |
+} | |
- "") | |
- $echo "$modename: you must specify a MODE" 1>&2 | |
- $echo "$generic_help" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
- esac | |
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && | |
+ func_mode_uninstall ${1+"$@"} | |
- if test -z "$exec_cmd"; then | |
- $echo "$modename: invalid operation mode \`$mode'" 1>&2 | |
- $echo "$generic_help" 1>&2 | |
- exit $EXIT_FAILURE | |
- fi | |
-fi # test -z "$show_help" | |
+test -z "$opt_mode" && { | |
+ help="$generic_help" | |
+ func_fatal_help "you must specify a MODE" | |
+} | |
+ | |
+test -z "$exec_cmd" && \ | |
+ func_fatal_help "invalid operation mode \`$opt_mode'" | |
if test -n "$exec_cmd"; then | |
- eval exec $exec_cmd | |
+ eval exec "$exec_cmd" | |
exit $EXIT_FAILURE | |
fi | |
-# We need to display help for each of the modes. | |
-case $mode in | |
-"") $echo \ | |
-"Usage: $modename [OPTION]... [MODE-ARG]... | |
- | |
-Provide generalized library-building support services. | |
- | |
- --config show all configuration variables | |
- --debug enable verbose shell tracing | |
--n, --dry-run display commands without modifying any files | |
- --features display basic configuration information and exit | |
- --finish same as \`--mode=finish' | |
- --help display this help message and exit | |
- --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] | |
- --quiet same as \`--silent' | |
- --silent don't print informational messages | |
- --tag=TAG use configuration variables from tag TAG | |
- --version print version information | |
- | |
-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. Try \`$modename --help --mode=MODE' for | |
-a more detailed description of MODE. | |
- | |
-Report bugs to <[email protected]>." | |
- exit $EXIT_SUCCESS | |
- ;; | |
- | |
-clean) | |
- $echo \ | |
-"Usage: $modename [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: $modename [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 | |
- -prefer-pic try to building PIC objects only | |
- -prefer-non-pic try to building non-PIC objects only | |
- -static always build a \`.o' file suitable for static linking | |
- | |
-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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only | |
-BSD-compatible install options are recognized)." | |
- ;; | |
- | |
-link) | |
- $echo \ | |
-"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... | |
+exit $exit_status | |
-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 | |
- -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 | |
- -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 | |
- -static do not do any dynamic linking of libtool libraries | |
- -version-info CURRENT[:REVISION[:AGE]] | |
- specify library version info [each variable defaults to 0] | |
- | |
-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: $modename [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." | |
- ;; | |
- | |
-*) | |
- $echo "$modename: invalid operation mode \`$mode'" 1>&2 | |
- $echo "$help" 1>&2 | |
- exit $EXIT_FAILURE | |
- ;; | |
-esac | |
- | |
-$echo | |
-$echo "Try \`$modename --help' for more information about other modes." | |
- | |
-exit $? | |
# The TAGs below are defined such that we never get into a situation | |
# in which we disable both kinds of libraries. Given conflicting | |
t@@ -6487,10 +9644,12 @@ build_old_libs=yes | |
# ### END LIBTOOL TAG CONFIG: disable-shared | |
# ### BEGIN LIBTOOL TAG CONFIG: disable-static | |
-build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esa… | |
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` | |
# ### END LIBTOOL TAG CONFIG: disable-static | |
# Local Variables: | |
# mode:shell-script | |
# sh-indentation:2 | |
# End: | |
+# vi:sw=2 | |
+ | |
diff --git a/m4/gettext.m4 b/m4/gettext.m4 | |
t@@ -1,5 +1,5 @@ | |
-# gettext.m4 serial 63 (gettext-0.18) | |
-dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. | |
+# gettext.m4 serial 66 (gettext-0.18.2) | |
+dnl Copyright (C) 1995-2013 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. | |
t@@ -35,7 +35,7 @@ dnl will be ignored. If NEEDSYMBOL is specified and is | |
dnl 'need-formatstring-macros', then GNU gettext implementations that don't | |
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. | |
dnl INTLDIR is used to find the intl libraries. If empty, | |
-dnl the value `$(top_builddir)/intl/' is used. | |
+dnl 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 | |
t@@ -97,7 +97,7 @@ AC_DEFUN([AM_GNU_GETTEXT], | |
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) | |
]) | |
- dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. | |
+ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. | |
gt_INTL_MACOSX | |
dnl Set USE_NLS. | |
t@@ -157,12 +157,18 @@ changequote([,])dnl | |
fi | |
AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], | |
- [AC_TRY_LINK([#include <libintl.h> | |
+ [AC_LINK_IFELSE( | |
+ [AC_LANG_PROGRAM( | |
+ [[ | |
+#include <libintl.h> | |
$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… | |
+extern int *_nl_domain_bindings; | |
+ ]], | |
+ [[ | |
+bindtextdomain ("", ""); | |
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain… | |
+ ]])], | |
[eval "$gt_func_gnugettext_libc=yes"], | |
[eval "$gt_func_gnugettext_libc=no"])]) | |
t@@ -183,35 +189,47 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_… | |
gt_save_LIBS="$LIBS" | |
LIBS="$LIBS $LIBINTL" | |
dnl Now see whether libintl exists and does not depend on libiconv. | |
- AC_TRY_LINK([#include <libintl.h> | |
+ AC_LINK_IFELSE( | |
+ [AC_LANG_PROGRAM( | |
+ [[ | |
+#include <libintl.h> | |
$gt_revision_test_code | |
extern int _nl_msg_cat_cntr; | |
extern | |
#ifdef __cplusplus | |
"C" | |
#endif | |
-const char *_nl_expand_alias (const char *);], | |
- [bindtextdomain ("", ""); | |
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand… | |
+const char *_nl_expand_alias (const char *); | |
+ ]], | |
+ [[ | |
+bindtextdomain ("", ""); | |
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand… | |
+ ]])], | |
[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" !… | |
LIBS="$LIBS $LIBICONV" | |
- AC_TRY_LINK([#include <libintl.h> | |
+ AC_LINK_IFELSE( | |
+ [AC_LANG_PROGRAM( | |
+ [[ | |
+#include <libintl.h> | |
$gt_revision_test_code | |
extern int _nl_msg_cat_cntr; | |
extern | |
#ifdef __cplusplus | |
"C" | |
#endif | |
-const char *_nl_expand_alias (const char *);], | |
- [bindtextdomain ("", ""); | |
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand… | |
- [LIBINTL="$LIBINTL $LIBICONV" | |
- LTLIBINTL="$LTLIBINTL $LTLIBICONV" | |
- eval "$gt_func_gnugettext_libintl=yes" | |
- ]) | |
+const char *_nl_expand_alias (const char *); | |
+ ]], | |
+ [[ | |
+bindtextdomain ("", ""); | |
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand… | |
+ ]])], | |
+ [LIBINTL="$LIBINTL $LIBICONV" | |
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV" | |
+ eval "$gt_func_gnugettext_libintl=yes" | |
+ ]) | |
fi | |
CPPFLAGS="$gt_save_CPPFLAGS" | |
LIBS="$gt_save_LIBS"]) | |
diff --git a/m4/iconv.m4 b/m4/iconv.m4 | |
t@@ -1,5 +1,5 @@ | |
-# iconv.m4 serial 11 (gettext-0.18.1) | |
-dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. | |
+# iconv.m4 serial 18 (gettext-0.18.2) | |
+dnl Copyright (C) 2000-2002, 2007-2013 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. | |
t@@ -30,27 +30,35 @@ AC_DEFUN([AM_ICONV_LINK], | |
dnl Add $INCICONV to CPPFLAGS before performing the following checks, | |
dnl because if the user has installed libiconv and not disabled its use | |
dnl via --without-libiconv-prefix, he wants to use it. The first | |
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. | |
+ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. | |
am_save_CPPFLAGS="$CPPFLAGS" | |
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) | |
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ | |
am_cv_func_iconv="no, consider installing GNU libiconv" | |
am_cv_lib_iconv=no | |
- AC_TRY_LINK([#include <stdlib.h> | |
-#include <iconv.h>], | |
- [iconv_t cd = iconv_open("",""); | |
- iconv(cd,NULL,NULL,NULL,NULL); | |
- iconv_close(cd);], | |
+ AC_LINK_IFELSE( | |
+ [AC_LANG_PROGRAM( | |
+ [[ | |
+#include <stdlib.h> | |
+#include <iconv.h> | |
+ ]], | |
+ [[iconv_t cd = iconv_open("",""); | |
+ iconv(cd,NULL,NULL,NULL,NULL); | |
+ iconv_close(cd);]])], | |
[am_cv_func_iconv=yes]) | |
if test "$am_cv_func_iconv" != yes; then | |
am_save_LIBS="$LIBS" | |
LIBS="$LIBS $LIBICONV" | |
- AC_TRY_LINK([#include <stdlib.h> | |
-#include <iconv.h>], | |
- [iconv_t cd = iconv_open("",""); | |
- iconv(cd,NULL,NULL,NULL,NULL); | |
- iconv_close(cd);], | |
+ AC_LINK_IFELSE( | |
+ [AC_LANG_PROGRAM( | |
+ [[ | |
+#include <stdlib.h> | |
+#include <iconv.h> | |
+ ]], | |
+ [[iconv_t cd = iconv_open("",""); | |
+ iconv(cd,NULL,NULL,NULL,NULL); | |
+ iconv_close(cd);]])], | |
[am_cv_lib_iconv=yes] | |
[am_cv_func_iconv=yes]) | |
LIBS="$am_save_LIBS" | |
t@@ -58,16 +66,19 @@ AC_DEFUN([AM_ICONV_LINK], | |
]) | |
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, HP-UX 11.11, Solaris 10. | |
+ 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 | |
- AC_TRY_RUN([ | |
+ AC_RUN_IFELSE( | |
+ [AC_LANG_SOURCE([[ | |
#include <iconv.h> | |
#include <string.h> | |
int main () | |
{ | |
+ int result = 0; | |
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful | |
returns. */ | |
{ | |
t@@ -84,7 +95,8 @@ int main () | |
(char **) &inptr, &inbytesleft, | |
&outptr, &outbytesleft); | |
if (res == 0) | |
- return 1; | |
+ result |= 1; | |
+ iconv_close (cd_utf8_to_88591); | |
} | |
} | |
/* Test against Solaris 10 bug: Failures are not distinguishable from | |
t@@ -103,7 +115,27 @@ int main () | |
(char **) &inptr, &inbytesleft, | |
&outptr, &outbytesleft); | |
if (res == 0) | |
- return 1; | |
+ 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 const char input[] = "\304"; | |
+ static char buf[2] = { (char)0xDE, (char)0xAD }; | |
+ const char *inptr = input; | |
+ size_t inbytesleft = 1; | |
+ char *outptr = buf; | |
+ size_t outbytesleft = 1; | |
+ size_t res = iconv (cd_88591_to_utf8, | |
+ (char **) &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. */ | |
t@@ -122,7 +154,8 @@ int main () | |
(char **) &inptr, &inbytesleft, | |
&outptr, &outbytesleft); | |
if ((int)res > 0) | |
- return 1; | |
+ result |= 8; | |
+ iconv_close (cd_88591_to_utf8); | |
} | |
} | |
#endif | |
t@@ -136,13 +169,19 @@ int main () | |
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) | |
/* Try HP-UX names. */ | |
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) | |
- return 1; | |
- return 0; | |
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], | |
- [case "$host_os" in | |
+ result |= 16; | |
+ return result; | |
+}]])], | |
+ [am_cv_func_iconv_works=yes], | |
+ [am_cv_func_iconv_works=no], | |
+ [ | |
+changequote(,)dnl | |
+ case "$host_os" in | |
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; | |
*) am_cv_func_iconv_works="guessing yes" ;; | |
- esac]) | |
+ esac | |
+changequote([,])dnl | |
+ ]) | |
LIBS="$am_save_LIBS" | |
]) | |
case "$am_cv_func_iconv_works" in | |
t@@ -183,32 +222,47 @@ m4_define([gl_iconv_AC_DEFUN], | |
m4_version_prereq([2.64], | |
[[AC_DEFUN_ONCE( | |
[$1], [$2])]], | |
- [[AC_DEFUN( | |
- [$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_TRY_COMPILE([ | |
+ AC_COMPILE_IFELSE( | |
+ [AC_LANG_PROGRAM( | |
+ [[ | |
#include <stdlib.h> | |
#include <iconv.h> | |
extern | |
#ifdef __cplusplus | |
"C" | |
#endif | |
-#if defined(__STDC__) || defined(__cplusplus) | |
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) | |
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, … | |
#else | |
size_t iconv(); | |
#endif | |
-], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) | |
+ ]], | |
+ [[]])], | |
+ [am_cv_proto_iconv_arg1=""], | |
+ [am_cv_proto_iconv_arg1="const"]) | |
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_a… | |
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 <iconv.h>. | |
+ 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/m4/lib-ld.m4 b/m4/lib-ld.m4 | |
t@@ -0,0 +1,119 @@ | |
+# lib-ld.m4 serial 6 | |
+dnl Copyright (C) 1996-2003, 2009-2013 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` in | |
+*GNU* | *'with BFD'*) | |
+ acl_cv_prog_gnu_ld=yes | |
+ ;; | |
+*) | |
+ acl_cv_prog_gnu_ld=no | |
+ ;; | |
+esac]) | |
+with_gnu_ld=$acl_cv_prog_gnu_ld | |
+]) | |
+ | |
+dnl From libtool-2.4. Sets the variable LD. | |
+AC_DEFUN([AC_LIB_PROG_LD], | |
+[AC_REQUIRE([AC_PROG_CC])dnl | |
+AC_REQUIRE([AC_CANONICAL_HOST])dnl | |
+ | |
+AC_ARG_WITH([gnu-ld], | |
+ [AS_HELP_STRING([--with-gnu-ld], | |
+ [assume the C compiler uses GNU ld [default=no]])], | |
+ [test "$withval" = no || with_gnu_ld=yes], | |
+ [with_gnu_ld=no])dnl | |
+ | |
+# 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. | |
+ 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 </dev/null` in | |
+ *GNU* | *'with BFD'*) | |
+ test "$with_gnu_ld" != no && break | |
+ ;; | |
+ *) | |
+ test "$with_gnu_ld" != yes && break | |
+ ;; | |
+ esac | |
+ fi | |
+ done | |
+ IFS="$acl_save_ifs" | |
+else | |
+ acl_cv_path_LD="$LD" # Let the user override the test with a path. | |
+fi]) | |
+LD="$acl_cv_path_LD" | |
+if test -n "$LD"; then | |
+ AC_MSG_RESULT([$LD]) | |
+else | |
+ AC_MSG_RESULT([no]) | |
+fi | |
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) | |
+AC_LIB_PROG_LD_GNU | |
+]) | |
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 | |
t@@ -0,0 +1,777 @@ | |
+# lib-link.m4 serial 26 (gettext-0.18.2) | |
+dnl Copyright (C) 2001-2013 Free Software Foundation, Inc. | |
+dnl This file is free software; the Free Software Foundation | |
+dnl gives unlimited permission to copy and/or distribute it, | |
+dnl with or without modifications, as long as this notice is preserved. | |
+ | |
+dnl From Bruno Haible. | |
+ | |
+AC_PREREQ([2.54]) | |
+ | |
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and | |
+dnl the libraries corresponding to explicit and implicit dependencies. | |
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and | |
+dnl augments the CPPFLAGS variable. | |
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname | |
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. | |
+AC_DEFUN([AC_LIB_LINKFLAGS], | |
+[ | |
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | |
+ AC_REQUIRE([AC_LIB_RPATH]) | |
+ pushdef([Name],[m4_translit([$1],[./+-], [____])]) | |
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], | |
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | |
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ | |
+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) | |
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME" | |
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" | |
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME" | |
+ ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" | |
+ ]) | |
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs" | |
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" | |
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags" | |
+ LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" | |
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) | |
+ AC_SUBST([LIB]NAME) | |
+ AC_SUBST([LTLIB]NAME) | |
+ AC_SUBST([LIB]NAME[_PREFIX]) | |
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the | |
+ dnl results of this search when this library appears as a dependency. | |
+ HAVE_LIB[]NAME=yes | |
+ popdef([NAME]) | |
+ popdef([Name]) | |
+]) | |
+ | |
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-mes… | |
+dnl searches for libname and the libraries corresponding to explicit and | |
+dnl implicit dependencies, together with the specified include files and | |
+dnl the ability to compile and link the specified testcode. The missing-message | |
+dnl defaults to 'no' and may contain additional hints for the user. | |
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} | |
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and | |
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs | |
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. | |
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname | |
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. | |
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], | |
+[ | |
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | |
+ AC_REQUIRE([AC_LIB_RPATH]) | |
+ pushdef([Name],[m4_translit([$1],[./+-], [____])]) | |
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], | |
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | |
+ | |
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME | |
+ dnl accordingly. | |
+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) | |
+ | |
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, | |
+ dnl because if the user has installed lib[]Name and not disabled its use | |
+ dnl via --without-lib[]Name-prefix, he wants to use it. | |
+ ac_save_CPPFLAGS="$CPPFLAGS" | |
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) | |
+ | |
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ | |
+ ac_save_LIBS="$LIBS" | |
+ dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, | |
+ dnl because these -l options might require -L options that are present in | |
+ dnl LIBS. -l options benefit only from the -L options listed before it. | |
+ dnl Otherwise, add it to the front of LIBS, because it may be a static | |
+ dnl library that depends on another static library that is present in LIBS. | |
+ dnl Static libraries benefit only from the static libraries listed after | |
+ dnl it. | |
+ case " $LIB[]NAME" in | |
+ *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; | |
+ *) LIBS="$LIB[]NAME $LIBS" ;; | |
+ esac | |
+ AC_LINK_IFELSE( | |
+ [AC_LANG_PROGRAM([[$3]], [[$4]])], | |
+ [ac_cv_lib[]Name=yes], | |
+ [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) | |
+ LIBS="$ac_save_LIBS" | |
+ ]) | |
+ if test "$ac_cv_lib[]Name" = yes; then | |
+ HAVE_LIB[]NAME=yes | |
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) | |
+ AC_MSG_CHECKING([how to link with lib[]$1]) | |
+ AC_MSG_RESULT([$LIB[]NAME]) | |
+ else | |
+ HAVE_LIB[]NAME=no | |
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need | |
+ dnl $INC[]NAME either. | |
+ CPPFLAGS="$ac_save_CPPFLAGS" | |
+ LIB[]NAME= | |
+ LTLIB[]NAME= | |
+ LIB[]NAME[]_PREFIX= | |
+ fi | |
+ AC_SUBST([HAVE_LIB]NAME) | |
+ AC_SUBST([LIB]NAME) | |
+ AC_SUBST([LTLIB]NAME) | |
+ AC_SUBST([LIB]NAME[_PREFIX]) | |
+ popdef([NAME]) | |
+ popdef([Name]) | |
+]) | |
+ | |
+dnl Determine the platform dependent parameters needed to use rpath: | |
+dnl acl_libext, | |
+dnl acl_shlibext, | |
+dnl acl_libname_spec, | |
+dnl acl_library_names_spec, | |
+dnl acl_hardcode_libdir_flag_spec, | |
+dnl acl_hardcode_libdir_separator, | |
+dnl acl_hardcode_direct, | |
+dnl acl_hardcode_minus_L. | |
+AC_DEFUN([AC_LIB_RPATH], | |
+[ | |
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing. | |
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) | |
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS | |
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld | |
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host | |
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir | |
+ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ | |
+ 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)[… | |
+ 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… | |
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], | |
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | |
+ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PAC… | |
+ 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… | |
+ 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 … | |
+ --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir a… | |
+[ | |
+ 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./+-|ABC… | |
+ 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:+ }$v… | |
+ 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… | |
+ 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"; th… | |
+ 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$ver… | |
+ 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,… | |
+ | sed 1q ) 2>/dev/null` | |
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ve… | |
+ 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 t… | |
+ dnl resulting binary. | |
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" | |
+ else | |
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_ha… | |
+ dnl Use an explicit option to hardcode DIR into the result… | |
+ 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 LDFL… | |
+ 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_P… | |
+ dnl here, because this doesn't fit in flags passed to the | |
+ dnl compiler. So give up. No hardcoding. This affects on… | |
+ 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_libd… | |
+ 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_libd… | |
+ 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 Linu… | |
+ 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_incl… | |
+ 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 $LT… | |
+ 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 Li… | |
+ 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_libdirstem… | |
+ haveit= | |
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdir… | |
+ || test "X$additional_libdir" = "X/usr/local/$acl_lib… | |
+ 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$additiona… | |
+ 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$add… | |
+ 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 en… | |
+ 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 th… | |
+ 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 -… | |
+ ;; | |
+ *.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 -… | |
+ ;; | |
+ *) | |
+ 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_di… | |
+ 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… | |
+ 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}$di… | |
+ 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/m4/lib-prefix.m4 b/m4/lib-prefix.m4 | |
t@@ -0,0 +1,224 @@ | |
+# lib-prefix.m4 serial 7 (gettext-0.18) | |
+dnl Copyright (C) 2001-2005, 2008-2013 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 Develo… | |
+ dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>. | |
+ dnl "Portable Makefiles should refer to any library directories using th… | |
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if t… | |
+ 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… | |
+ 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/m4/libtool.m4 b/m4/libtool.m4 | |
t@@ -2512,6 +2512,17 @@ freebsd* | dragonfly*) | |
esac | |
;; | |
+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}${… | |
+ soname_spec='${libname}${release}${shared_ext}$major' | |
+ shlibpath_var=LD_LIBRARY_PATH | |
+ shlibpath_overrides_runpath=no | |
+ hardcode_into_libs=yes | |
+ ;; | |
+ | |
haiku*) | |
version_type=linux # correct to gnu/linux during the next big refactor | |
need_lib_prefix=no | |
t@@ -2628,7 +2639,7 @@ linux*oldld* | linux*aout* | linux*coff*) | |
;; | |
# This must be glibc/ELF. | |
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
+linux* | k*bsd*-gnu | kopensolaris*-gnu) | |
version_type=linux # correct to gnu/linux during the next big refactor | |
need_lib_prefix=no | |
need_version=no | |
t@@ -2658,10 +2669,14 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
# before this can be enabled. | |
hardcode_into_libs=yes | |
+ # Add ABI-specific directories to the system library path. | |
+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" | |
+ | |
# Append ld.so.conf contents 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/nul… | |
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" | |
+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" | |
+ | |
fi | |
# We used to test for /lib/ld.so.1 and disable shared libraries on | |
t@@ -2673,18 +2688,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
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}${… | |
- 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 | |
t@@ -3244,6 +3247,10 @@ freebsd* | dragonfly*) | |
fi | |
;; | |
+gnu*) | |
+ lt_cv_deplibs_check_method=pass_all | |
+ ;; | |
+ | |
haiku*) | |
lt_cv_deplibs_check_method=pass_all | |
;; | |
t@@ -3282,11 +3289,11 @@ irix5* | irix6* | nonstopux*) | |
;; | |
# This must be glibc/ELF. | |
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
+linux* | k*bsd*-gnu | kopensolaris*-gnu) | |
lt_cv_deplibs_check_method=pass_all | |
;; | |
-netbsd* | netbsdelf*-gnu) | |
+netbsd*) | |
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then | |
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-… | |
else | |
t@@ -4034,7 +4041,7 @@ m4_if([$1], [CXX], [ | |
;; | |
esac | |
;; | |
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
+ linux* | k*bsd*-gnu | kopensolaris*-gnu) | |
case $cc_basename in | |
KCC*) | |
# KAI C++ Compiler | |
t@@ -4098,7 +4105,7 @@ m4_if([$1], [CXX], [ | |
;; | |
esac | |
;; | |
- netbsd* | netbsdelf*-gnu) | |
+ netbsd*) | |
;; | |
*qnx* | *nto*) | |
# QNX uses GNU C++, but need to define -shared option too, otherwise | |
t@@ -4333,7 +4340,7 @@ m4_if([$1], [CXX], [ | |
_LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' | |
;; | |
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
+ linux* | k*bsd*-gnu | kopensolaris*-gnu) | |
case $cc_basename in | |
# old Intel for x86_64 which still supported -KPIC. | |
ecc*) | |
t@@ -4575,9 +4582,6 @@ m4_if([$1], [CXX], [ | |
;; | |
esac | |
;; | |
- linux* | k*bsd*-gnu | gnu*) | |
- _LT_TAGVAR(link_all_deplibs, $1)=no | |
- ;; | |
*) | |
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_s… | |
;; | |
t@@ -4640,9 +4644,6 @@ dnl Note also adjust exclude_expsyms for C++ above. | |
openbsd*) | |
with_gnu_ld=no | |
;; | |
- linux* | k*bsd*-gnu | gnu*) | |
- _LT_TAGVAR(link_all_deplibs, $1)=no | |
- ;; | |
esac | |
_LT_TAGVAR(ld_shlibs, $1)=yes | |
t@@ -4864,7 +4865,7 @@ _LT_EOF | |
fi | |
;; | |
- netbsd* | netbsdelf*-gnu) | |
+ netbsd*) | |
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then | |
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linke… | |
wlarc= | |
t@@ -5041,7 +5042,6 @@ _LT_EOF | |
if test "$aix_use_runtimelinking" = yes; then | |
shared_flag="$shared_flag "'${wl}-G' | |
fi | |
- _LT_TAGVAR(link_all_deplibs, $1)=no | |
else | |
# not using gcc | |
if test "$host_cpu" = ia64; then | |
t@@ -5346,7 +5346,7 @@ _LT_EOF | |
_LT_TAGVAR(link_all_deplibs, $1)=yes | |
;; | |
- netbsd* | netbsdelf*-gnu) | |
+ netbsd*) | |
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then | |
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplib… | |
else | |
t@@ -6226,6 +6226,9 @@ if test "$_lt_caught_CXX_error" != yes; then | |
_LT_TAGVAR(ld_shlibs, $1)=yes | |
;; | |
+ gnu*) | |
+ ;; | |
+ | |
haiku*) | |
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_… | |
_LT_TAGVAR(link_all_deplibs, $1)=yes | |
t@@ -6387,7 +6390,7 @@ if test "$_lt_caught_CXX_error" != yes; then | |
_LT_TAGVAR(inherit_rpath, $1)=yes | |
;; | |
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) | |
+ linux* | k*bsd*-gnu | kopensolaris*-gnu) | |
case $cc_basename in | |
KCC*) | |
# Kuck and Associates, Inc. (KAI) C++ Compiler | |
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 | |
t@@ -0,0 +1,384 @@ | |
+# Helper functions for option handling. -*- Autoconf -*- | |
+# | |
+# Copyright (C) 2004, 2005, 2007, 2008, 2009 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 7 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_SET_OPTIONS | |
+ | |
+ | |
+## --------------------------------- ## | |
+## Macros to handle LT_INIT 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* | *-*-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_DEFAU… | |
+ [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([… | |
+ | |
+# 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_PIC([MODE]) | |
+# -------------------- | |
+# implement the --with-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_WITH([pic], | |
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], | |
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], | |
+ [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=default]) | |
+ | |
+test -z "$pic_mode" && 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], []) | |
+ | |
+## ----------------- ## | |
+## LTDL_INIT Options ## | |
+## ----------------- ## | |
+ | |
+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])]) | |
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 | |
t@@ -0,0 +1,123 @@ | |
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- | |
+# | |
+# Copyright (C) 2004, 2005, 2007, 2008 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_shi… | |
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])… | |
+]) | |
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 | |
t@@ -0,0 +1,23 @@ | |
+# ltversion.m4 -- version numbers -*- Autoconf -*- | |
+# | |
+# Copyright (C) 2004 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 3337 ltversion.m4 | |
+# This file is part of GNU Libtool | |
+ | |
+m4_define([LT_PACKAGE_VERSION], [2.4.2]) | |
+m4_define([LT_PACKAGE_REVISION], [1.3337]) | |
+ | |
+AC_DEFUN([LTVERSION_VERSION], | |
+[macro_version='2.4.2' | |
+macro_revision='1.3337' | |
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) | |
+_LT_DECL(, macro_revision, 0) | |
+]) | |
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 | |
t@@ -0,0 +1,98 @@ | |
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- | |
+# | |
+# Copyright (C) 2004, 2005, 2007, 2009 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_OPTI… | |
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) | |
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BAC… | |
+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_A… | |
+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_LIN… | |
+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… | |
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STR… | |
+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_COMPI… | |
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBA… | |
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_… | |
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SH… | |
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PR… | |
+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_BOILERPLA… | |
+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_DY… | |
+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_CONF… | |
+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_… | |
+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_… | |
+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_… | |
+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_CO… | |
+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_… | |
+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])… | |
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOT… | |
+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])]) | |
diff --git a/m4/nls.m4 b/m4/nls.m4 | |
t@@ -0,0 +1,32 @@ | |
+# nls.m4 serial 5 (gettext-0.18) | |
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 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 <[email protected]>, 1995-2000. | |
+dnl Bruno Haible <[email protected]>, 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/m4/po.m4 b/m4/po.m4 | |
t@@ -0,0 +1,452 @@ | |
+# po.m4 serial 20 (gettext-0.18.2) | |
+dnl Copyright (C) 1995-2013 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 <[email protected]>, 1995-2000. | |
+dnl Bruno Haible <[email protected]>, 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([AM_NLS])dnl | |
+ | |
+ dnl Release version of the gettext macros. This is used to ensure that | |
+ dnl the gettext macros and po/Makefile.in.in are in sync. | |
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) | |
+ | |
+ dnl Perform the following tests also if --disable-nls has been given, | |
+ dnl because they are needed for "make dist" to work. | |
+ | |
+ 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 … | |
+ :) | |
+ 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= … | |
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-addre… | |
+ :) | |
+ 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>… | |
+ | |
+ 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… | |
+ gt_tab=`printf '\t'` | |
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ … | |
+ 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 configu… | |
+ fi | |
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_di… | |
+ # 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… | |
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_give… | |
+ 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 <<EOT | |
+$* | |
+EOT | |
+ } | |
+ gt_echo='echo_func' | |
+ fi | |
+ fi | |
+ | |
+ # A sed script that extracts the value of VARIABLE from a Makefile. | |
+ tab=`printf '\t'` | |
+ sed_x_variable=' | |
+# Test if the hold space is empty. | |
+x | |
+s/P/P/ | |
+x | |
+ta | |
+# Yes it was empty. Look if we have the expected variable definition. | |
+/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{ | |
+ # Seen the first line of the variable definition. | |
+ s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=// | |
+ ba | |
+} | |
+bd | |
+:a | |
+# Here we are processing a line from the variable definition. | |
+# Remove comment, more precisely replace it with a space. | |
+s/#.*$/ / | |
+# See if the line ends in a backslash. | |
+tb | |
+:b | |
+s/\\$// | |
+# Print the line, without the trailing backslash. | |
+p | |
+tc | |
+# There was no trailing backslash. The end of the variable definition is | |
+# reached. Clear the hold space. | |
+s/^.*$// | |
+x | |
+bd | |
+:c | |
+# A trailing backslash means that the variable definition continues in the | |
+# next line. Put a nonempty string into the hold space to indicate this. | |
+s/^.*$/P/ | |
+x | |
+:d | |
+' | |
+changequote([,])dnl | |
+ | |
+ # Set POTFILES to the value of the Makefile variable POTFILES. | |
+ sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE… | |
+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` | |
+ # Compute POTFILES_DEPS as | |
+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) | |
+ POTFILES_DEPS= | |
+ for file in $POTFILES; do | |
+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" | |
+ done | |
+ POMAKEFILEDEPS="" | |
+ | |
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then | |
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is o… | |
+ fi | |
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then | |
+ # The LINGUAS file contains the set of available languages. | |
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUA… | |
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" | |
+ else | |
+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. | |
+ sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABL… | |
+ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` | |
+ fi | |
+ # Hide the ALL_LINGUAS assignment from automake < 1.5. | |
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' | |
+ # 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) | |
+ # Compute PROPERTIESFILES | |
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).pr… | |
+ # Compute CLASSFILES | |
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).cl… | |
+ # Compute QMFILES | |
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) | |
+ # Compute MSGFILES | |
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) | |
+ # Compute RESOURCESDLLFILES | |
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN… | |
+ case "$ac_given_srcdir" in | |
+ .) srcdirpre= ;; | |
+ *) srcdirpre='$(srcdir)/' ;; | |
+ esac | |
+ POFILES= | |
+ UPDATEPOFILES= | |
+ DUMMYPOFILES= | |
+ GMOFILES= | |
+ PROPERTIESFILES= | |
+ CLASSFILES= | |
+ QMFILES= | |
+ MSGFILES= | |
+ RESOURCESDLLFILES= | |
+ 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" | |
+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properti… | |
+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" | |
+ QMFILES="$QMFILES $srcdirpre$lang.qm" | |
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVW… | |
+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" | |
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@lat… | |
+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).re… | |
+ 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= | |
+ JAVACATALOGS= | |
+ QTCATALOGS= | |
+ TCLCATALOGS= | |
+ CSHARPCATALOGS= | |
+ if test -n "$INST_LINGUAS"; then | |
+ for lang in $INST_LINGUAS; do | |
+ CATALOGS="$CATALOGS $lang.gmo" | |
+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" | |
+ QTCATALOGS="$QTCATALOGS $lang.qm" | |
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTU… | |
+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" | |
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@l… | |
+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" | |
+ done | |
+ fi | |
+ | |
+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "… | |
+ 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/ABCDEFGHIJKLMNOPQRSTU… | |
+ cat >> "$ac_file.tmp" <<EOF | |
+$frobbedlang.msg: $lang.po | |
+${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ | |
+${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm … | |
+EOF | |
+ done | |
+ fi | |
+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then | |
+ # Add dependencies that cannot be formulated as a simple suffix rule. | |
+ for lang in $ALL_LINGUAS; do | |
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@l… | |
+ cat >> "$ac_file.tmp" <<EOF | |
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po | |
+${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po … | |
+${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\… | |
+EOF | |
+ done | |
+ fi | |
+ if test -n "$POMAKEFILEDEPS"; then | |
+ cat >> "$ac_file.tmp" <<EOF | |
+Makefile: $POMAKEFILEDEPS | |
+EOF | |
+ fi | |
+ mv "$ac_file.tmp" "$ac_file" | |
+]) | |
+ | |
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. | |
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT], | |
+[ | |
+ XGETTEXT_EXTRA_OPTIONS= | |
+]) | |
+ | |
+dnl Registers an option to be passed to xgettext in the po subdirectory. | |
+AC_DEFUN([AM_XGETTEXT_OPTION], | |
+[ | |
+ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) | |
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" | |
+]) | |
diff --git a/m4/progtest.m4 b/m4/progtest.m4 | |
t@@ -1,5 +1,5 @@ | |
-# progtest.m4 serial 6 (gettext-0.18) | |
-dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc. | |
+# progtest.m4 serial 7 (gettext-0.18.2) | |
+dnl Copyright (C) 1996-2003, 2005, 2008-2013 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. | |
t@@ -27,15 +27,14 @@ AC_DEFUN([AM_PATH_PROG_WITH_TEST], | |
# Prepare PATH_SEPARATOR. | |
# The user is always right. | |
if test "${PATH_SEPARATOR+set}" != set; then | |
- echo "#! /bin/sh" >conf$$.sh | |
- echo "exit 0" >>conf$$.sh | |
- chmod +x conf$$.sh | |
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then | |
- PATH_SEPARATOR=';' | |
- else | |
- PATH_SEPARATOR=: | |
- fi | |
- rm -f conf$$.sh | |
+ # 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, | |
diff --git a/missing b/missing | |
t@@ -1,7 +1,10 @@ | |
#! /bin/sh | |
-# Common stub for a few missing GNU programs while installing. | |
-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. | |
-# Originally by Fran,cois Pinard <[email protected]>, 1996. | |
+# Common wrapper for a few potentially missing GNU programs. | |
+ | |
+scriptversion=2012-06-26.16; # UTC | |
+ | |
+# Copyright (C) 1996-2013 Free Software Foundation, Inc. | |
+# Originally written by Fran,cois Pinard <[email protected]>, 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 | |
t@@ -14,9 +17,7 @@ | |
# GNU General Public License for more details. | |
# You should have received a copy of the GNU General Public License | |
-# along with this program; if not, write to the Free Software | |
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
-# 02111-1307, USA. | |
+# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
# As a special exception to the GNU General Public License, if you | |
# distribute this file as part of a program that contains a | |
t@@ -24,289 +25,191 @@ | |
# 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" | |
+ echo 1>&2 "Try '$0 --help' for more information" | |
exit 1 | |
fi | |
-run=: | |
- | |
-# In the cases where this matters, `missing' is being run in the | |
-# srcdir already. | |
-if test -f configure.ac; then | |
- configure_ac=configure.ac | |
-else | |
- configure_ac=configure.in | |
-fi | |
+case $1 in | |
-case "$1" in | |
---run) | |
- # Try to run requested program, and just exit if it succeeds. | |
- run= | |
- shift | |
- prog="$1" | |
- shift | |
- case "$prog" in | |
- aclocal) | |
- for suffix in "-1.5" ""; do | |
- if "$prog$suffix" "--version" >/dev/null 2>&1; then | |
- "$prog$suffix" "$@" && exit 0 | |
- fi | |
- done;; | |
- autoconf) | |
- for suffix in "-2.53" ""; do | |
- if "$prog$suffix" "--version" >/dev/null 2>&1; then | |
- "$prog$suffix" "$@" && exit 0 | |
- fi | |
- done;; | |
- automake) | |
- for suffix in "-1.5" ""; do | |
- if "$prog$suffix" "--version" >/dev/null 2>&1; then | |
- "$prog$suffix" "$@" && exit 0 | |
- fi | |
- done;; | |
- autoheader) | |
- for suffix in "-2.53" ""; do | |
- if "$prog$suffix" "--version" >/dev/null 2>&1; then | |
- "$prog$suffix" "$@" && exit 0 | |
- fi | |
- done;; | |
- *) "$prog" "$@" && exit 0;; | |
- esac | |
- set -- "$prog" "$@" | |
- ;; | |
-esac | |
+ --is-lightweight) | |
+ # Used by our autoconf macros to check whether the available missing | |
+ # script is modern enough. | |
+ exit 0 | |
+ ;; | |
-# If it does not exist, or fails to run (possibly an outdated version), | |
-# try to emulate it. | |
-case "$1" in | |
+ --run) | |
+ # Back-compat with the calling convention used by older automake. | |
+ shift | |
+ ;; | |
-h|--h|--he|--hel|--help) | |
echo "\ | |
$0 [OPTION]... PROGRAM [ARGUMENT]... | |
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an | |
-error status if there is no known handling for PROGRAM. | |
+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 | |
- --run try to run the given command, and emulate it if it fails | |
Supported PROGRAM values: | |
- aclocal touch file \`aclocal.m4' | |
- autoconf touch file \`configure' | |
- autoheader touch file \`config.h.in' | |
- automake touch all \`Makefile.in' files | |
- bison create \`y.tab.[ch]', if possible, from existing .[ch] | |
- flex create \`lex.yy.c', if possible, from existing .c | |
- help2man touch the output file | |
- lex create \`lex.yy.c', if possible, from existing .c | |
- makeinfo touch the output file | |
- tar try tar, gnutar, gtar, then tar without non-portable flags | |
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]" | |
+ aclocal autoconf autoheader autom4te automake makeinfo | |
+ bison yacc flex lex help2man | |
+ | |
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and | |
+'g' are ignored when checking the name. | |
+ | |
+Send bug reports to <[email protected]>." | |
+ exit $? | |
;; | |
-v|--v|--ve|--ver|--vers|--versi|--versio|--version) | |
- echo "missing 0.3 - GNU automake" | |
+ echo "missing $scriptversion (GNU Automake)" | |
+ exit $? | |
;; | |
-*) | |
- echo 1>&2 "$0: Unknown \`$1' option" | |
- echo 1>&2 "Try \`$0 --help' for more information" | |
+ echo 1>&2 "$0: unknown '$1' option" | |
+ echo 1>&2 "Try '$0 --help' for more information" | |
exit 1 | |
;; | |
- aclocal*) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want | |
- to install the \`Automake' and \`Perl' packages. Grab them from | |
- any GNU archive site." | |
- touch aclocal.m4 | |
- ;; | |
- | |
- autoconf*) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified \`${configure_ac}'. You might want to install the | |
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU | |
- archive site." | |
- touch configure | |
- ;; | |
- | |
- autoheader*) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified \`acconfig.h' or \`${configure_ac}'. You might want | |
- to install the \`Autoconf' and \`GNU m4' packages. Grab them | |
- from any GNU archive site." | |
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_a… | |
- test -z "$files" && files="config.h" | |
- touch_files= | |
- for f in $files; do | |
- case "$f" in | |
- *:*) touch_files="$touch_files "`echo "$f" | | |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;; | |
- *) touch_files="$touch_files $f.in";; | |
- esac | |
- done | |
- touch $touch_files | |
- ;; | |
- | |
- automake*) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. | |
- You might want to install the \`Automake' and \`Perl' packages. | |
- Grab them from any GNU archive site." | |
- find . -type f -name Makefile.am -print | | |
- sed 's/\.am$/.in/' | | |
- while read f; do touch "$f"; done | |
- ;; | |
- | |
- bison|yacc) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified a \`.y' file. You may need the \`Bison' package | |
- in order for those modifications to take effect. You can get | |
- \`Bison' from any GNU archive site." | |
- rm -f y.tab.c y.tab.h | |
- if [ $# -ne 1 ]; then | |
- eval LASTARG="\${$#}" | |
- case "$LASTARG" in | |
- *.y) | |
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` | |
- if [ -f "$SRCFILE" ]; then | |
- cp "$SRCFILE" y.tab.c | |
- fi | |
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` | |
- if [ -f "$SRCFILE" ]; then | |
- cp "$SRCFILE" y.tab.h | |
- fi | |
- ;; | |
- esac | |
- fi | |
- if [ ! -f y.tab.h ]; then | |
- echo >y.tab.h | |
- fi | |
- if [ ! -f y.tab.c ]; then | |
- echo 'main() { return 0; }' >y.tab.c | |
- fi | |
- ;; | |
- | |
- lex|flex) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified a \`.l' file. You may need the \`Flex' package | |
- in order for those modifications to take effect. You can get | |
- \`Flex' from any GNU archive site." | |
- rm -f lex.yy.c | |
- if [ $# -ne 1 ]; then | |
- eval LASTARG="\${$#}" | |
- case "$LASTARG" in | |
- *.l) | |
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` | |
- if [ -f "$SRCFILE" ]; then | |
- cp "$SRCFILE" lex.yy.c | |
- fi | |
- ;; | |
- esac | |
- fi | |
- if [ ! -f lex.yy.c ]; then | |
- echo 'main() { return 0; }' >lex.yy.c | |
- fi | |
- ;; | |
- | |
- help2man) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified a dependency of a manual page. You may need the | |
- \`Help2man' package in order for those modifications to take | |
- effect. You can get \`Help2man' from any GNU archive site." | |
- | |
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` | |
- if test -z "$file"; then | |
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` | |
- fi | |
- if [ -f "$file" ]; then | |
- touch $file | |
- else | |
- test -z "$file" || exec >$file | |
- echo ".ab help2man is required to generate this page" | |
- exit 1 | |
- fi | |
- ;; | |
- | |
- makeinfo) | |
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then | |
- # We have makeinfo, but it failed. | |
- exit 1 | |
- fi | |
- | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is missing on your system. You should only need it if | |
- you modified a \`.texi' or \`.texinfo' file, or any other file | |
- indirectly affecting the aspect of the manual. The spurious | |
- call might also be the consequence of using a buggy \`make' (AIX, | |
- DU, IRIX). You might want to install the \`Texinfo' package or | |
- the \`GNU make' package. Grab either from any GNU archive site." | |
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` | |
- if test -z "$file"; then | |
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` | |
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` | |
- fi | |
- touch $file | |
- ;; | |
- | |
- tar) | |
- shift | |
- if test -n "$run"; then | |
- echo 1>&2 "ERROR: \`tar' requires --run" | |
- exit 1 | |
- fi | |
- | |
- # We have already tried tar in the generic part. | |
- # Look for gnutar/gtar before invocation to avoid ugly error | |
- # messages. | |
- if (gnutar --version > /dev/null 2>&1); then | |
- gnutar ${1+"$@"} && exit 0 | |
- fi | |
- if (gtar --version > /dev/null 2>&1); then | |
- gtar ${1+"$@"} && exit 0 | |
- fi | |
- firstarg="$1" | |
- if shift; then | |
- case "$firstarg" in | |
- *o*) | |
- firstarg=`echo "$firstarg" | sed s/o//` | |
- tar "$firstarg" ${1+"$@"} && exit 0 | |
- ;; | |
- esac | |
- case "$firstarg" in | |
- *h*) | |
- firstarg=`echo "$firstarg" | sed s/h//` | |
- tar "$firstarg" ${1+"$@"} && exit 0 | |
- ;; | |
- esac | |
- fi | |
+esac | |
- echo 1>&2 "\ | |
-WARNING: I can't seem to be able to run \`tar' with the given arguments. | |
- You may want to install GNU tar or Free paxutils, or check the | |
- command line arguments." | |
- exit 1 | |
- ;; | |
+# 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 | |
- *) | |
- echo 1>&2 "\ | |
-WARNING: \`$1' is needed, and you do not seem to have it handy on your | |
- system. You might have modified some files without having the | |
- proper tools for further handling them. Check the \`README' file, | |
- it often tells you about the needed prerequirements for installing | |
- this package. You may also peek at any GNU archive site, in case | |
- some other package would contain this missing \`$1' program." | |
- exit 1 | |
+perl_URL=http://www.perl.org/ | |
+flex_URL=http://flex.sourceforge.net/ | |
+gnu_software_URL=http://www.gnu.org/software | |
+ | |
+program_details () | |
+{ | |
+ case $1 in | |
+ aclocal|automake) | |
+ 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'" | |
+ case $normalized_program in | |
+ autoconf*) | |
+ echo "You should only need it if you modified 'configure.ac'," | |
+ echo "or m4 files included by it." | |
+ program_details 'autoconf' | |
+ ;; | |
+ autoheader*) | |
+ echo "You should only need it if you modified 'acconfig.h' or" | |
+ echo "$configure_deps." | |
+ program_details 'autoheader' | |
+ ;; | |
+ automake*) | |
+ echo "You should only need it if you modified 'Makefile.am' or" | |
+ echo "$configure_deps." | |
+ program_details 'automake' | |
+ ;; | |
+ aclocal*) | |
+ echo "You should only need it if you modified 'acinclude.m4' or" | |
+ echo "$configure_deps." | |
+ program_details 'aclocal' | |
+ ;; | |
+ autom4te*) | |
+ echo "You might have modified some maintainer files that require" | |
+ echo "the 'automa4te' program to be rebuilt." | |
+ program_details 'autom4te' | |
+ ;; | |
+ 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/>" | |
+ ;; | |
+ 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>" | |
+ ;; | |
+ 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/>" | |
;; | |
-esac | |
- | |
-exit 0 | |
+ 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/>" | |
+ ;; | |
+ *) | |
+ 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 | |
+} | |
+ | |
+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 'write-file-hooks 'time-stamp) | |
+# time-stamp-start: "scriptversion=" | |
+# time-stamp-format: "%:y-%02m-%02d.%02H" | |
+# time-stamp-time-zone: "UTC" | |
+# time-stamp-end: "; # UTC" | |
+# End: | |
diff --git a/mkinstalldirs b/mkinstalldirs | |
t@@ -1,40 +1,162 @@ | |
#! /bin/sh | |
# mkinstalldirs --- make directory hierarchy | |
-# Author: Noah Friedman <[email protected]> | |
-# Created: 1993-05-16 | |
-# Public domain | |
-# $Id$ | |
+scriptversion=2009-04-28.21; # UTC | |
+ | |
+# Original author: Noah Friedman <[email protected]> | |
+# Created: 1993-05-16 | |
+# Public domain. | |
+# | |
+# This file is maintained in Automake, please report | |
+# bugs to <[email protected]> or send patches to | |
+# <[email protected]>. | |
+nl=' | |
+' | |
+IFS=" "" $nl" | |
errstatus=0 | |
+dirmode= | |
+ | |
+usage="\ | |
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... | |
+ | |
+Create each directory DIR (with mode MODE, if specified), including all | |
+leading file name components. | |
+ | |
+Report bugs to <[email protected]>." | |
+ | |
+# process command line arguments | |
+while test $# -gt 0 ; do | |
+ case $1 in | |
+ -h | --help | --h*) # -h for help | |
+ echo "$usage" | |
+ exit $? | |
+ ;; | |
+ -m) # -m PERM arg | |
+ shift | |
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } | |
+ dirmode=$1 | |
+ shift | |
+ ;; | |
+ --version) | |
+ echo "$0 $scriptversion" | |
+ exit $? | |
+ ;; | |
+ --) # stop option processing | |
+ shift | |
+ break | |
+ ;; | |
+ -*) # unknown option | |
+ echo "$usage" 1>&2 | |
+ exit 1 | |
+ ;; | |
+ *) # first non-opt arg | |
+ break | |
+ ;; | |
+ esac | |
+done | |
for file | |
do | |
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` | |
- shift | |
+ if test -d "$file"; then | |
+ shift | |
+ else | |
+ break | |
+ fi | |
+done | |
+ | |
+case $# in | |
+ 0) exit 0 ;; | |
+esac | |
+ | |
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and | |
+# mkdir -p a/c at the same time, both will detect that a is missing, | |
+# one will create a, then the other will try to create a and die with | |
+# a "File exists" error. This is a problem when calling mkinstalldirs | |
+# from a parallel make. We use --version in the probe to restrict | |
+# ourselves to GNU mkdir, which is thread-safe. | |
+case $dirmode in | |
+ '') | |
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then | |
+ echo "mkdir -p -- $*" | |
+ exec mkdir -p -- "$@" | |
+ else | |
+ # On NextStep and OpenStep, the 'mkdir' command does not | |
+ # recognize any option. It will interpret all options as | |
+ # directories to create, and then abort because '.' already | |
+ # exists. | |
+ test -d ./-p && rmdir ./-p | |
+ test -d ./--version && rmdir ./--version | |
+ fi | |
+ ;; | |
+ *) | |
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && | |
+ test ! -d ./--version; then | |
+ echo "mkdir -m $dirmode -p -- $*" | |
+ exec mkdir -m "$dirmode" -p -- "$@" | |
+ else | |
+ # Clean up after NextStep and OpenStep mkdir. | |
+ for d in ./-m ./-p ./--version "./$dirmode"; | |
+ do | |
+ test -d $d && rmdir $d | |
+ done | |
+ fi | |
+ ;; | |
+esac | |
+ | |
+for file | |
+do | |
+ case $file in | |
+ /*) pathcomp=/ ;; | |
+ *) pathcomp= ;; | |
+ esac | |
+ oIFS=$IFS | |
+ IFS=/ | |
+ set fnord $file | |
+ shift | |
+ IFS=$oIFS | |
+ | |
+ for d | |
+ do | |
+ test "x$d" = x && continue | |
+ | |
+ pathcomp=$pathcomp$d | |
+ case $pathcomp in | |
+ -*) pathcomp=./$pathcomp ;; | |
+ esac | |
- pathcomp= | |
- for d | |
- do | |
- pathcomp="$pathcomp$d" | |
- case "$pathcomp" in | |
- -* ) pathcomp=./$pathcomp ;; | |
- esac | |
+ if test ! -d "$pathcomp"; then | |
+ echo "mkdir $pathcomp" | |
- if test ! -d "$pathcomp"; then | |
- echo "mkdir $pathcomp" | |
+ mkdir "$pathcomp" || lasterr=$? | |
- mkdir "$pathcomp" || lasterr=$? | |
+ if test ! -d "$pathcomp"; then | |
+ errstatus=$lasterr | |
+ else | |
+ if test ! -z "$dirmode"; then | |
+ echo "chmod $dirmode $pathcomp" | |
+ lasterr= | |
+ chmod "$dirmode" "$pathcomp" || lasterr=$? | |
- if test ! -d "$pathcomp"; then | |
- errstatus=$lasterr | |
- fi | |
- fi | |
+ if test ! -z "$lasterr"; then | |
+ errstatus=$lasterr | |
+ fi | |
+ fi | |
+ fi | |
+ fi | |
- pathcomp="$pathcomp/" | |
- done | |
+ pathcomp=$pathcomp/ | |
+ done | |
done | |
exit $errstatus | |
-# mkinstalldirs ends here | |
+# Local Variables: | |
+# mode: shell-script | |
+# sh-indentation: 2 | |
+# eval: (add-hook 'write-file-hooks 'time-stamp) | |
+# time-stamp-start: "scriptversion=" | |
+# time-stamp-format: "%:y-%02m-%02d.%02H" | |
+# time-stamp-time-zone: "UTC" | |
+# time-stamp-end: "; # UTC" | |
+# End: | |
diff --git a/po/ChangeLog b/po/ChangeLog | |
t@@ -1,3 +1,14 @@ | |
+2013-07-08 gettextize <[email protected]> | |
+ | |
+ * Makefile.in.in: Upgrade to gettext-0.18.2. | |
+ * boldquot.sed: New file, from gettext-0.18.2. | |
+ * [email protected]: New file, from gettext-0.18.2. | |
+ * [email protected]: New file, from gettext-0.18.2. | |
+ * insert-header.sin: New file, from gettext-0.18.2. | |
+ * quot.sed: New file, from gettext-0.18.2. | |
+ * remove-potcdate.sin: New file, from gettext-0.18.2. | |
+ * Rules-quot: New file, from gettext-0.18.2. | |
+ | |
2013-06-25 gettextize <[email protected]> | |
* Makefile.in.in: Upgrade to gettext-0.18.1. | |
diff --git a/po/Makefile.in.in b/po/Makefile.in.in | |
t@@ -8,7 +8,7 @@ | |
# 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.18 | |
+# Origin: gettext-0.18.2 | |
GETTEXT_MACRO_VERSION = 0.18 | |
PACKAGE = @PACKAGE@ | |
t@@ -96,14 +96,14 @@ CATALOGS = @CATALOGS@ | |
mv t-$@ $@ | |
-all: check-macro-version all-@USE_NLS@ | |
+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@" \ | |
+CHECK_MACRO_VERSION = \ | |
+ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ | |
|| { echo "*** error: gettext infrastructure mismatch: using a Makef… | |
exit 1; \ | |
} | |
t@@ -123,6 +123,7 @@ check-macro-version: | |
# $(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 || { \ | |
t@@ -137,8 +138,16 @@ stamp-po: $(srcdir)/$(DOMAIN).pot | |
# This target rebuilds $(DOMAIN).pot; it is an expensive operation. | |
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. | |
+# 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 | |
- if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v… | |
+ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; t… | |
+ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000… | |
+ else \ | |
+ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ | |
+ fi; \ | |
+ } | grep -v 'libtool:' >/dev/null; then \ | |
package_gnu='GNU '; \ | |
else \ | |
package_gnu=''; \ | |
diff --git a/po/Makevars b/po/Makevars | |
t@@ -0,0 +1,53 @@ | |
+# 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 = Ben Webb | |
+ | |
+# 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 = [email protected] | |
+ | |
+# 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 = | |
diff --git a/po/Rules-quot b/po/Rules-quot | |
t@@ -0,0 +1,47 @@ | |
+# Special Makefile rules for English message catalogs with quotation marks. | |
+ | |
+DISTFILES.common.extra1 = quot.sed boldquot.sed [email protected] [email protected]… | |
+ | |
+.SUFFIXES: .insert-header .po-update-en | |
+ | |
[email protected]: | |
+ $(MAKE) [email protected] | |
[email protected]: | |
+ $(MAKE) [email protected] | |
+ | |
[email protected]: [email protected] | |
[email protected]: [email protected] | |
+ | |
+.insert-header.po-update-en: | |
+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ | |
+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH;… | |
+ tmpdir=`pwd`; \ | |
+ echo "$$lang:"; \ | |
+ ll=`echo $$lang | sed -e 's/@.*//'`; \ | |
+ LC_ALL=C; export LC_ALL; \ | |
+ cd $(srcdir); \ | |
+ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/n… | |
+ 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.… | |
+ exit 1; \ | |
+ fi; \ | |
+ fi; \ | |
+ else \ | |
+ echo "creation of $$lang.po failed!" 1>&2; \ | |
+ rm -f $$tmpdir/$$lang.new.po; \ | |
+ fi | |
+ | |
[email protected]: insert-header.sin | |
+ sed -e '/^#/d' -e 's/HEADER/[email protected]/g' $(srcdir)/insert-header.… | |
+ | |
[email protected]: insert-header.sin | |
+ sed -e '/^#/d' -e 's/HEADER/[email protected]/g' $(srcdir)/insert-hea… | |
+ | |
+mostlyclean: mostlyclean-quot | |
+mostlyclean-quot: | |
+ rm -f *.insert-header | |
diff --git a/po/boldquot.sed b/po/boldquot.sed | |
t@@ -0,0 +1,10 @@ | |
+s/"\([^"]*\)"/“\1”/g | |
+s/`\([^`']*\)'/‘\1’/g | |
+s/ '\([^`']*\)' / ‘\1’ /g | |
+s/ '\([^`']*\)'$/ ‘\1’/g | |
+s/^'\([^`']*\)' /‘\1’ /g | |
+s/“”/""/g | |
+s/“/“[1m/g | |
+s/”/[0m”/g | |
+s/‘/‘[1m/g | |
+s/’/[0m’/g | |
diff --git a/po/dopewars.pot b/po/dopewars.pot | |
t@@ -0,0 +1,3900 @@ | |
+# SOME DESCRIPTIVE TITLE. | |
+# Copyright (C) YEAR Ben Webb | |
+# This file is distributed under the same license as the PACKAGE package. | |
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | |
+# | |
+#, fuzzy | |
+msgid "" | |
+msgstr "" | |
+"Project-Id-Version: dopewars SVN\n" | |
+"Report-Msgid-Bugs-To: [email protected]\n" | |
+"POT-Creation-Date: 2013-07-08 13:09-0700\n" | |
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | |
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | |
+"Language-Team: LANGUAGE <[email protected]>\n" | |
+"Language: \n" | |
+"MIME-Version: 1.0\n" | |
+"Content-Type: text/plain; charset=CHARSET\n" | |
+"Content-Transfer-Encoding: 8bit\n" | |
+ | |
+#: src/dopewars.c:178 | |
+msgid "bitch" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:180 | |
+msgid "bitches" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:182 | |
+msgid "gun" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:184 | |
+msgid "guns" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:186 | |
+msgid "drug" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:188 | |
+msgid "drugs" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:192 | |
+msgid "%m-%d-%Y" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:195 | |
+msgid "the Loan Shark" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:195 | |
+msgid "the Bank" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:196 | |
+msgid "Dan's House of Guns" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:196 | |
+msgid "the pub" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:236 | |
+msgid "Network port to connect to" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:239 | |
+msgid "Name of the high score file" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:242 | |
+msgid "Name of the server to connect to" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:245 | |
+msgid "Server's welcome message of the day" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:248 | |
+msgid "Network address for the server to listen on" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:252 | |
+msgid "TRUE if a SOCKS server should be used for networking" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:256 | |
+msgid "TRUE if numeric user IDs should be used for SOCKS4" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:260 | |
+msgid "If not blank, the username to use for SOCKS4" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:263 | |
+msgid "The hostname of a SOCKS server to use" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:266 | |
+msgid "The port number of a SOCKS server to use" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:269 | |
+msgid "The version of the SOCKS protocol to use (4 or 5)" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:272 | |
+msgid "Username for SOCKS5 authentication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:275 | |
+msgid "Password for SOCKS5 authentication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:278 | |
+msgid "TRUE if server should report to a metaserver" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:281 | |
+msgid "Metaserver name to report/get server details to/from" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:284 | |
+msgid "Port for metaserver communication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:287 | |
+msgid "Name of a proxy for metaserver communication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:290 | |
+msgid "Port for communicating with the proxy server" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:293 | |
+msgid "Path of the script on the metaserver" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:296 | |
+msgid "Preferred hostname of your server machine" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:299 | |
+msgid "Authentication for LocalName with the metaserver" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:302 | |
+msgid "Server description, reported to the metaserver" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:305 | |
+msgid "If TRUE, use SOCKS for metaserver communication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:308 | |
+msgid "Username for HTTP Basic authentication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:312 | |
+msgid "Password for HTTP Basic authentication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:315 | |
+msgid "Username for HTTP Basic proxy authentication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:319 | |
+msgid "Password for HTTP Basic proxy authentication" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:324 | |
+msgid "If TRUE, the server minimizes to the System Tray" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:328 | |
+msgid "If TRUE, the server runs in the background" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:331 | |
+msgid "The command used to start your web browser" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:335 | |
+msgid "No. of game turns (if 0, game never ends)" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:338 | |
+msgid "Day of the month on which the game starts" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:341 | |
+msgid "Month in which the game starts" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:344 | |
+msgid "Year in which the game starts" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:347 | |
+msgid "The currency symbol (e.g. $)" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:350 | |
+msgid "If TRUE, the currency symbol precedes prices" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:353 | |
+msgid "File to write log messages to" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:356 | |
+msgid "Controls the number of log messages produced" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:359 | |
+msgid "strftime() format string for log timestamps" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:362 | |
+msgid "Random events are sanitized" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:365 | |
+msgid "TRUE if the value of bought drugs should be saved" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:368 | |
+msgid "Be verbose in processing config file" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:371 | |
+msgid "Number of locations in the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:375 | |
+msgid "Number of types of cop in the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:379 | |
+msgid "Number of guns in the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:383 | |
+msgid "Number of drugs in the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:387 | |
+msgid "Location of the Loan Shark" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:389 | |
+msgid "Location of the bank" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:392 | |
+msgid "Location of the gun shop" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:395 | |
+msgid "Location of the pub" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:398 | |
+msgid "Daily interest rate on the loan shark debt" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:401 | |
+msgid "Daily interest rate on your bank balance" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:404 | |
+msgid "Name of the loan shark" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:406 | |
+msgid "Name of the bank" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:408 | |
+msgid "Name of the gun shop" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:410 | |
+msgid "Name of the pub" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:412 | |
+msgid "TRUE if sounds should be enabled" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:415 | |
+msgid "Sound file played for a gun \"hit\"" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:418 | |
+msgid "Sound file played for a gun \"miss\"" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:421 | |
+msgid "Sound file played when guns are reloaded" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:424 | |
+msgid "Sound file played when an enemy bitch/deputy is killed" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:427 | |
+msgid "Sound file played when one of your bitches is killed" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:430 | |
+msgid "Sound file played when another player or cop is killed" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:433 | |
+msgid "Sound file played when you are killed" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:436 | |
+msgid "Sound file played when a player tries to escape, but fails" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:439 | |
+msgid "Sound file played when you try to escape, but fail" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:442 | |
+msgid "Sound file played when a player successfully escapes" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:445 | |
+msgid "Sound file played when you successfully escape" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:448 | |
+msgid "Sound file played on arriving at a new location" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:451 | |
+msgid "Sound file played when a player sends a public chat message" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:454 | |
+msgid "Sound file played when a player sends a private chat message" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:457 | |
+msgid "Sound file played when a player joins the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:460 | |
+msgid "Sound file played when a player leaves the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:463 | |
+msgid "Sound file played at the start of the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:466 | |
+msgid "Sound file played at the end of the game" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:469 | |
+msgid "Sort key for listing available drugs" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:472 | |
+msgid "No. of seconds in which to return fire" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:475 | |
+msgid "Players are disconnected after this many seconds" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:478 | |
+msgid "Time in seconds for connections to be made or broken" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:481 | |
+msgid "Maximum number of TCP/IP connections" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:484 | |
+msgid "Seconds between turns of AI players" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:487 | |
+msgid "Amount of cash that each player starts with" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:490 | |
+msgid "Amount of debt that each player starts with" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:493 | |
+msgid "Name of each location" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:497 | |
+msgid "Police presence at each location (%)" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:501 | |
+msgid "Minimum number of drugs at each location" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:505 | |
+msgid "Maximum number of drugs at each location" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:509 | |
+msgid "% resistance to gunshots of each player" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:512 | |
+msgid "% resistance to gunshots of each bitch" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:515 | |
+msgid "Name of each cop" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:519 | |
+msgid "Name of each cop's deputy" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:523 | |
+msgid "Name of each cop's deputies" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:527 | |
+msgid "% resistance to gunshots of each cop" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:531 | |
+msgid "% resistance to gunshots of each deputy" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:535 | |
+msgid "Attack penalty relative to a player" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:539 | |
+msgid "Defend penalty relative to a player" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:543 | |
+msgid "Minimum number of accompanying deputies" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:547 | |
+msgid "Maximum number of accompanying deputies" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:551 | |
+msgid "Zero-based index of the gun that cops are armed with" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:555 | |
+msgid "Number of guns that each cop carries" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:559 | |
+msgid "Number of guns that each deputy carries" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:563 | |
+msgid "Name of each drug" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:567 | |
+msgid "Minimum normal price of each drug" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:571 | |
+msgid "Maximum normal price of each drug" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:575 | |
+msgid "TRUE if this drug can be specially cheap" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:579 | |
+msgid "TRUE if this drug can be specially expensive" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:583 | |
+msgid "Message displayed when this drug is specially cheap" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:587 src/dopewars.c:590 | |
+#, c-format | |
+msgid "Format string used for expensive drugs 50% of time" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:593 | |
+msgid "Divider for drug price when it's specially cheap" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:597 | |
+msgid "Multiplier for specially expensive drug prices" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:600 | |
+msgid "Name of each gun" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:604 | |
+msgid "Price of each gun" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:608 | |
+msgid "Space taken by each gun" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:612 | |
+msgid "Damage done by each gun" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:616 | |
+msgid "Word used to denote a single \"bitch\"" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:619 | |
+msgid "Word used to denote two or more \"bitches\"" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:622 | |
+msgid "Word used to denote a single gun or equivalent" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:625 | |
+msgid "Word used to denote two or more guns" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:628 | |
+msgid "Word used to denote a single drug or equivalent" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:631 | |
+msgid "Word used to denote two or more drugs" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:634 | |
+msgid "strftime() format string for displaying the game turn" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:637 | |
+msgid "Cost for a bitch to spy on the enemy" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:640 | |
+msgid "Cost for a bitch to tipoff the cops to an enemy" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:643 | |
+msgid "Minimum price to hire a bitch" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:646 | |
+msgid "Maximum price to hire a bitch" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:649 | |
+msgid "List of things which you overhear on the subway" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:652 | |
+msgid "Number of subway sayings" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:655 | |
+msgid "List of songs which you can hear playing" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:658 | |
+msgid "Number of playing songs" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:661 | |
+msgid "List of things which you can stop to do" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:664 | |
+msgid "Number of things which you can stop to do" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:674 | |
+msgid "`Are you Experienced` by Jimi Hendrix" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:675 | |
+msgid "`Cheeba Cheeba` by Tone Loc" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:676 | |
+msgid "`Comin` in to Los Angeles` by Arlo Guthrie" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:677 | |
+msgid "`Commercial` by Spanky and Our Gang" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:678 | |
+msgid "`Late in the Evening` by Paul Simon" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:679 | |
+msgid "`Light Up` by Styx" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:680 | |
+msgid "`Mexico` by Jefferson Airplane" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:681 | |
+msgid "`One toke over the line` by Brewer & Shipley" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:682 | |
+msgid "`The Smokeout` by Shel Silverstein" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:683 | |
+msgid "`White Rabbit` by Jefferson Airplane" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:684 | |
+msgid "`Itchycoo Park` by Small Faces" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:685 | |
+msgid "`White Punks on Dope` by the Tubes" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:686 | |
+msgid "`Legend of a Mind` by the Moody Blues" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:687 | |
+msgid "`Eight Miles High` by the Byrds" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:688 | |
+msgid "`Acapulco Gold` by Riders of the Purple Sage" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:689 | |
+msgid "`Kicks` by Paul Revere & the Raiders" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:690 | |
+msgid "the Nixon tapes" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:691 | |
+msgid "`Legalize It` by Mojo Nixon & Skid Roper" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:700 | |
+msgid "have a beer" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:701 | |
+msgid "smoke a joint" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:702 | |
+msgid "smoke a cigar" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:703 | |
+msgid "smoke a Djarum" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:704 | |
+msgid "smoke a cigarette" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:709 | |
+msgid "Officer Hardass" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:711 src/dopewars.c:715 | |
+msgid "deputy" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:713 src/dopewars.c:715 | |
+msgid "deputies" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:715 | |
+msgid "Officer Bob" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:717 | |
+msgid "Agent Smith" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:717 | |
+msgid "cop" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:717 | |
+msgid "cops" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:722 | |
+msgid "Baretta" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:723 | |
+msgid ".38 Special" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:724 | |
+msgid "Ruger" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:725 | |
+msgid "Saturday Night Special" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:731 | |
+msgid "Acid" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:732 | |
+msgid "The market is flooded with cheap home-made acid!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:733 | |
+msgid "Cocaine" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:734 | |
+msgid "Hashish" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:735 | |
+msgid "The Marrakesh Express has arrived!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:736 | |
+msgid "Heroin" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:737 | |
+msgid "Ludes" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:738 | |
+msgid "Rival drug dealers raided a pharmacy and are selling cheap ludes!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:739 | |
+msgid "MDA" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:740 | |
+msgid "Opium" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:741 | |
+msgid "PCP" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:742 | |
+msgid "Peyote" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:743 | |
+msgid "Shrooms" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:744 | |
+msgid "Speed" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:745 | |
+msgid "Weed" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:746 | |
+msgid "" | |
+"Columbian freighter dusted the Coast Guard! Weed prices have bottomed out!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:754 | |
+msgid "Bronx" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:755 | |
+msgid "Ghetto" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:756 | |
+msgid "Central Park" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:757 | |
+msgid "Manhattan" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:758 | |
+msgid "Coney Island" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:759 | |
+msgid "Brooklyn" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:760 | |
+msgid "Queens" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:761 | |
+msgid "Staten Island" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:767 | |
+#, c-format | |
+msgid "Cops made a big %tde bust! Prices are outrageous!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:768 | |
+#, c-format | |
+msgid "Addicts are buying %tde at ridiculous prices!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:778 | |
+msgid "Wouldn't it be funny if everyone suddenly quacked at once?" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:779 | |
+msgid "The Pope was once Jewish, you know" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:780 | |
+msgid "I'll bet you have some really interesting dreams" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:781 | |
+msgid "So I think I'm going to Amsterdam this year" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:782 | |
+msgid "Son, you need a yellow haircut" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:783 | |
+msgid "I think it's wonderful what they're doing with incense these days" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:784 | |
+msgid "I wasn't always a woman, you know" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:785 | |
+msgid "Does your mother know you're a dope dealer?" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:786 | |
+msgid "Are you high on something?" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:787 | |
+msgid "Oh, you must be from California" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:788 | |
+msgid "I used to be a hippie, myself" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:789 | |
+msgid "There's nothing like having lots of money" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:790 | |
+msgid "You look like an aardvark!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:791 | |
+msgid "I don't believe in Ronald Reagan" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:792 | |
+msgid "Courage! Bush is a noodle!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:793 | |
+msgid "Haven't I seen you on TV?" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:794 | |
+msgid "I think hemorrhoid commercials are really neat!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:795 | |
+msgid "We're winning the war for drugs!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:796 | |
+msgid "A day without dope is like night" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:798 | |
+#, no-c-format | |
+msgid "We only use 20% of our brains, so why not burn out the other 80%" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:799 | |
+msgid "I'm soliciting contributions for Zombies for Christ" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:800 | |
+msgid "I'd like to sell you an edible poodle" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:801 | |
+msgid "Winners don't do drugs... unless they do" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:802 | |
+msgid "Kill a cop for Christ!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:803 | |
+msgid "I am the walrus!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:804 | |
+msgid "Jesus loves you more than you will know" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:805 | |
+msgid "I feel an unaccountable urge to dye my hair blue" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:806 | |
+msgid "Wasn't Jane Fonda wonderful in Barbarella" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:807 | |
+msgid "Just say No... well, maybe... ok, what the hell!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:808 | |
+msgid "Would you like a jelly baby?" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:809 | |
+msgid "Drugs can be your friend!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:1880 | |
+#, c-format | |
+msgid "Unable to process configuration file %s, line %d" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:1916 | |
+#, c-format | |
+msgid "Unable to open file %s" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:1980 | |
+msgid "" | |
+"Configuration can only be changed interactively when no\n" | |
+"players are logged on. Wait for all players to log off, or remove\n" | |
+"them with the push or kill commands, and try again." | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2093 | |
+#, c-format | |
+msgid "Index into %s array should be between 1 and %d" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2118 | |
+#, c-format | |
+msgid "%s is %d\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2123 | |
+#, c-format | |
+msgid "%s is %s\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2129 | |
+msgid "%s is %P\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2134 | |
+#, c-format | |
+msgid "%s is \"%s\"\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2140 | |
+#, c-format | |
+msgid "%s[%d] is %s\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2149 | |
+#, c-format | |
+msgid "%s is { " | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2204 | |
+#, c-format | |
+msgid "%s can be no smaller than %d - ignoring!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2210 | |
+#, c-format | |
+msgid "%s can be no larger than %d - ignoring!" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2219 | |
+#, c-format | |
+msgid "Resized structure list to %d elements\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2257 | |
+msgid "expected a boolean value (one of 0, FALSE, 1, TRUE)" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2436 | |
+msgid "$" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2440 | |
+msgid "Currency.Prefix=TRUE" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2567 | |
+msgid "" | |
+" -u, --plugin=FILE use sound plugin \"FILE\"\n" | |
+" " | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2570 | |
+msgid "" | |
+" -u file use sound plugin \"file\"\n" | |
+"\t " | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2574 | |
+#, c-format | |
+msgid "(%s available)\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2580 | |
+#, c-format | |
+msgid "dopewars version %s\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2589 | |
+#, c-format | |
+msgid "" | |
+"Usage: dopewars [OPTION]...\n" | |
+"Drug dealing game based on \"Drug Wars\" by John E. Dell\n" | |
+" -b, --no-color, \"black and white\" - i.e. do not use pretty " | |
+"colours\n" | |
+" --no-colour (by default colours are used where available)\n" | |
+" -n, --single-player be boring and don't connect to any available " | |
+"dopewars\n" | |
+" servers (i.e. single player mode)\n" | |
+" -a, --antique \"antique\" dopewars - keep as closely to the " | |
+"original\n" | |
+" version as possible (no networking)\n" | |
+" -f, --scorefile=FILE specify a file to use as the high score table (by\n" | |
+" default %s/dopewars.sco is used)\n" | |
+" -o, --hostname=ADDR specify a hostname where the server for " | |
+"multiplayer\n" | |
+" dopewars can be found\n" | |
+" -s, --public-server run in server mode (note: see the -A option for\n" | |
+" configuring a server once it's running)\n" | |
+" -S, --private-server run a \"private\" server (do not notify the " | |
+"metaserver)\n" | |
+" -p, --port=PORT specify the network port to use (default: 7902)\n" | |
+" -g, --config-file=FILE specify the pathname of a dopewars configuration " | |
+"file;\n" | |
+" this file is read immediately when the -g " | |
+"option\n" | |
+" is encountered\n" | |
+" -r, --pidfile=FILE maintain pid file \"FILE\" while running the " | |
+"server\n" | |
+" -l, --logfile=FILE write log information to \"FILE\"\n" | |
+" -A, --admin connect to a locally-running server for " | |
+"administration\n" | |
+" -c, --ai-player create and run a computer player\n" | |
+" -w, --windowed-client force the use of a graphical (windowed)\n" | |
+" client (GTK+ or Win32)\n" | |
+" -t, --text-client force the use of a text-mode client (curses) (by\n" | |
+" default, a windowed client is used when " | |
+"possible)\n" | |
+" -P, --player=NAME set player name to \"NAME\"\n" | |
+" -C, --convert=FILE convert an \"old format\" score file to the new " | |
+"format\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2619 | |
+msgid "" | |
+" -h, --help display this help information\n" | |
+" -v, --version output version information and exit\n" | |
+"\n" | |
+"dopewars is Copyright (C) Ben Webb 1998-2011, and released under the GNU " | |
+"GPL\n" | |
+"Report bugs to the author at [email protected]\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2626 | |
+#, c-format | |
+msgid "" | |
+"Usage: dopewars [OPTION]...\n" | |
+"Drug dealing game based on \"Drug Wars\" by John E. Dell\n" | |
+" -b \"black and white\" - i.e. do not use pretty colours\n" | |
+" (by default colours are used where the terminal supports " | |
+"them)\n" | |
+" -n be boring and don't connect to any available dopewars servers\n" | |
+" (i.e. single player mode)\n" | |
+" -a \"antique\" dopewars - keep as closely to the original version " | |
+"as\n" | |
+" possible (no networking)\n" | |
+" -f file specify a file to use as the high score table\n" | |
+" (by default %s/dopewars.sco is used)\n" | |
+" -o addr specify a hostname where the server for multiplayer dopewars\n" | |
+" can be found\n" | |
+" -s run in server mode (note: see the -A option for configuring a\n" | |
+" server once it's running)\n" | |
+" -S run a \"private\" server (i.e. do not notify the metaserver)\n" | |
+" -p port specify the network port to use (default: 7902)\n" | |
+" -g file specify the pathname of a dopewars configuration file; this file\n" | |
+" is read immediately when the -g option is encountered\n" | |
+" -r file maintain pid file \"file\" while running the server\n" | |
+" -l file write log information to \"file\"\n" | |
+" -c create and run a computer player\n" | |
+" -w force the use of a graphical (windowed) client (GTK+ or Win32)\n" | |
+" -t force the use of a text-mode client (curses)\n" | |
+" (by default, a windowed client is used when possible)\n" | |
+" -P name set player name to \"name\"\n" | |
+" -C file convert an \"old format\" score file to the new format\n" | |
+" -A connect to a locally-running server for administration\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2655 | |
+msgid "" | |
+" -h display this help information\n" | |
+" -v output version information and exit\n" | |
+"\n" | |
+"dopewars is Copyright (C) Ben Webb 1998-2011, and released under the GNU " | |
+"GPL\n" | |
+"Report bugs to the author at [email protected]\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2917 | |
+msgid "" | |
+"No curses client available - rebuild the binary passing the\n" | |
+"--enable-curses-client option to configure, or use a windowed\n" | |
+"client (if available) instead!\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2937 | |
+msgid "" | |
+"No graphical client available - rebuild the binary\n" | |
+"passing the --enable-gui-client option to configure, or\n" | |
+"use the curses client (if available) instead!\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:2983 | |
+msgid "" | |
+"This binary has been compiled without networking support, and thus cannot " | |
+"run\n" | |
+"in admin mode. Recompile passing --enable-networking to the configure " | |
+"script.\n" | |
+msgstr "" | |
+ | |
+#: src/dopewars.c:3004 src/winmain.c:342 | |
+msgid "" | |
+"This binary has been compiled without networking support, and thus cannot " | |
+"run\n" | |
+"in server mode. Recompile passing --enable-networking to the configure " | |
+"script.\n" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:272 | |
+msgid "English Translation Ben Webb" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:280 | |
+msgid "D O P E W A R S" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:285 | |
+msgid "" | |
+"Based on John E. Dell's old Drug Wars game, dopewars is a simulation of an" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:287 | |
+msgid "imaginary drug market. dopewars is an All-American game which features" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:289 | |
+msgid "buying, selling, and trying to get past the cops!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:291 | |
+msgid "" | |
+"The first thing you need to do is pay off your debt to the Loan Shark. After" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:293 | |
+msgid "that, your goal is to make as much money as possible (and stay alive)!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:295 | |
+msgid "You have one month of game time to make your fortune." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:297 | |
+#, c-format | |
+msgid "Version %-8s Copyright (C) 1998-2011 Ben Webb [email protected]" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:300 | |
+msgid "dopewars is released under the GNU General Public Licence" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:308 | |
+msgid "Icons and Graphics Ocelot Mantis" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:309 | |
+msgid "Sounds Robin Kohli, 19.5degs.com" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:310 | |
+msgid "Drug Dealing and Research Dan Wolf" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:311 | |
+msgid "Play Testing Phil Davis Owen Walsh" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:313 | |
+msgid "Extensive Play Testing Katherine Holt Caroline Moore" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:315 | |
+msgid "Constructive Criticism Andrea Elliot-Smith Pete Winn" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:317 | |
+msgid "Unconstructive Criticism James Matthews" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:319 | |
+msgid "For information on the command line options, type dopewars -h at your" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:321 | |
+msgid "" | |
+"Unix prompt. This will display a help screen, listing the available options." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:347 | |
+msgid "Please enter the hostname and port of a dopewars server:-" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:348 | |
+msgid "Hostname: " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:352 | |
+msgid "Port: " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:379 | |
+msgid "Please wait... attempting to contact metaserver..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:437 | |
+#, c-format | |
+msgid "Server : %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:439 | |
+#, c-format | |
+msgid "Port : %d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:441 | |
+#, c-format | |
+msgid "Version : %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:444 | |
+#, c-format | |
+msgid "Players: -unknown- (maximum %d)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:447 | |
+#, c-format | |
+msgid "Players: %d (maximum %d)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:451 | |
+#, c-format | |
+msgid "Up since : %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:453 | |
+#, c-format | |
+msgid "Comment: %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:457 | |
+msgid "N>ext server; P>revious server; S>elect this server... " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:463 | |
+msgid "NPS" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:516 | |
+#, c-format | |
+msgid "Connected to SOCKS server %s..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:520 | |
+msgid "Authenticating with SOCKS server" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:523 | |
+#, c-format | |
+msgid "Asking SOCKS for connect to %s..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:546 | |
+#, c-format | |
+msgid "Proxy authentication required for realm %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:550 | |
+#, c-format | |
+msgid "Authentication required for realm %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:553 | |
+msgid "(Enter a blank username to cancel)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:556 src/curses_client/curses_client.c:575 | |
+msgid "User name: " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:558 src/curses_client/curses_client.c:577 | |
+msgid "Password: " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:572 | |
+msgid "SOCKS authentication required (enter a blank username to cancel)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:671 | |
+msgid "Please wait... attempting to contact dopewars server..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:682 | |
+msgid "Cannot get metaserver details" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:690 | |
+msgid "Could not start multiplayer dopewars" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:698 | |
+msgid "Will you... C>onnect to a named dopewars server" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:700 | |
+msgid " L>ist the servers on the metaserver, and select one" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:703 | |
+msgid "" | |
+" Q>uit (where you can start a server by typing \"dopewars -s\")" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:705 | |
+msgid " or P>lay single-player ? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:710 | |
+msgid "CLQP" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:803 | |
+#, c-format | |
+msgid "%d. %tde" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:810 src/gui_client/gtk_client.c:1454 | |
+msgid "Where to, dude ? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:816 | |
+msgid "%/Location display/%tde" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:852 | |
+#, c-format | |
+msgid "You can't get any cash for the following carried %tde :" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:865 | |
+msgid "What do you want to drop? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:875 | |
+msgid "How many do you drop? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:911 | |
+#: src/curses_client/curses_client.c:1395 | |
+msgid "What do you wish to buy? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:913 | |
+#: src/curses_client/curses_client.c:1347 | |
+msgid "What do you wish to sell? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:931 | |
+#, c-format | |
+msgid "You can afford %d, and can carry %d. " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:934 | |
+msgid "How many do you buy? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:947 | |
+#, c-format | |
+msgid "You have %d. " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:950 | |
+msgid "How many do you sell? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:983 | |
+#, c-format | |
+msgid "Choose an errand to give one of your %tde..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:989 | |
+msgid " S>py on another dealer (cost: %P)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:993 | |
+msgid " T>ip off the cops to another dealer (cost: %P)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:996 | |
+msgid " G>et stuffed" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:999 | |
+msgid "or C>ontact your spies and receive reports" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1001 | |
+msgid "or N>o errand ? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1008 | |
+msgid "STGCN" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1013 | |
+msgid "Whom do you want to spy on? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1019 | |
+msgid "Whom do you want to tip the cops off to? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1026 | |
+msgid " Are you sure? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1031 | |
+#: src/curses_client/curses_client.c:1054 | |
+#: src/curses_client/curses_client.c:2711 | |
+msgid "YN" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1052 | |
+msgid "Are you sure you want to quit? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1065 | |
+msgid "New name: " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1132 | |
+msgid "You have been pushed from the server. Reverting to single player mode." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1142 | |
+msgid "The server has terminated. Reverting to single player mode." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1162 src/gui_client/gtk_client.c:503 | |
+#: src/serverside.c:450 | |
+#, c-format | |
+msgid "%s joins the game!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1169 src/gui_client/gtk_client.c:512 | |
+#, c-format | |
+msgid "%s has left the game." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1177 | |
+#, c-format | |
+msgid "%s will now be known as %s." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1199 | |
+msgid "S U B W A Y" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1206 | |
+#: src/curses_client/curses_client.c:2012 src/gui_client/gtk_client.c:1215 | |
+msgid "%/Current location/%tde" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1248 | |
+msgid "" | |
+"Unfortunately, somebody else is already using \"your\" name. Please change " | |
+"it." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1275 | |
+msgid "H I G H S C O R E S" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1339 src/gui_client/gtk_client.c:1817 | |
+#, c-format | |
+msgid "You don't have any %tde to sell!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1358 src/gui_client/gtk_client.c:1838 | |
+msgid "You don't have any to sell!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1386 src/gui_client/gtk_client.c:1823 | |
+#, c-format | |
+msgid "You'll need more %tde to carry any more %tde!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1407 src/gui_client/gtk_client.c:1829 | |
+#, c-format | |
+msgid "You don't have enough space to carry that %tde!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1417 src/gui_client/gtk_client.c:1834 | |
+#, c-format | |
+msgid "You don't have enough cash to buy that %tde!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1457 | |
+msgid "Will you B>uy, S>ell, or L>eave? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1467 | |
+msgid "BSL" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1490 | |
+msgid "How much money do you pay back? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1501 | |
+#: src/curses_client/curses_client.c:1547 src/gui_client/gtk_client.c:2534 | |
+msgid "You don't have that much money!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1526 | |
+msgid "Do you want to D>eposit money, W>ithdraw money, or L>eave ? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1532 | |
+msgid "DWL" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1536 | |
+msgid "How much money? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1552 | |
+msgid "There isn't that much money in the bank..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1586 | |
+msgid "Y:Yes" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1586 | |
+msgid "N:No" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1586 | |
+msgid "R:Run" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1587 | |
+msgid "F:Fight" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1587 | |
+msgid "A:Attack" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1587 | |
+msgid "E:Evade" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1700 | |
+msgid "Press any key..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1963 | |
+msgid "Messages (-/+ scrolls up/down)" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1973 src/gui_client/gtk_client.c:2284 | |
+msgid "Stats" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1979 | |
+msgid "Cash %17P" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1983 | |
+msgid "%-19Tde%3d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1988 | |
+#, c-format | |
+msgid "Health %3d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1992 | |
+msgid "Bank %17P" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:1998 | |
+msgid "Debt %17P" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2004 | |
+#, c-format | |
+msgid "Space %6d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2008 | |
+msgid "%Tde %3d Space %6d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2021 | |
+msgid "Trenchcoat" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2027 | |
+msgid "%/Stats: Drugs/%Tde" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2035 | |
+msgid "%-7tde %3d @ %P" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2042 | |
+#, c-format | |
+msgid "%-7tde %3d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2052 | |
+msgid "%/Stats: Guns/%Tde" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2057 | |
+#, c-format | |
+msgid "%-22tde %3d" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2082 | |
+#, c-format | |
+msgid "Spy reports for %s" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2088 | |
+msgid "%/Spy: Drugs/%Tde..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2096 | |
+msgid "%/Spy: Guns/%Tde..." | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2124 | |
+msgid "No other players are currently logged on!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2129 | |
+msgid "Players currently logged on:-" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2279 | |
+#, c-format | |
+msgid "Hey dude, the prices of %tde here are:" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2288 | |
+msgid "%c. %-10tde %8P" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2332 | |
+msgid "Cannot install SIGWINCH interrupt handler!" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2349 | |
+msgid "Hey dude, what's your name? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2393 | |
+msgid "Will you B>uy" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2395 | |
+msgid ", S>ell" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2397 | |
+msgid ", D>rop" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2399 | |
+msgid ", T>alk, P>age" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2400 | |
+msgid ", L>ist" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2403 | |
+msgid ", G>ive" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2406 | |
+msgid ", F>ight" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2408 | |
+msgid ", J>et" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2410 | |
+msgid ", or Q>uit? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2419 | |
+msgid "Do you " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2422 | |
+msgid "F>ight, " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2424 | |
+msgid "S>tand, " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2428 | |
+msgid "R>un, " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2431 | |
+#, c-format | |
+msgid "D>eal %tde, " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2432 | |
+msgid "or Q>uit? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2497 | |
+msgid "Connection to server lost! Reverting to single player mode" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2522 | |
+msgid "BSDTPLGFJQ" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2528 | |
+msgid "DRFSQ" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2560 | |
+msgid "List what? P>layers or S>cores? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2562 | |
+msgid "PS" | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2575 | |
+msgid "Whom do you want to page (talk privately to) ? " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2581 | |
+#: src/curses_client/curses_client.c:2595 | |
+msgid "Talk: " | |
+msgstr "" | |
+ | |
+#: src/curses_client/curses_client.c:2710 | |
+msgid "Play again? " | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:159 | |
+msgid "/_Game" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:160 | |
+msgid "/Game/_New..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:161 | |
+msgid "/Game/_Abandon..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:162 | |
+msgid "/Game/_Options..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:163 | |
+msgid "/Game/Enable _sound" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:164 | |
+msgid "/Game/_Quit..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:165 | |
+msgid "/_Talk" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:166 | |
+msgid "/Talk/To _All..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:167 | |
+msgid "/Talk/To _Player..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:168 | |
+msgid "/_List" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:169 | |
+msgid "/List/_Players..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:170 | |
+msgid "/List/_Scores..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:171 | |
+msgid "/List/_Inventory..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:172 | |
+msgid "/_Errands" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:173 | |
+msgid "/Errands/_Spy..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:174 | |
+msgid "/Errands/_Tipoff..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:178 | |
+msgid "/Errands/_Get spy reports..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:179 | |
+msgid "/_Help" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:180 | |
+msgid "/Help/_About..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:194 | |
+msgid "Warning" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:195 | |
+msgid "Error" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:196 | |
+msgid "Message" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:228 src/gui_client/gtk_client.c:244 | |
+#: src/gui_client/gtk_client.c:253 src/gui_client/gtk_client.c:275 | |
+msgid "Abandon current game?" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:230 src/gui_client/gtk_client.c:245 | |
+msgid "Quit Game" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:255 | |
+msgid "Start new game" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:277 | |
+msgid "Abandon game" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:317 | |
+msgid "Inventory" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:396 | |
+msgid "Connection to server lost - switching to single player mode" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:463 | |
+msgid "" | |
+"You have been pushed from the server.\n" | |
+"Switching to single player mode." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:471 | |
+msgid "" | |
+"The server has terminated.\n" | |
+"Switching to single player mode." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:530 | |
+#, c-format | |
+msgid "Jetting to %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:541 | |
+msgid "%/Sack Bitch menu item/S_ack %Tde..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:550 | |
+msgid "_Spy (%P)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:556 | |
+msgid "_Tipoff (%P)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:615 | |
+msgid "High Scores" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:668 src/gui_client/gtk_client.c:696 | |
+msgid "Corrupt high score!" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:902 | |
+msgid "Fight" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:943 | |
+msgid "_Deal %Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:950 src/gui_client/gtk_client.c:1876 | |
+#: src/gui_client/gtk_client.c:2147 | |
+msgid "_Fight" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:954 | |
+msgid "_Stand" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:958 src/gui_client/gtk_client.c:1875 | |
+msgid "_Run" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1024 | |
+msgid "%/Combat: Bitches/%d %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1029 | |
+msgid "(Left)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1031 | |
+msgid "(Dead)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1033 | |
+#, c-format | |
+msgid "Health: %d" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1050 | |
+msgid "You" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1239 | |
+msgid "%/GTK Stats: Guns/%Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1247 | |
+msgid "%/GTK Stats: Bitches/%Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1338 | |
+msgid "%/Inventory drug name/%tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1342 | |
+msgid "%/Inventory gun name/%tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1441 | |
+msgid "Jet to location" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1484 | |
+msgid "%/Location to jet to/%tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1493 | |
+#, c-format | |
+msgid "_%c. %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1529 | |
+msgid "at %P" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1536 | |
+#, c-format | |
+msgid "You are currently carrying %d %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1543 | |
+#, c-format | |
+msgid "Available space: %d" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1556 | |
+#, c-format | |
+msgid "You can afford %d" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1617 src/gui_client/gtk_client.c:1783 | |
+msgid "Buy" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1619 src/gui_client/gtk_client.c:1785 | |
+msgid "Sell" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1621 src/gui_client/gtk_client.c:1787 | |
+msgid "Drop" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1696 | |
+msgid "%/DealDrugs drug name/%tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1730 | |
+msgid "Buy how many?" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1732 | |
+msgid "Sell how many?" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1734 | |
+msgid "Drop how many?" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1807 | |
+#, c-format | |
+msgid "Buy %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1809 | |
+#, c-format | |
+msgid "Sell %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1811 | |
+#, c-format | |
+msgid "Drop %tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1875 src/gtkport/gtkport.c:50 | |
+msgid "_Yes" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1875 src/gtkport/gtkport.c:51 | |
+msgid "_No" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1876 | |
+msgid "_Attack" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1876 | |
+msgid "_Evade" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:1899 | |
+msgid "Question" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2087 | |
+msgid "Space" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2094 | |
+msgid "Cash" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2101 | |
+msgid "Debt" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2108 | |
+msgid "Bank" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2125 | |
+msgid "Health" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2150 | |
+msgid "_Jet!" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2254 src/winmain.c:364 src/winmain.c:373 | |
+msgid "dopewars" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2378 | |
+msgid "English Translation" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2378 | |
+msgid "Ben Webb" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2379 | |
+msgid "Icons and graphics" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2380 src/gui_client/optdialog.c:1001 | |
+msgid "Sounds" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2381 | |
+msgid "Drug Dealing and Research" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2382 | |
+msgid "Play Testing" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2383 | |
+msgid "Extensive Play Testing" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2385 | |
+msgid "Constructive Criticism" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2387 | |
+msgid "Unconstructive Criticism" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2395 | |
+msgid "About dopewars" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2406 | |
+msgid "" | |
+"Based on John E. Dell's old Drug Wars game, dopewars is a simulation of an\n" | |
+"imaginary drug market. dopewars is an All-American game which features\n" | |
+"buying, selling, and trying to get past the cops!\n" | |
+"\n" | |
+"The first thing you need to do is pay off your debt to the Loan Shark. " | |
+"After\n" | |
+"that, your goal is to make as much money as possible (and stay alive)! You\n" | |
+"have one month of game time to make your fortune.\n" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2419 | |
+#, c-format | |
+msgid "" | |
+"Version %s Copyright (C) 1998-2011 Ben Webb [email protected]\n" | |
+"dopewars is released under the GNU General Public Licence\n" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2449 | |
+msgid "" | |
+"\n" | |
+"For information on the command line options, type dopewars -h at your\n" | |
+"Unix prompt. This will display a help screen, listing the available " | |
+"options.\n" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2456 | |
+msgid "Local HTML documentation" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2512 src/gui_client/gtk_client.c:2564 | |
+msgid "%/LoanShark window title/%Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2519 src/gui_client/gtk_client.c:2568 | |
+msgid "%/BankName window title/%Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2528 | |
+msgid "You must enter a positive amount of money!" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2531 | |
+msgid "There isn't that much money available..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2584 | |
+msgid "Cash: %P" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2590 | |
+msgid "Debt: %P" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2593 | |
+msgid "Bank: %P" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2601 | |
+msgid "Pay back:" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2605 | |
+msgid "Deposit" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2611 | |
+msgid "Withdraw" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2642 | |
+msgid "Pay all" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2673 | |
+msgid "Player List" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2773 | |
+msgid "Talk to player(s)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2793 | |
+msgid "Talk to all players" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2799 | |
+msgid "Message:-" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2814 | |
+msgid "Send" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2918 | |
+msgid "Spy On Player" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2922 | |
+#, c-format | |
+msgid "" | |
+"Please choose the player to spy on. Your %tde will\n" | |
+"then offer his services to the player, and if successful,\n" | |
+"you will be able to view the player's stats with the\n" | |
+"\"Get spy reports\" menu. Remember that the %tde will leave\n" | |
+"you, so any %tde or %tde that he's carrying may be lost!" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2937 | |
+msgid "Tip Off The Cops" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2941 | |
+#, c-format | |
+msgid "" | |
+"Please choose the player to tip off the cops to. Your %tde will\n" | |
+"help the cops to attack that player, and then report back to you\n" | |
+"on the encounter. Remember that the %tde will leave you temporarily,\n" | |
+"so any %tde or %tde that he's carrying may be lost!" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2992 | |
+msgid "%/Sack Bitch dialog title/Sack %Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:2997 | |
+#, c-format | |
+msgid "" | |
+"Are you sure? (Any %tde or %tde carried\n" | |
+"by this %tde may be lost!)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3025 src/gui_client/optdialog.c:630 | |
+msgid "Name" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3026 src/gui_client/optdialog.c:767 | |
+msgid "Price" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3027 | |
+msgid "Number" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3030 | |
+msgid "_Buy ->" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3031 | |
+msgid "<- _Sell" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3032 | |
+msgid "_Drop <-" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3039 | |
+msgid "%Tde here" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3045 | |
+msgid "%Tde carried" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3145 | |
+msgid "Change Name" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3158 | |
+msgid "" | |
+"Unfortunately, somebody else is already using \"your\" name. Please change " | |
+"it:-" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3203 | |
+msgid "%/GTK GunShop window title/%Tde" | |
+msgstr "" | |
+ | |
+#: src/gui_client/gtk_client.c:3270 | |
+msgid "Spy reports" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:384 | |
+#, c-format | |
+msgid "New %s" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:560 | |
+msgid "Select sound file" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:674 | |
+msgid "New" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:680 | |
+msgid "Delete" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:690 | |
+msgid "Up" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:698 | |
+msgid "Down" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:753 | |
+msgid "Police presence" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:754 | |
+msgid "Minimum no. of drugs" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:755 | |
+msgid "Maximum no. of drugs" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:759 | |
+msgid "Minimum normal price" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:760 | |
+msgid "Maximum normal price" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:761 | |
+msgid "Can be specially cheap" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:762 | |
+msgid "Cheap string" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:763 | |
+msgid "Can be specially expensive" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:768 | |
+msgid "Inventory space" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:769 | |
+msgid "Damage" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:773 | |
+msgid "Name of one deputy" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:774 | |
+msgid "Name of several deputies" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:775 | |
+msgid "Minimum no. of deputies" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:776 | |
+msgid "Maximum no. of deputies" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:777 | |
+msgid "Cop armour" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:778 | |
+msgid "Deputy armour" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:786 | |
+msgid "Options" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:802 | |
+msgid "Remove drug references" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:805 | |
+msgid "Unicode config file" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:810 | |
+msgid "Game length (turns)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:816 | |
+msgid "Starting cash" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:822 | |
+msgid "Starting debt" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:828 | |
+msgid "Currency symbol" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:833 | |
+msgid "Symbol prefixes prices" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:836 | |
+msgid "Name of one bitch" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:842 | |
+msgid "Name of several bitches" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:849 | |
+msgid "Web browser" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:857 | |
+msgid "General" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:863 | |
+msgid "Locations" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:878 | |
+msgid "Expensive string 1" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:884 | |
+msgid "Expensive string 2" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:891 | |
+msgid "Drugs" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:896 | |
+msgid "Guns" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:901 | |
+msgid "Cops" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:909 | |
+msgid "Server reports to metaserver" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:913 | |
+msgid "Minimize to System Tray" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:917 | |
+msgid "Metaserver hostname" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:923 src/gui_client/optdialog.c:935 | |
+#: src/gui_client/newgamedia.c:464 src/gui_client/newgamedia.c:543 | |
+msgid "Port" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:929 | |
+msgid "Web proxy hostname" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:941 | |
+msgid "Script path" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:947 src/gui_client/newgamedia.c:467 | |
+msgid "Comment" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:953 | |
+msgid "MOTD (welcome message)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:960 src/gui_client/newgamedia.c:463 | |
+#: src/gui_client/newgamedia.c:515 src/gui_client/newgamedia.c:564 | |
+msgid "Server" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:966 | |
+msgid "Sound name" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:967 | |
+msgid "Description" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:982 | |
+msgid "Sound file" | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:989 | |
+msgid "Browse..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/optdialog.c:994 | |
+msgid "Play" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:76 | |
+msgid "You can't start the game without giving a name first!" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:77 src/gui_client/newgamedia.c:488 | |
+msgid "New Game" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:85 | |
+msgid "Status: Waiting for user input" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:105 src/AIPlayer.c:72 | |
+msgid "Connection closed by remote host" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:111 | |
+#, c-format | |
+msgid "Status: Could not connect to metaserver (%s)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:116 | |
+#, c-format | |
+msgid "Status: Could not connect (%s)" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:145 src/gui_client/newgamedia.c:365 | |
+#, c-format | |
+msgid "Status: Attempting to contact %s..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:213 | |
+msgid "Unknown" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:217 | |
+#, c-format | |
+msgid "%d of %d" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:263 | |
+#, c-format | |
+msgid "Status: Connected to SOCKS server %s..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:271 | |
+msgid "Status: Authenticating with SOCKS server" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:278 | |
+#, c-format | |
+msgid "Status: Asking SOCKS for connect to %s..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:287 | |
+msgid "Status: Obtaining server information from metaserver..." | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:465 | |
+msgid "Version" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:466 | |
+msgid "Players" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:501 | |
+msgid "Hey dude, what's your _name?" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:524 | |
+msgid "Host name" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:556 src/gui_client/newgamedia.c:620 | |
+msgid "_Connect" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:569 src/gui_client/newgamedia.c:591 | |
+msgid "Single player" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:576 | |
+msgid "_Antique mode" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:584 | |
+msgid "_Start single-player game" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:596 src/gui_client/newgamedia.c:633 | |
+msgid "Metaserver" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:718 | |
+msgid "Proxy Authentication Required" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:721 | |
+msgid "Authentication Required" | |
+msgstr "" | |
+ | |
+#: src/gui_client/newgamedia.c:834 | |
+msgid "SOCKS Authentication Required" | |
+msgstr "" | |
+ | |
+#: src/gtkport/gtkport.c:46 | |
+msgid "_OK" | |
+msgstr "" | |
+ | |
+#: src/gtkport/gtkport.c:47 | |
+msgid "_Close" | |
+msgstr "" | |
+ | |
+#: src/gtkport/gtkport.c:48 | |
+msgid "_Cancel" | |
+msgstr "" | |
+ | |
+#: src/gtkport/gtkport.c:49 | |
+msgid "_Refresh" | |
+msgstr "" | |
+ | |
+#: src/gtkport/gtkport.c:52 | |
+msgid "_Help" | |
+msgstr "" | |
+ | |
+#: src/winmain.c:290 | |
+msgid "" | |
+"# This is the dopewars startup log, containing any\n" | |
+"# informative messages resulting from configuration\n" | |
+"# file processing and the like.\n" | |
+"\n" | |
+msgstr "" | |
+ | |
+#: src/winmain.c:331 src/serverside.c:1723 | |
+msgid "dopewars server" | |
+msgstr "" | |
+ | |
+#: src/winmain.c:352 | |
+msgid "dopewars AI" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:73 | |
+msgid "escaped" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:73 | |
+msgid "defected" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:73 | |
+msgid "was shot" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:79 | |
+msgid "AE" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:121 | |
+#, c-format | |
+msgid "" | |
+"dopewars server version %s commands and settings\n" | |
+"\n" | |
+"help Displays this help screen\n" | |
+"list Lists all players logged on\n" | |
+"push <player> Politely asks the named player to leave\n" | |
+"kill <player> Abruptly breaks the connection with the named " | |
+"player\n" | |
+"msg:<mesg> Send message to all players\n" | |
+"save <file> Save current configuration to the named file\n" | |
+"quit Gracefully quit, after notifying all players\n" | |
+"<variable>=<value> Sets the named variable to the given value\n" | |
+"<variable> Displays the value of the named variable\n" | |
+"<list>[x].<var>=<value> Sets the named variable in the given list,\n" | |
+" index x, to the given value\n" | |
+"<list>[x].<var> Displays the value of the named list variable\n" | |
+"\n" | |
+"Valid variables are listed below:-\n" | |
+"\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:166 | |
+#, c-format | |
+msgid "Failed to connect to metaserver at %s:%u (%s)" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:182 | |
+msgid "" | |
+"Using MetaServer.Proxy.User and MetaServer.Proxy.Password for HTTP proxy " | |
+"authentication" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:186 | |
+msgid "" | |
+"Unable to authenticate with HTTP proxy; please set MetaServer.Proxy.User and " | |
+"MetaServer.Proxy.Password variables" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:195 | |
+msgid "" | |
+"Using MetaServer.Auth.User and MetaServer.Auth.Password for HTTP " | |
+"authentication" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:199 | |
+msgid "" | |
+"Unable to authenticate with HTTP server; please set MetaServer.Auth.User and " | |
+"MetaServer.Auth.Password variables" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:210 | |
+msgid "Using Socks.Auth.User and Socks.Auth.Password for SOCKS5 authentication" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:241 | |
+msgid "" | |
+"Attempt to connect to metaserver too frequently - waiting for next timeout" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:301 | |
+#, c-format | |
+msgid "Waiting for connect to metaserver at %s:%u..." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:370 | |
+msgid "" | |
+"You appear to be using an extremely old (version 1.4.x) client.^While this " | |
+"will probably work, many of the newer features^will be unsupported. Get the " | |
+"latest version from the^dopewars website, http://dopewars.sourceforge.net/." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:379 | |
+msgid "" | |
+"Warning: your client is too old to support all of this^server's features. " | |
+"For the full \"experience\", get^the latest version of dopewars from " | |
+"the^website, http://dopewars.sourceforge.net/." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:465 | |
+#, c-format | |
+msgid "MaxClients (%d) exceeded - dropping connection" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:471 | |
+msgid "" | |
+"Sorry, but this server has a limit of 1 player, which has been reached." | |
+"^Please try connecting again later." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:478 | |
+#, c-format | |
+msgid "" | |
+"Sorry, but this server has a limit of %d players, which has been reached." | |
+"^Please try connecting again later." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:494 | |
+#, c-format | |
+msgid "%s will now be known as %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:509 | |
+#, c-format | |
+msgid "%s: DENIED jet to invalid location %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:528 | |
+msgid "Your dealing time is up..." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:547 | |
+#, c-format | |
+msgid "%s: DENIED jet to %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:604 | |
+#, c-format | |
+msgid "%s now spying on %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:613 | |
+#, c-format | |
+msgid "%s spy on %s: DENIED" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:619 | |
+#, c-format | |
+msgid "%s tipped off the cops to %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:628 | |
+#, c-format | |
+msgid "%s tipoff about %s: DENIED" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:644 | |
+#, c-format | |
+msgid "Unknown message: %s:%c:%s:%s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:806 | |
+#, c-format | |
+msgid "Maintaining pid file %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:812 | |
+#, c-format | |
+msgid "Cannot create pid file %s: %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:860 | |
+#, c-format | |
+msgid "Cannot create server (listening) socket (%s) Aborting." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:878 | |
+#, c-format | |
+msgid "Cannot bind to port %u (%s) Aborting." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:886 | |
+msgid "Cannot listen to network socket. Aborting." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:892 | |
+#, c-format | |
+msgid "" | |
+"dopewars server version %s ready and waiting for connections on port %d." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:905 | |
+msgid "Cannot install SIGUSR1 interrupt handler!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:911 | |
+msgid "Cannot install SIGHUP interrupt handler!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:917 | |
+msgid "Cannot install SIGINT interrupt handler!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:920 | |
+msgid "Cannot install SIGTERM interrupt handler!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:925 | |
+msgid "Cannot install pipe handler!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:982 | |
+#, c-format | |
+msgid "Configuration file saved OK as %s\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1016 | |
+msgid "Users currently logged on:-\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1024 | |
+msgid "No users currently logged on!\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1028 | |
+#, c-format | |
+msgid "Pushing %s\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1031 src/serverside.c:1042 | |
+msgid "No such user!\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1037 | |
+#, c-format | |
+msgid "%s killed\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1044 | |
+msgid "Unknown command - try \"help\" for help...\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1063 | |
+#, c-format | |
+msgid "got connection from %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1076 | |
+msgid "dopewars server terminating." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1085 | |
+#, c-format | |
+msgid "%s leaves the server!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1200 | |
+msgid "" | |
+"Could not set up Unix domain socket for admin connections - check " | |
+"permissions on /tmp!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1283 | |
+#, c-format | |
+msgid "" | |
+"dopewars server version %s ready for admin commands; try \"help\" for help" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1286 | |
+msgid "New admin connection" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1297 | |
+#, c-format | |
+msgid "Admin command: %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1303 | |
+msgid "Admin connection closed" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1605 src/serverside.c:1624 src/serverside.c:1631 | |
+#: src/serverside.c:1765 | |
+msgid "Failed to set NT Service status" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1611 | |
+msgid "Failed to post service notification message" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1620 | |
+msgid "Failed to register service handler" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1646 | |
+msgid "Failed to start NT Service" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1734 | |
+msgid "Command:" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1943 | |
+#, c-format | |
+msgid "Error reading scores from %s." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1948 | |
+#, c-format | |
+msgid "" | |
+"The high score file %s has been converted to the new format.\n" | |
+"A backup of the old file has been created as %s.\n" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1956 | |
+#, c-format | |
+msgid "" | |
+"Cannot create backup (%s) of the\n" | |
+"high score file: %s." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:1965 | |
+#, c-format | |
+msgid "Cannot open high score file %s: %s." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2070 | |
+#, c-format | |
+msgid "" | |
+"Cannot open high score file %s.\n" | |
+"(%s.) Either ensure you have permissions to access\n" | |
+"this file and directory, or specify an alternate high score file with the\n" | |
+"-f command line option." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2084 | |
+#, c-format | |
+msgid "" | |
+"%s does not appear to be a valid\n" | |
+"high score file - please check it. If it is a high score file\n" | |
+"from an older version of dopewars, then first convert it to the\n" | |
+"new format by running \"dopewars -C %s\"\n" | |
+"from the command line." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2094 | |
+msgid "" | |
+"Errors were encountered during the reading of the configuration file.\n" | |
+"As as result, some settings may not work as expected. Please consult the\n" | |
+"file \"dopewars-log.txt\" for further details." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2099 | |
+msgid "" | |
+"Errors were encountered during the reading of the configuration\n" | |
+"file. As a result, some settings may not work as expected. Please see the\n" | |
+"messages on standard output for further details." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2172 | |
+#, c-format | |
+msgid "Unable to read high score file %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2198 | |
+msgid "Congratulations! You made the high scores!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2211 | |
+msgid "You didn't even make the high score table..." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2232 | |
+#, c-format | |
+msgid "Unable to write high score file %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2259 | |
+msgid "(R.I.P.)" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2302 | |
+#, c-format | |
+msgid "%s: Tipoff from %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2310 | |
+#, c-format | |
+msgid "%s: Spy offered by %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2324 | |
+#, c-format | |
+msgid "One of your %tde was spying for %s.^The spy %s!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2333 | |
+#, c-format | |
+msgid "Your spy working with %s has been discovered!^The spy %s!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2367 | |
+#, c-format | |
+msgid "The lady next to you on the subway said,^ \"%s\"%s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2371 | |
+msgid "^ (at least, you -think- that's what she said)" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2374 | |
+#, c-format | |
+msgid "You hear someone playing %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2383 src/serverside.c:2392 src/serverside.c:2401 | |
+#: src/serverside.c:2410 | |
+#, c-format | |
+msgid "YN^Would you like to visit %tde?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2422 | |
+msgid "YN^^Would you like to hire a %tde for %P?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2435 | |
+#, c-format | |
+msgid "%s^%s is already here!^Do you Attack, or Evade?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2504 | |
+msgid "No cops or guns!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2510 | |
+msgid "Cops cannot attack other cops!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2552 | |
+msgid "Players are already in a fight!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2554 | |
+msgid "Players are already in separate fights!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2559 | |
+msgid "Cannot start fight - no guns to use!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2788 src/serverside.c:3051 | |
+msgid "You're dead! Game over." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2983 | |
+#, c-format | |
+msgid "%s: tipoff by %s finished OK." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2989 | |
+#, c-format | |
+msgid "Following your tipoff, the cops ambushed %s, who was shot dead!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:2993 | |
+#, c-format | |
+msgid "Following your tipoff, the cops ambushed %s, who escaped with %d %tde. " | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3059 | |
+msgid "YN^Do you pay a doctor %P to sew you up?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3088 | |
+msgid "You were mugged in the subway!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3100 | |
+#, c-format | |
+msgid "You meet a friend! He gives you %d %tde." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3106 | |
+#, c-format | |
+msgid "You meet a friend! You give him %d %tde." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3119 | |
+msgid "Sanitized away a RandomOffer" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3124 | |
+#, c-format | |
+msgid "" | |
+"Police dogs chase you for %d blocks! You dropped some %tde! That's a drag, " | |
+"man!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3141 | |
+#, c-format | |
+msgid "You find %d %tde on a dead dude in the subway!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3156 | |
+#, c-format | |
+msgid "Your mama made brownies with some of your %tde! They were great!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3166 | |
+msgid "" | |
+"YN^There is some weed that smells like paraquat here!^It looks good! Will " | |
+"you smoke it? " | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3173 | |
+#, c-format | |
+msgid "You stopped to %s." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3198 | |
+msgid "YN^Would you like to buy a bigger trenchcoat for %P?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3205 | |
+msgid "YN^Hey dude! I'll help carry your %tde for a mere %P. Yes or no?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3218 | |
+msgid "YN^Would you like to buy a %tde for %P?" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3361 src/serverside.c:3471 | |
+#, c-format | |
+msgid "%s: offer was on behalf of %s" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3364 | |
+#, c-format | |
+msgid "%s has accepted your %tde!^Use the G key to contact your spy." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3416 | |
+msgid "" | |
+"You hallucinated for three days on the wildest trip you ever imagined!^Then " | |
+"you died because your brain disintegrated!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3442 | |
+#, c-format | |
+msgid "Too late - %s has just left!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3474 | |
+#, c-format | |
+msgid "%s has rejected your %tde!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3529 | |
+#, c-format | |
+msgid "The cops spot you dropping %tde!" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3762 | |
+msgid "Sending pending updates to the metaserver..." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3767 | |
+msgid "Sending reminder message to the metaserver..." | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3776 | |
+msgid "Player removed due to idle timeout" | |
+msgstr "" | |
+ | |
+#: src/serverside.c:3789 | |
+msgid "Player removed due to connect timeout" | |
+msgstr "" | |
+ | |
+#: src/error.c:67 | |
+msgid "(Error cannot be displayed in UTF-8)" | |
+msgstr "" | |
+ | |
+#: src/error.c:122 | |
+msgid "Connection dropped due to full buffer" | |
+msgstr "" | |
+ | |
+#: src/error.c:129 | |
+#, c-format | |
+msgid "Internal error code %d" | |
+msgstr "" | |
+ | |
+#: src/error.c:154 | |
+msgid "WinSock has not been properly initialised" | |
+msgstr "" | |
+ | |
+#: src/error.c:155 | |
+msgid "Network subsystem is not ready" | |
+msgstr "" | |
+ | |
+#: src/error.c:156 | |
+msgid "WinSock version not supported" | |
+msgstr "" | |
+ | |
+#: src/error.c:157 | |
+msgid "The network subsystem has failed" | |
+msgstr "" | |
+ | |
+#: src/error.c:158 | |
+msgid "Address already in use" | |
+msgstr "" | |
+ | |
+#: src/error.c:159 | |
+msgid "Cannot reach the network" | |
+msgstr "" | |
+ | |
+#: src/error.c:160 | |
+msgid "The connection timed out" | |
+msgstr "" | |
+ | |
+#: src/error.c:161 | |
+msgid "Out of file descriptors" | |
+msgstr "" | |
+ | |
+#: src/error.c:162 | |
+msgid "Out of buffer space" | |
+msgstr "" | |
+ | |
+#: src/error.c:163 | |
+msgid "Operation not supported" | |
+msgstr "" | |
+ | |
+#: src/error.c:164 | |
+msgid "Connection aborted due to failure" | |
+msgstr "" | |
+ | |
+#: src/error.c:165 | |
+msgid "Connection reset by remote host" | |
+msgstr "" | |
+ | |
+#: src/error.c:166 | |
+msgid "Connection refused" | |
+msgstr "" | |
+ | |
+#: src/error.c:167 | |
+msgid "Address family not supported" | |
+msgstr "" | |
+ | |
+#: src/error.c:168 | |
+msgid "Protocol not supported" | |
+msgstr "" | |
+ | |
+#: src/error.c:169 | |
+msgid "Socket type not supported" | |
+msgstr "" | |
+ | |
+#: src/error.c:170 src/error.c:208 | |
+msgid "Host not found" | |
+msgstr "" | |
+ | |
+#: src/error.c:171 src/error.c:209 | |
+msgid "Temporary name server error - try again later" | |
+msgstr "" | |
+ | |
+#: src/error.c:172 | |
+msgid "Failed to contact nameserver" | |
+msgstr "" | |
+ | |
+#: src/error.c:173 | |
+msgid "Valid name, but no DNS data record present" | |
+msgstr "" | |
+ | |
+#: src/error.c:179 | |
+#, c-format | |
+msgid "Network error code %d" | |
+msgstr "" | |
+ | |
+#: src/error.c:216 | |
+#, c-format | |
+msgid "Name server error code %d" | |
+msgstr "" | |
+ | |
+#: src/message.c:416 | |
+#, c-format | |
+msgid "Internal metaserver error \"%s\"" | |
+msgstr "" | |
+ | |
+#: src/message.c:420 | |
+#, c-format | |
+msgid "Bad metaserver reply \"%s\"" | |
+msgstr "" | |
+ | |
+#: src/message.c:424 | |
+#, c-format | |
+msgid "Unknown metaserver error code %d" | |
+msgstr "" | |
+ | |
+#: src/message.c:1163 | |
+msgid "Do you run?" | |
+msgstr "" | |
+ | |
+#: src/message.c:1166 | |
+msgid "Do you run, or fight?" | |
+msgstr "" | |
+ | |
+#: src/message.c:1365 | |
+msgid "pitifully armed" | |
+msgstr "" | |
+ | |
+#: src/message.c:1366 | |
+msgid "lightly armed" | |
+msgstr "" | |
+ | |
+#: src/message.c:1367 | |
+msgid "moderately well armed" | |
+msgstr "" | |
+ | |
+#: src/message.c:1368 | |
+msgid "heavily armed" | |
+msgstr "" | |
+ | |
+#: src/message.c:1368 | |
+msgid "armed to the teeth" | |
+msgstr "" | |
+ | |
+#: src/message.c:1372 | |
+#, c-format | |
+msgid "%s - %s - is chasing you, man!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1376 | |
+#, c-format | |
+msgid "%s and %d %tde - %s - are chasing you, man!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1380 | |
+#, c-format | |
+msgid "%s arrives with %d %tde, %s!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1387 | |
+#, c-format | |
+msgid "%s stands and takes it" | |
+msgstr "" | |
+ | |
+#: src/message.c:1389 | |
+msgid "You stand there like a dummy." | |
+msgstr "" | |
+ | |
+#: src/message.c:1394 | |
+#, c-format | |
+msgid "%s tries to get away, but fails." | |
+msgstr "" | |
+ | |
+#: src/message.c:1397 | |
+msgid "Panic! You can't get away!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1406 | |
+#, c-format | |
+msgid "%s has got away to %tde!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1409 | |
+#, c-format | |
+msgid "%s has got away!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1412 | |
+msgid "You got away!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1418 | |
+msgid "Guns reloaded..." | |
+msgstr "" | |
+ | |
+#: src/message.c:1423 | |
+#, c-format | |
+msgid "%s shoots at %s... and misses!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1426 | |
+#, c-format | |
+msgid "%s shoots at you... and misses!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1429 | |
+#, c-format | |
+msgid "You missed %s!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1435 | |
+#, c-format | |
+msgid "%s shoots %s dead." | |
+msgstr "" | |
+ | |
+#: src/message.c:1438 | |
+#, c-format | |
+msgid "%s shoots at %s and kills a %tde!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1441 | |
+#, c-format | |
+msgid "%s shoots at %s." | |
+msgstr "" | |
+ | |
+#: src/message.c:1446 | |
+#, c-format | |
+msgid "%s wasted you, man! What a drag!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1450 | |
+#, c-format | |
+msgid "%s shoots at you... and kills a %tde!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1453 | |
+#, c-format | |
+msgid "%s hits you, man!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1457 | |
+#, c-format | |
+msgid "You killed %s!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1459 | |
+#, c-format | |
+msgid "You hit %s, and killed a %tde!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1462 | |
+#, c-format | |
+msgid "You hit %s!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1465 | |
+msgid " You find %P on the body!" | |
+msgstr "" | |
+ | |
+#: src/message.c:1467 | |
+msgid " You loot the body!" | |
+msgstr "" | |
+ | |
+#: src/network.c:89 | |
+#, c-format | |
+msgid "Cannot initialise WinSock (%s)!" | |
+msgstr "" | |
+ | |
+#: src/network.c:365 | |
+msgid "SOCKS server general failure" | |
+msgstr "" | |
+ | |
+#: src/network.c:366 | |
+msgid "Connection denied by SOCKS ruleset" | |
+msgstr "" | |
+ | |
+#: src/network.c:367 | |
+msgid "SOCKS: Network unreachable" | |
+msgstr "" | |
+ | |
+#: src/network.c:368 | |
+msgid "SOCKS: Host unreachable" | |
+msgstr "" | |
+ | |
+#: src/network.c:369 | |
+msgid "SOCKS: Connection refused" | |
+msgstr "" | |
+ | |
+#: src/network.c:370 | |
+msgid "SOCKS: TTL expired" | |
+msgstr "" | |
+ | |
+#: src/network.c:371 | |
+msgid "SOCKS: Command not supported" | |
+msgstr "" | |
+ | |
+#: src/network.c:372 | |
+msgid "SOCKS: Address type not supported" | |
+msgstr "" | |
+ | |
+#: src/network.c:373 | |
+msgid "SOCKS server rejected all offered methods" | |
+msgstr "" | |
+ | |
+#: src/network.c:374 | |
+msgid "Unknown SOCKS address type returned" | |
+msgstr "" | |
+ | |
+#: src/network.c:375 | |
+msgid "SOCKS authentication failed" | |
+msgstr "" | |
+ | |
+#: src/network.c:376 | |
+msgid "SOCKS authentication cancelled by user" | |
+msgstr "" | |
+ | |
+#: src/network.c:379 | |
+msgid "SOCKS: Request rejected or failed" | |
+msgstr "" | |
+ | |
+#: src/network.c:380 | |
+msgid "SOCKS: Rejected - unable to contact identd" | |
+msgstr "" | |
+ | |
+#: src/network.c:382 | |
+msgid "SOCKS: Rejected - identd reports different user-id" | |
+msgstr "" | |
+ | |
+#: src/network.c:385 | |
+msgid "Unknown SOCKS reply code" | |
+msgstr "" | |
+ | |
+#: src/network.c:386 | |
+msgid "Unknown SOCKS reply version code" | |
+msgstr "" | |
+ | |
+#: src/network.c:387 | |
+msgid "Unknown SOCKS server version" | |
+msgstr "" | |
+ | |
+#: src/network.c:393 | |
+#, c-format | |
+msgid "SOCKS error code %d" | |
+msgstr "" | |
+ | |
+#: src/network.c:420 | |
+msgid "Number of tries exceeded" | |
+msgstr "" | |
+ | |
+#: src/network.c:423 | |
+#, c-format | |
+msgid "Bad auth header: %s" | |
+msgstr "" | |
+ | |
+#: src/network.c:426 | |
+#, c-format | |
+msgid "Bad redirect: %s" | |
+msgstr "" | |
+ | |
+#: src/network.c:429 | |
+#, c-format | |
+msgid "Invalid HTTP status line: %s" | |
+msgstr "" | |
+ | |
+#: src/network.c:433 | |
+msgid "403: forbidden" | |
+msgstr "" | |
+ | |
+#: src/network.c:436 | |
+msgid "404: page not found" | |
+msgstr "" | |
+ | |
+#: src/network.c:439 | |
+msgid "401: HTTP authentication failed" | |
+msgstr "" | |
+ | |
+#: src/network.c:442 | |
+msgid "407: HTTP proxy authentication failed" | |
+msgstr "" | |
+ | |
+#: src/network.c:446 | |
+msgid "Bad redirect message from server" | |
+msgstr "" | |
+ | |
+#: src/network.c:450 | |
+#, c-format | |
+msgid "Unknown HTTP error %d" | |
+msgstr "" | |
+ | |
+#: src/network.c:452 | |
+#, c-format | |
+msgid "%d: redirect error" | |
+msgstr "" | |
+ | |
+#: src/network.c:454 | |
+#, c-format | |
+msgid "%d: HTTP client error" | |
+msgstr "" | |
+ | |
+#: src/network.c:456 | |
+#, c-format | |
+msgid "%d: HTTP server error" | |
+msgstr "" | |
+ | |
+#: src/admin.c:52 | |
+#, c-format | |
+msgid "" | |
+"Attempting to connect to local dopewars server via Unix domain\n" | |
+" socket %s...\n" | |
+msgstr "" | |
+ | |
+#: src/admin.c:70 | |
+msgid "" | |
+"Connection established; use Ctrl-D to close your session.\n" | |
+"\n" | |
+msgstr "" | |
+ | |
+#: src/configfile.c:238 | |
+msgid "Could not determine local config file to write to" | |
+msgstr "" | |
+ | |
+#: src/configfile.c:250 | |
+#, c-format | |
+msgid "Could not open file %s: %s" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:76 | |
+#, c-format | |
+msgid "" | |
+"Could not connect to dopewars server\n" | |
+"(%s)\n" | |
+"AI Player terminating abnormally." | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:89 | |
+msgid "Connection established\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:109 | |
+#, c-format | |
+msgid "Connected to SOCKS server %s...\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:112 | |
+msgid "Authenticating with SOCKS server\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:115 | |
+#, c-format | |
+msgid "Asking SOCKS for connect to %s...\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:126 | |
+msgid "" | |
+"Using Socks.Auth.User and Socks.Auth.Password for SOCKS5 authentication\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:153 | |
+#, c-format | |
+msgid "AI Player started; attempting to contact server at %s:%d..." | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:214 | |
+msgid "AI Player terminated OK.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:219 | |
+msgid "Connection to server lost!\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:244 | |
+#, c-format | |
+msgid "Using name %s\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:326 | |
+msgid "Players in this game:-\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:352 | |
+#, c-format | |
+msgid "%s joins the game.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:356 | |
+#, c-format | |
+msgid "%s has left the game.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:360 | |
+msgid "Jetting to %tde with %P cash and %P debt\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:384 | |
+msgid "AI Player killed. Terminating normally.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:405 | |
+msgid "Game time is up. Leaving game.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:408 | |
+msgid "AI Player pushed from the server.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:411 | |
+msgid "The server has terminated.\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:480 | |
+msgid "Selling %d %tde at %P\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:495 | |
+msgid "Buying %d %tde at %P\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:528 | |
+msgid "Buying a %tde for %P at the gun shop\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:579 | |
+msgid "Debt of %P paid off to loan shark\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:611 | |
+#, c-format | |
+msgid "Loan shark located at %s\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:619 | |
+#, c-format | |
+msgid "Gun shop located at %s\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:627 | |
+#, c-format | |
+msgid "Pub located at %s\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:642 | |
+#, c-format | |
+msgid "Bank located at %s\n" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:671 | |
+msgid "Call yourselves drug dealers?" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:672 | |
+msgid "A trained monkey could do better..." | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:673 | |
+msgid "Think you're hard enough to deal with the likes of me?" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:674 | |
+msgid "Zzzzz... are you dealing in candy or what?" | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:675 | |
+msgid "Reckon I'll just have to shoot you for your own good." | |
+msgstr "" | |
+ | |
+#: src/AIPlayer.c:690 | |
+msgid "" | |
+"This binary has been compiled without networking support, and thus cannot " | |
+"act as an AI player.\n" | |
+"Recompile passing --enable-networking to the configure script." | |
+msgstr "" | |
+ | |
+#: src/sound.c:190 | |
+#, c-format | |
+msgid "" | |
+"Invalid plugin \"%s\" selected.\n" | |
+"(%s available; now using \"%s\".)" | |
+msgstr "" | |
diff --git a/po/[email protected] b/po/[email protected] | |
t@@ -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/po/[email protected] b/po/[email protected] | |
t@@ -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/po/insert-header.sin b/po/insert-header.sin | |
t@@ -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/po/quot.sed b/po/quot.sed | |
t@@ -0,0 +1,6 @@ | |
+s/"\([^"]*\)"/“\1”/g | |
+s/`\([^`']*\)'/‘\1’/g | |
+s/ '\([^`']*\)' / ‘\1’ /g | |
+s/ '\([^`']*\)'$/ ‘\1’/g | |
+s/^'\([^`']*\)' /‘\1’ /g | |
+s/“”/""/g | |
diff --git a/po/remove-potcdate.sed b/po/remove-potcdate.sed | |
t@@ -0,0 +1,11 @@ | |
+/^"POT-Creation-Date: .*"$/{ | |
+x | |
+s/P/P/ | |
+ta | |
+g | |
+d | |
+bb | |
+:a | |
+x | |
+:b | |
+} | |
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin | |
t@@ -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/src/Makefile.am b/src/Makefile.am | |
t@@ -31,7 +31,7 @@ dopewars_SOURCES = admin.c admin.h AIPlayer.c AIPlayer.h uti… | |
message.c message.h network.c network.h nls.h \ | |
serverside.c serverside.h sound.c sound.h \ | |
tstring.c tstring.h winmain.c winmain.h | |
-INCLUDES = -I../intl -I${srcdir} -I.. @GLIB_CFLAGS@ @GTK_CFLAGS@ | |
+AM_CPPFLAGS= -I../intl -I${srcdir} -I.. @GLIB_CFLAGS@ @GTK_CFLAGS@ | |
DEFS = @DEFS@ | |
PIXDIR = ${DESTDIR}${datadir}/pixmaps | |
DOPEDIR = ${DESTDIR}${bindir} | |
diff --git a/src/curses_client/Makefile.am b/src/curses_client/Makefile.am | |
t@@ -1,4 +1,4 @@ | |
noinst_LIBRARIES = libcursesclient.a | |
libcursesclient_a_SOURCES = curses_client.c curses_client.h | |
-INCLUDES = -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. @GLIB_CFLAGS@ | |
+AM_CPPFLAGS= -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. @GLIB_CFLAGS@ | |
DEFS = @DEFS@ | |
diff --git a/src/cursesport/Makefile.am b/src/cursesport/Makefile.am | |
t@@ -1,4 +1,4 @@ | |
noinst_LIBRARIES = libcursesport.a | |
libcursesport_a_SOURCES = cursesport.c cursesport.h | |
-INCLUDES = -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. | |
+AM_CPPFLAGS= -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. | |
DEFS = @DEFS@ | |
diff --git a/src/gtkport/Makefile.am b/src/gtkport/Makefile.am | |
t@@ -1,5 +1,5 @@ | |
noinst_LIBRARIES = libgtkport.a | |
libgtkport_a_SOURCES = gtkport.c gtkport.h clist.c clist.h gtkenums.h \ | |
unicodewrap.c unicodewrap.h | |
-INCLUDES = -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. @GTK_CFLAGS@ @GLI… | |
+AM_CPPFLAGS= -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. @GTK_CFLAGS@ @GLI… | |
DEFS = @DEFS@ | |
diff --git a/src/gui_client/Makefile.am b/src/gui_client/Makefile.am | |
t@@ -2,5 +2,5 @@ noinst_LIBRARIES = libguiclient.a | |
libguiclient_a_SOURCES = gtk_client.c gtk_client.h \ | |
optdialog.c optdialog.h \ | |
newgamedia.c newgamedia.h dopewars-pill.xpm | |
-INCLUDES = -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. @GTK_CFLAGS@ @GLI… | |
+AM_CPPFLAGS= -I../../intl -I${srcdir} -I${srcdir}/.. -I../.. @GTK_CFLAGS@ @GLI… | |
DEFS = @DEFS@ | |
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am | |
t@@ -5,7 +5,7 @@ libsound_sdl_la_SOURCES = sound_sdl.c sound_sdl.h | |
libsound_sdl_la_LDFLAGS = @SDL_LIBS@ | |
libsound_winmm_la_SOURCES = sound_winmm.c sound_winmm.h | |
LIBS = @GLIB_LIBS@ | |
-INCLUDES = @SOUND_CFLAGS@ @GLIB_CFLAGS@ | |
+AM_CPPFLAGS = @SOUND_CFLAGS@ @GLIB_CFLAGS@ | |
LINKNOO = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) | |
if PLUGINS |