diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index 92ab00f..ab00242 100644
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -6,6 +6,7 @@
 source "$BR2_EXTERNAL/package/firestone-xml/Config.in"
 source "$BR2_EXTERNAL/package/garrison-xml/Config.in"
 source "$BR2_EXTERNAL/package/openpower-pnor/Config.in"
+source "$BR2_EXTERNAL/package/petitboot/Config.in"
 source "$BR2_EXTERNAL/package/p8-pore-binutils/Config.in"
 source "$BR2_EXTERNAL/package/occ/Config.in"
 source "$BR2_EXTERNAL/package/capp-ucode/Config.in"
diff --git a/openpower/package/petitboot/Config.in b/openpower/package/petitboot/Config.in
new file mode 100644
index 0000000..a6021dd
--- /dev/null
+++ b/openpower/package/petitboot/Config.in
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_PETITBOOT
+	bool "petitboot"
+	# petitboot needs udev /dev management
+	depends on BR2_PACKAGE_HAS_UDEV
+	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_NCURSES_TARGET_PANEL
+	select BR2_PACKAGE_NCURSES_TARGET_FORM
+	select BR2_PACKAGE_NCURSES_TARGET_MENU
+	# run-time dependency only
+	select BR2_PACKAGE_KEXEC_LITE if !BR2_PACKAGE_KEXEC
+	# run-time dependency only
+	select BR2_PACKAGE_POWERPC_UTILS if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+	# run-time dependency only
+	select BR2_PACKAGE_IPRUTILS if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+	help
+	  Petitboot is a small kexec-based bootloader
+
+	  http://www.kernel.org/pub/linux/kernel/people/geoff/petitboot/petitboot.html
+
+comment "petitboot requires udev to be enabled"
+	depends on !BR2_PACKAGE_HAS_UDEV
diff --git a/openpower/package/petitboot/S14silence-console b/openpower/package/petitboot/S14silence-console
new file mode 100755
index 0000000..6570200
--- /dev/null
+++ b/openpower/package/petitboot/S14silence-console
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+case "$1" in
+    start)
+        echo 0 0 7 0 > /proc/sys/kernel/printk
+        ;;
+esac
+
+exit 0
diff --git a/openpower/package/petitboot/S15pb-discover b/openpower/package/petitboot/S15pb-discover
new file mode 100755
index 0000000..58472ba
--- /dev/null
+++ b/openpower/package/petitboot/S15pb-discover
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+LOGFILE=/var/log/petitboot/pb-discover.log
+PIDFILE=/var/run/petitboot.pid
+
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+verbose=
+if pb-config debug | grep -q enabled
+then
+	verbose=-v
+fi
+
+case "$1" in
+    start)
+        ulimit -c unlimited
+        mkdir -p $(dirname $LOGFILE)
+        pb-discover -l $LOGFILE $verbose &
+        echo $! > $PIDFILE
+        ;;
+    stop)
+        pid=$(cat $PIDFILE)
+        [ -n "$pid" ] && kill -TERM $pid
+        ;;
+    *)
+        echo "Usage: $0 {start|stop}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/openpower/package/petitboot/kexec-restart b/openpower/package/petitboot/kexec-restart
new file mode 100755
index 0000000..0175e76
--- /dev/null
+++ b/openpower/package/petitboot/kexec-restart
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+/usr/sbin/kexec -f -e
+
+while :
+do
+    sleep 1
+done
diff --git a/openpower/package/petitboot/petitboot-01-autotools-Add-autopoint-generated-files.patch b/openpower/package/petitboot/petitboot-01-autotools-Add-autopoint-generated-files.patch
new file mode 100644
index 0000000..5c2c0c0
--- /dev/null
+++ b/openpower/package/petitboot/petitboot-01-autotools-Add-autopoint-generated-files.patch
@@ -0,0 +1,6764 @@
+From c99b7d366a5e11414befbe653af3bc4b642aede8 Mon Sep 17 00:00:00 2001
+From: Jeremy Kerr <jk@ozlabs.org>
+Date: Fri, 12 Dec 2014 09:35:40 +0800
+Subject: [PATCH] autotools: Add autopoint-generated files
+
+Since buildroot doesn't give us an autopoint, we're unable to regenerate
+these files. Add the autopoint artefacts required to do an autoreconf
+without autopoint.
+
+Generated with:
+
+  touch .stamp
+  autopoint
+  find . -type f -newer stamp | xargs git add
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+---
+ ABOUT-NLS              | 1282 ++++++++++++++++++++++++++++++++++++++++++++++++
+ config.rpath           |  672 +++++++++++++++++++++++++
+ m4/codeset.m4          |   21 +
+ m4/fcntl-o.m4          |   81 +++
+ m4/gettext.m4          |  383 +++++++++++++++
+ m4/glibc2.m4           |   30 ++
+ m4/glibc21.m4          |   30 ++
+ m4/iconv.m4            |  214 ++++++++
+ m4/intdiv0.m4          |   84 ++++
+ m4/intl.m4             |  294 +++++++++++
+ m4/intldir.m4          |   19 +
+ m4/intlmacosx.m4       |   51 ++
+ m4/intmax.m4           |   33 ++
+ m4/inttypes-pri.m4     |   36 ++
+ m4/inttypes_h.m4       |   26 +
+ m4/lcmessage.m4        |   31 ++
+ m4/lib-ld.m4           |  110 +++++
+ m4/lib-link.m4         |  774 +++++++++++++++++++++++++++++
+ m4/lib-prefix.m4       |  224 +++++++++
+ m4/lock.m4             |   37 ++
+ m4/longlong.m4         |  106 ++++
+ m4/nls.m4              |   32 ++
+ m4/po.m4               |  449 +++++++++++++++++
+ m4/printf-posix.m4     |   45 ++
+ m4/progtest.m4         |   92 ++++
+ m4/size_max.m4         |   75 +++
+ m4/stdint_h.m4         |   26 +
+ m4/threadlib.m4        |  347 +++++++++++++
+ m4/uintmax_t.m4        |   30 ++
+ m4/visibility.m4       |   74 +++
+ m4/wchar_t.m4          |   20 +
+ m4/wint_t.m4           |   28 ++
+ m4/xsize.m4            |   13 +
+ po/Makefile.in.in      |  444 +++++++++++++++++
+ po/Makevars.template   |   41 ++
+ po/Rules-quot          |   47 ++
+ po/boldquot.sed        |   10 +
+ po/en@boldquot.header  |   25 +
+ po/en@quot.header      |   22 +
+ po/insert-header.sin   |   23 +
+ po/quot.sed            |    6 +
+ po/remove-potcdate.sin |   19 +
+ 42 files changed, 6406 insertions(+)
+ create mode 100644 ABOUT-NLS
+ create mode 100755 config.rpath
+ create mode 100644 m4/codeset.m4
+ create mode 100644 m4/fcntl-o.m4
+ create mode 100644 m4/gettext.m4
+ create mode 100644 m4/glibc2.m4
+ create mode 100644 m4/glibc21.m4
+ create mode 100644 m4/iconv.m4
+ create mode 100644 m4/intdiv0.m4
+ create mode 100644 m4/intl.m4
+ create mode 100644 m4/intldir.m4
+ create mode 100644 m4/intlmacosx.m4
+ create mode 100644 m4/intmax.m4
+ create mode 100644 m4/inttypes-pri.m4
+ create mode 100644 m4/inttypes_h.m4
+ create mode 100644 m4/lcmessage.m4
+ create mode 100644 m4/lib-ld.m4
+ create mode 100644 m4/lib-link.m4
+ create mode 100644 m4/lib-prefix.m4
+ create mode 100644 m4/lock.m4
+ create mode 100644 m4/longlong.m4
+ create mode 100644 m4/nls.m4
+ create mode 100644 m4/po.m4
+ create mode 100644 m4/printf-posix.m4
+ create mode 100644 m4/progtest.m4
+ create mode 100644 m4/size_max.m4
+ create mode 100644 m4/stdint_h.m4
+ create mode 100644 m4/threadlib.m4
+ create mode 100644 m4/uintmax_t.m4
+ create mode 100644 m4/visibility.m4
+ create mode 100644 m4/wchar_t.m4
+ create mode 100644 m4/wint_t.m4
+ create mode 100644 m4/xsize.m4
+ create mode 100644 po/Makefile.in.in
+ create mode 100644 po/Makevars.template
+ create mode 100644 po/Rules-quot
+ create mode 100644 po/boldquot.sed
+ create mode 100644 po/en@boldquot.header
+ create mode 100644 po/en@quot.header
+ create mode 100644 po/insert-header.sin
+ create mode 100644 po/quot.sed
+ create mode 100644 po/remove-potcdate.sin
+
+diff --git a/ABOUT-NLS b/ABOUT-NLS
+new file mode 100644
+index 0000000..b1de1b6
+--- /dev/null
++++ b/ABOUT-NLS
+@@ -0,0 +1,1282 @@
++1 Notes on the Free Translation Project
++***************************************
++
++Free software is going international!  The Free Translation Project is
++a way to get maintainers of free software, translators, and users all
++together, so that free software will gradually become able to speak many
++languages.  A few packages already provide translations for their
++messages.
++
++   If you found this `ABOUT-NLS' file inside a distribution, you may
++assume that the distributed package does use GNU `gettext' internally,
++itself available at your nearest GNU archive site.  But you do _not_
++need to install GNU `gettext' prior to configuring, installing or using
++this package with messages translated.
++
++   Installers will find here some useful hints.  These notes also
++explain how users should proceed for getting the programs to use the
++available translations.  They tell how people wanting to contribute and
++work on translations can contact the appropriate team.
++
++1.1 INSTALL Matters
++===================
++
++Some packages are "localizable" when properly installed; the programs
++they contain can be made to speak your own native language.  Most such
++packages use GNU `gettext'.  Other packages have their own ways to
++internationalization, predating GNU `gettext'.
++
++   By default, this package will be installed to allow translation of
++messages.  It will automatically detect whether the system already
++provides the GNU `gettext' functions.  Installers may use special
++options at configuration time for changing the default behaviour.  The
++command:
++
++     ./configure --disable-nls
++
++will _totally_ disable translation of messages.
++
++   When you already have GNU `gettext' installed on your system and run
++configure without an option for your new package, `configure' will
++probably detect the previously built and installed `libintl' library
++and will decide to use it.  If not, you may have to to use the
++`--with-libintl-prefix' option to tell `configure' where to look for it.
++
++   Internationalized packages usually have many `po/LL.po' files, where
++LL gives an ISO 639 two-letter code identifying the language.  Unless
++translations have been forbidden at `configure' time by using the
++`--disable-nls' switch, all available translations are installed
++together with the package.  However, the environment variable `LINGUAS'
++may be set, prior to configuration, to limit the installed set.
++`LINGUAS' should then contain a space separated list of two-letter
++codes, stating which languages are allowed.
++
++1.2 Using This Package
++======================
++
++As a user, if your language has been installed for this package, you
++only have to set the `LANG' environment variable to the appropriate
++`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
++`LC_xxx' environment variables set, you should unset them before
++setting `LANG', otherwise the setting of `LANG' will not have the
++desired effect.  Here `LL' is an ISO 639 two-letter language code, and
++`CC' is an ISO 3166 two-letter country code.  For example, let's
++suppose that you speak German and live in Germany.  At the shell
++prompt, merely execute `setenv LANG de_DE' (in `csh'),
++`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
++This can be done from your `.login' or `.profile' file, once and for
++all.
++
++   You might think that the country code specification is redundant.
++But in fact, some languages have dialects in different countries.  For
++example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
++country code serves to distinguish the dialects.
++
++   The locale naming convention of `LL_CC', with `LL' denoting the
++language and `CC' denoting the country, is the one use on systems based
++on GNU libc.  On other systems, some variations of this scheme are
++used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
++locales supported by your system for your language by running the
++command `locale -a | grep '^LL''.
++
++   Not all programs have translations for all languages.  By default, an
++English message is shown in place of a nonexistent translation.  If you
++understand other languages, you can set up a priority list of languages.
++This is done through a different environment variable, called
++`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
++for the purpose of message handling, but you still need to have `LANG'
++set to the primary language; this is required by other parts of the
++system libraries.  For example, some Swedish users who would rather
++read translations in German than English for when Swedish is not
++available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
++
++   Special advice for Norwegian users: The language code for Norwegian
++bokma*l changed from `no' to `nb' recently (in 2003).  During the
++transition period, while some message catalogs for this language are
++installed under `nb' and some older ones under `no', it's recommended
++for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
++older translations are used.
++
++   In the `LANGUAGE' environment variable, but not in the `LANG'
++environment variable, `LL_CC' combinations can be abbreviated as `LL'
++to denote the language's main dialect.  For example, `de' is equivalent
++to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
++(Portuguese as spoken in Portugal) in this context.
++
++1.3 Translating Teams
++=====================
++
++For the Free Translation Project to be a success, we need interested
++people who like their own language and write it well, and who are also
++able to synergize with other translators speaking the same language.
++Each translation team has its own mailing list.  The up-to-date list of
++teams can be found at the Free Translation Project's homepage,
++`http://translationproject.org/', in the "Teams" area.
++
++   If you'd like to volunteer to _work_ at translating messages, you
++should become a member of the translating team for your own language.
++The subscribing address is _not_ the same as the list itself, it has
++`-request' appended.  For example, speakers of Swedish can send a
++message to `sv-request@li.org', having this message body:
++
++     subscribe
++
++   Keep in mind that team members are expected to participate
++_actively_ in translations, or at solving translational difficulties,
++rather than merely lurking around.  If your team does not exist yet and
++you want to start one, or if you are unsure about what to do or how to
++get started, please write to `coordinator@translationproject.org' to
++reach the coordinator for all translator teams.
++
++   The English team is special.  It works at improving and uniformizing
++the terminology in use.  Proven linguistic skills are praised more than
++programming skills, here.
++
++1.4 Available Packages
++======================
++
++Languages are not equally supported in all packages.  The following
++matrix shows the current state of internationalization, as of June
++2010.  The matrix shows, in regard of each package, for which languages
++PO files have been submitted to translation coordination, with a
++translation percentage of at least 50%.
++
++     Ready PO files       af am an ar as ast az be be@latin bg bn_IN bs ca
++                        +--------------------------------------------------+
++     a2ps               |                       []                      [] |
++     aegis              |                                                  |
++     ant-phone          |                                                  |
++     anubis             |                                                  |
++     aspell             |                []                             [] |
++     bash               |                                                  |
++     bfd                |                                                  |
++     bibshelf           |                []                                |
++     binutils           |                                                  |
++     bison              |                                                  |
++     bison-runtime      |                []                                |
++     bluez-pin          | []             []                                |
++     bombono-dvd        |                                                  |
++     buzztard           |                                                  |
++     cflow              |                                                  |
++     clisp              |                                                  |
++     coreutils          |                                   []          [] |
++     cpio               |                                                  |
++     cppi               |                                                  |
++     cpplib             |                                               [] |
++     cryptsetup         |                                                  |
++     dfarc              |                                                  |
++     dialog             |                             []                [] |
++     dico               |                                                  |
++     diffutils          |                                               [] |
++     dink               |                                                  |
++     doodle             |                                                  |
++     e2fsprogs          |                                               [] |
++     enscript           |                                               [] |
++     exif               |                                                  |
++     fetchmail          |                                               [] |
++     findutils          |                                   []             |
++     flex               |                                               [] |
++     freedink           |                                                  |
++     gas                |                                                  |
++     gawk               |                []                             [] |
++     gcal               |                                               [] |
++     gcc                |                                                  |
++     gettext-examples   | []             []                 []          [] |
++     gettext-runtime    |                                   []          [] |
++     gettext-tools      |                                   []          [] |
++     gip                |                                   []             |
++     gjay               |                                                  |
++     gliv               |                                   []             |
++     glunarclock        |                []                 []             |
++     gnubiff            |                                                  |
++     gnucash            |                                               [] |
++     gnuedu             |                                                  |
++     gnulib             |                                                  |
++     gnunet             |                                                  |
++     gnunet-gtk         |                                                  |
++     gnutls             |                                                  |
++     gold               |                                                  |
++     gpe-aerial         |                                                  |
++     gpe-beam           |                                                  |
++     gpe-bluetooth      |                                                  |
++     gpe-calendar       |                                                  |
++     gpe-clock          |                []                                |
++     gpe-conf           |                                                  |
++     gpe-contacts       |                                                  |
++     gpe-edit           |                                                  |
++     gpe-filemanager    |                                                  |
++     gpe-go             |                                                  |
++     gpe-login          |                                                  |
++     gpe-ownerinfo      |                []                                |
++     gpe-package        |                                                  |
++     gpe-sketchbook     |                                                  |
++     gpe-su             |                []                                |
++     gpe-taskmanager    |                []                                |
++     gpe-timesheet      |                []                                |
++     gpe-today          |                []                                |
++     gpe-todo           |                                                  |
++     gphoto2            |                                                  |
++     gprof              |                                   []             |
++     gpsdrive           |                                                  |
++     gramadoir          |                                                  |
++     grep               |                                                  |
++     grub               |                []                             [] |
++     gsasl              |                                                  |
++     gss                |                                                  |
++     gst-plugins-bad    |                                   []             |
++     gst-plugins-base   |                                   []             |
++     gst-plugins-good   |                                   []             |
++     gst-plugins-ugly   |                                   []             |
++     gstreamer          | []                                []          [] |
++     gtick              |                                                  |
++     gtkam              |                       []                         |
++     gtkorphan          |                                   []             |
++     gtkspell           | []             []     []                         |
++     gutenprint         |                                                  |
++     hello              |                                   []             |
++     help2man           |                                                  |
++     hylafax            |                                                  |
++     idutils            |                                                  |
++     indent             |                                   []          [] |
++     iso_15924          |                                                  |
++     iso_3166           | []          []        []          []  []   [] [] |
++     iso_3166_2         |                                                  |
++     iso_4217           |                                                  |
++     iso_639            |             [] []     []              []         |
++     iso_639_3          |                                                  |
++     jwhois             |                                                  |
++     kbd                |                                                  |
++     keytouch           |                                               [] |
++     keytouch-editor    |                                                  |
++     keytouch-keyboa... |                                               [] |
++     klavaro            |          []                                      |
++     latrine            |                                                  |
++     ld                 |                                   []             |
++     leafpad            |                                   []          [] |
++     libc               |                                   []          [] |
++     libexif            |                       ()                         |
++     libextractor       |                                                  |
++     libgnutls          |                                                  |
++     libgpewidget       |                                                  |
++     libgpg-error       |                                                  |
++     libgphoto2         |                                                  |
++     libgphoto2_port    |                                                  |
++     libgsasl           |                                                  |
++     libiconv           |                                   []             |
++     libidn             |                                                  |
++     lifelines          |                                                  |
++     liferea            |                             []                [] |
++     lilypond           |                                                  |
++     linkdr             |          []                                      |
++     lordsawar          |                                                  |
++     lprng              |                                                  |
++     lynx               |                                               [] |
++     m4                 |                                                  |
++     mailfromd          |                                                  |
++     mailutils          |                                                  |
++     make               |                                                  |
++     man-db             |                                                  |
++     man-db-manpages    |                                                  |
++     minicom            |                                                  |
++     mkisofs            |                                                  |
++     myserver           |                                                  |
++     nano               |                                   []          [] |
++     opcodes            |                                                  |
++     parted             |                                                  |
++     pies               |                                                  |
++     popt               |                                                  |
++     psmisc             |                                                  |
++     pspp               |                                               [] |
++     pwdutils           |                                                  |
++     radius             |                                               [] |
++     recode             |                       []                      [] |
++     rosegarden         |                                                  |
++     rpm                |                                                  |
++     rush               |                                                  |
++     sarg               |                                                  |
++     screem             |                                                  |
++     scrollkeeper       |                    [] []                      [] |
++     sed                |                []                             [] |
++     sharutils          |                                   []          [] |
++     shishi             |                                                  |
++     skencil            |                                                  |
++     solfege            |                                                  |
++     solfege-manual     |                                                  |
++     soundtracker       |                                                  |
++     sp                 |                                                  |
++     sysstat            |                                                  |
++     tar                |                                   []             |
++     texinfo            |                                                  |
++     tin                |                                                  |
++     unicode-han-tra... |                                                  |
++     unicode-transla... |                                                  |
++     util-linux-ng      |                                               [] |
++     vice               |                                                  |
++     vmm                |                                                  |
++     vorbis-tools       |                                                  |
++     wastesedge         |                                                  |
++     wdiff              |                                                  |
++     wget               |                       []                      [] |
++     wyslij-po          |                                                  |
++     xchat              |                []     []          []          [] |
++     xdg-user-dirs      | []    []    [] []     []    []    []  []      [] |
++     xkeyboard-config   |                                   []          [] |
++                        +--------------------------------------------------+
++                          af am an ar as ast az be be@latin bg bn_IN bs ca
++                           6  0  1  2  3 19   1 10     3    28   3    1 38
++
++                          crh cs da  de  el en en_GB en_ZA eo es et eu fa
++                        +-------------------------------------------------+
++     a2ps               |     [] []  []  []     []            [] []       |
++     aegis              |        []  []                       []          |
++     ant-phone          |        []  ()                                   |
++     anubis             |        []  []                                   |
++     aspell             |     [] []  []         []            []          |
++     bash               |     []                           [] []          |
++     bfd                |                                     []          |
++     bibshelf           |        []  []                       []          |
++     binutils           |                                     []          |
++     bison              |            []  []                               |
++     bison-runtime      |        []  []  []                      []       |
++     bluez-pin          |     [] []  []  []                [] []          |
++     bombono-dvd        |        []                                       |
++     buzztard           |     [] []  []                                   |
++     cflow              |        []  []                                   |
++     clisp              |        []  []     []                []          |
++     coreutils          |     [] []  []                          []       |
++     cpio               |                                                 |
++     cppi               |                                                 |
++     cpplib             |        []  []                       []          |
++     cryptsetup         |            []                                   |
++     dfarc              |        []  []                       []          |
++     dialog             |        []  []                    [] []    []    |
++     dico               |                                                 |
++     diffutils          |     [] []  []  []                [] []          |
++     dink               |        []  []                       []          |
++     doodle             |            []                                   |
++     e2fsprogs          |     []     []                       []          |
++     enscript           |        []  []         []                        |
++     exif               |     () []  []                                   |
++     fetchmail          |     [] []  ()  []     []            []          |
++     findutils          |     [] []  []                                   |
++     flex               |            []                       []          |
++     freedink           |        []  []                       []          |
++     gas                |                                     []          |
++     gawk               |        []  []                       []          |
++     gcal               |                                     []          |
++     gcc                |            []                       []          |
++     gettext-examples   |            []  []                [] []          |
++     gettext-runtime    |        []  []                    [] []          |
++     gettext-tools      |            []                       []    []    |
++     gip                |        []  []                       []    []    |
++     gjay               |            []                                   |
++     gliv               |     [] []  []                                   |
++     glunarclock        |        []  []                                   |
++     gnubiff            |            ()                                   |
++     gnucash            |     []     ()  ()     ()            ()          |
++     gnuedu             |        []                           []          |
++     gnulib             |            []                       []          |
++     gnunet             |                                                 |
++     gnunet-gtk         |        []                                       |
++     gnutls             |     []     []                                   |
++     gold               |                                     []          |
++     gpe-aerial         |     [] []  []                       []          |
++     gpe-beam           |     [] []  []                       []          |
++     gpe-bluetooth      |        []  []                                   |
++     gpe-calendar       |        []                                       |
++     gpe-clock          |     [] []  []                       []          |
++     gpe-conf           |     [] []  []                                   |
++     gpe-contacts       |        []  []                       []          |
++     gpe-edit           |        []  []                                   |
++     gpe-filemanager    |        []  []                       []          |
++     gpe-go             |     [] []  []                       []          |
++     gpe-login          |        []  []                                   |
++     gpe-ownerinfo      |     [] []  []                       []          |
++     gpe-package        |        []  []                       []          |
++     gpe-sketchbook     |     [] []  []                       []          |
++     gpe-su             |     [] []  []                       []          |
++     gpe-taskmanager    |     [] []  []                       []          |
++     gpe-timesheet      |     [] []  []                       []          |
++     gpe-today          |     [] []  []                       []          |
++     gpe-todo           |        []  []                       []          |
++     gphoto2            |     [] []  ()         []            []    []    |
++     gprof              |        []  []                       []          |
++     gpsdrive           |        []                           [] []       |
++     gramadoir          |        []  []                    []             |
++     grep               |     []                                          |
++     grub               |        []  []                                   |
++     gsasl              |            []                                   |
++     gss                |                                                 |
++     gst-plugins-bad    |     [] []  []                       []    []    |
++     gst-plugins-base   |     [] []  []                       []    []    |
++     gst-plugins-good   |     [] []  []  []                   []    []    |
++     gst-plugins-ugly   |     [] []  []  []                   []    []    |
++     gstreamer          |     [] []  []                       []    []    |
++     gtick              |        []  ()                    []             |
++     gtkam              |     [] []  ()                    [] []          |
++     gtkorphan          |     [] []  []                    []             |
++     gtkspell           |     [] []  []  []                [] []    []    |
++     gutenprint         |        []  []         []                        |
++     hello              |        []  []                    [] []          |
++     help2man           |            []                                   |
++     hylafax            |            []                       []          |
++     idutils            |        []  []                                   |
++     indent             |     [] []  []                    [] [] [] []    |
++     iso_15924          |        []      ()                [] []          |
++     iso_3166           | []  [] []  []  ()                [] [] [] ()    |
++     iso_3166_2         |                ()                               |
++     iso_4217           |     [] []  []  ()                   [] []       |
++     iso_639            | []  [] []  []  ()                [] []          |
++     iso_639_3          | []                                              |
++     jwhois             |                                     []          |
++     kbd                |     [] []  []  []                   []          |
++     keytouch           |        []  []                                   |
++     keytouch-editor    |        []  []                                   |
++     keytouch-keyboa... |        []                                       |
++     klavaro            |     [] []  []                    []             |
++     latrine            |        []  ()                                   |
++     ld                 |        []                           []          |
++     leafpad            |     [] []  []  []                   []    []    |
++     libc               |     [] []  []                       []          |
++     libexif            |        []  []         ()                        |
++     libextractor       |                                                 |
++     libgnutls          |     []                                          |
++     libgpewidget       |        []  []                                   |
++     libgpg-error       |     []     []                                   |
++     libgphoto2         |        []  ()                                   |
++     libgphoto2_port    |        []  ()                             []    |
++     libgsasl           |                                                 |
++     libiconv           |     [] []  []                    []    []       |
++     libidn             |     []     []                    []             |
++     lifelines          |        []  ()                                   |
++     liferea            |     []     []  []                   []    []    |
++     lilypond           |     []     []                       []          |
++     linkdr             |        []  []                       []          |
++     lordsawar          |        []                                       |
++     lprng              |                                                 |
++     lynx               |     [] []  []                          []       |
++     m4                 |     [] []  []  []                               |
++     mailfromd          |                                                 |
++     mailutils          |                                     []          |
++     make               |        []  []                       []          |
++     man-db             |                                                 |
++     man-db-manpages    |                                                 |
++     minicom            |     [] []  []                       []          |
++     mkisofs            |                                                 |
++     myserver           |                                                 |
++     nano               |            []                       []    []    |
++     opcodes            |            []                       []          |
++     parted             |     []     []                                   |
++     pies               |                                                 |
++     popt               |     [] []  []                    [] []          |
++     psmisc             |     []     []                             []    |
++     pspp               |                                     []          |
++     pwdutils           |        []                                       |
++     radius             |                                     []          |
++     recode             |     [] []  []  []                [] []          |
++     rosegarden         |     ()     ()                       ()          |
++     rpm                |        []  []                       []          |
++     rush               |                                                 |
++     sarg               |                                                 |
++     screem             |                                                 |
++     scrollkeeper       |     [] []  []         []            []          |
++     sed                |     []     []  []                [] [] []       |
++     sharutils          |        []  []                       [] []       |
++     shishi             |                                                 |
++     skencil            |        []  ()                       []          |
++     solfege            |            []                    []    []       |
++     solfege-manual     |                                  []    []       |
++     soundtracker       |        []  []                       []          |
++     sp                 |            []                                   |
++     sysstat            |        []  []                             []    |
++     tar                |     []     []                          [] []    |
++     texinfo            |            []                    [] []          |
++     tin                |            []                          []       |
++     unicode-han-tra... |                                                 |
++     unicode-transla... |                                                 |
++     util-linux-ng      |     [] []  []                       []          |
++     vice               |        ()  ()                                   |
++     vmm                |            []                                   |
++     vorbis-tools       |     []                           []             |
++     wastesedge         |        []                                       |
++     wdiff              |            []                       []          |
++     wget               |     []     []                          []       |
++     wyslij-po          |                                                 |
++     xchat              |     []     []  []                   [] []       |
++     xdg-user-dirs      | []  [] []  []  []                [] [] [] []    |
++     xkeyboard-config   | []  [] []  []                    [] []          |
++                        +-------------------------------------------------+
++                          crh cs da  de  el en en_GB en_ZA eo es et eu fa
++                           5  64 105 117 18  1   8     0   28 89 18 19  0
++
++                          fi  fr  ga gl gu he hi hr hu hy id  is it ja ka kn
++                        +----------------------------------------------------+
++     a2ps               | []  []                          []        []       |
++     aegis              |     []                                 []          |
++     ant-phone          |     []                                 []          |
++     anubis             | []  []                          []     []          |
++     aspell             |     []  []                      []     []          |
++     bash               | []  []                          []        []       |
++     bfd                | []  []                          []                 |
++     bibshelf           | []  []  []                      []     []          |
++     binutils           | []  []                          []                 |
++     bison              | []  []  []                      []                 |
++     bison-runtime      | []  []  []                      []     [] []       |
++     bluez-pin          | []  []  []                [] [] []  []    []       |
++     bombono-dvd        | []                                                 |
++     buzztard           |                                 []                 |
++     cflow              | []      []                      []                 |
++     clisp              |     []                                             |
++     coreutils          |     []  []                []    []     []          |
++     cpio               | []  []  []                      []                 |
++     cppi               | []  []                                             |
++     cpplib             | []  []                          []                 |
++     cryptsetup         |     []                          []     []          |
++     dfarc              | []  []                                 []          |
++     dialog             |     []  [] []                   []  [] [] []       |
++     dico               |                                                    |
++     diffutils          | []  []  [] []    []       []    []     [] []       |
++     dink               |     []                                             |
++     doodle             |         []                             []          |
++     e2fsprogs          |     []                          []                 |
++     enscript           |     []  []             []       []                 |
++     exif               | []  []                          []  [] [] []       |
++     fetchmail          |     []                          []     [] []       |
++     findutils          | []  []  []                []    []     []          |
++     flex               | []  []  []                                         |
++     freedink           | []  []                          []                 |
++     gas                |     []                          []                 |
++     gawk               |     []  []       []             []     () []       |
++     gcal               |     []                                             |
++     gcc                |                                 []                 |
++     gettext-examples   | []  []  []                []    []     [] []       |
++     gettext-runtime    | []  []  []                      []     [] []       |
++     gettext-tools      |     []                          []     [] []       |
++     gip                | []  []  [] []                   []        []       |
++     gjay               | []                                                 |
++     gliv               | []  ()                                             |
++     glunarclock        | []      []                []    []                 |
++     gnubiff            |     ()                          []     ()          |
++     gnucash            | ()  ()           ()       ()           () []       |
++     gnuedu             |     []                                 []          |
++     gnulib             | []  []  []                []           [] []       |
++     gnunet             |                                                    |
++     gnunet-gtk         |     []                                             |
++     gnutls             |     []                                 []          |
++     gold               | []                              []                 |
++     gpe-aerial         | []  []                          []                 |
++     gpe-beam           | []  []                          []        []       |
++     gpe-bluetooth      | []                              []     [] []       |
++     gpe-calendar       | []                                        []       |
++     gpe-clock          | []  []                    []    []        []       |
++     gpe-conf           | []  []                          []        []       |
++     gpe-contacts       | []  []                          []        []       |
++     gpe-edit           | []                              []        []       |
++     gpe-filemanager    | []                        []    []        []       |
++     gpe-go             | []  []                    []    []        []       |
++     gpe-login          | []                              []        []       |
++     gpe-ownerinfo      | []  []                    []    []        []       |
++     gpe-package        | []                              []        []       |
++     gpe-sketchbook     | []  []                          []        []       |
++     gpe-su             | []  []     []             []    []        []       |
++     gpe-taskmanager    | []  []                    []    []        []       |
++     gpe-timesheet      | []  []  []                      []        []       |
++     gpe-today          | []  []  [] []             []    []        []       |
++     gpe-todo           | []                              []        []       |
++     gphoto2            | []  []                    []    []     [] []       |
++     gprof              | []  []  []                      []                 |
++     gpsdrive           |            []                   []     []          |
++     gramadoir          |     []  []                      []                 |
++     grep               | []                                     []          |
++     grub               | []                        []    []     []          |
++     gsasl              | []  []  []                      []     []          |
++     gss                | []  []  []                      []     []          |
++     gst-plugins-bad    | []  []                    []    []     [] []       |
++     gst-plugins-base   | []  []                    []    []     [] []       |
++     gst-plugins-good   | []  []                    []    []     [] []       |
++     gst-plugins-ugly   | []  []                    []    []     [] []       |
++     gstreamer          | []  []                    []    []     []          |
++     gtick              | []  []  []                      []     []          |
++     gtkam              |     []                    []    []     [] []       |
++     gtkorphan          |     []                          []     []          |
++     gtkspell           | []  []  [] []             [] [] []     [] []       |
++     gutenprint         | []  []                    []           []          |
++     hello              | []      []                      []                 |
++     help2man           | []  []                                             |
++     hylafax            |                                 []                 |
++     idutils            | []  []  []                []    []     []          |
++     indent             | []  []  [] []             []    []     [] []       |
++     iso_15924          | []  ()                          []     []          |
++     iso_3166           | []  ()  [] [] [] [] [] [] []    []     [] []       |
++     iso_3166_2         |     ()                    []    []     []          |
++     iso_4217           | []  ()                    []    []     [] []       |
++     iso_639            | []  ()  []    []          []    []     [] []    [] |
++     iso_639_3          |     ()                                 []       [] |
++     jwhois             | []  []                    []    []     []          |
++     kbd                |     []                          []                 |
++     keytouch           | []  []  []                []    []     []          |
++     keytouch-editor    | []      []                []    []     []          |
++     keytouch-keyboa... | []      []                []    []     []          |
++     klavaro            |            []             []                       |
++     latrine            | []                              []     []          |
++     ld                 | []  []  []                      []                 |
++     leafpad            | []  []  []       []       []    []     [] ()       |
++     libc               | []  []     []                   []        []       |
++     libexif            |                                        []          |
++     libextractor       |                                                    |
++     libgnutls          |     []                                 []          |
++     libgpewidget       | []      []                      []        []       |
++     libgpg-error       |     []                                 []          |
++     libgphoto2         |     []                                 [] []       |
++     libgphoto2_port    |     []                                 [] []       |
++     libgsasl           | []  []  []                      []     []          |
++     libiconv           | []  []  []                      []     [] []       |
++     libidn             | []  []                          []     []          |
++     lifelines          |     ()                                             |
++     liferea            |     []                    []           [] []       |
++     lilypond           | []  []                                             |
++     linkdr             | []               []    [] []           []          |
++     lordsawar          |                                                    |
++     lprng              |                                 []                 |
++     lynx               |     []                    []    []     [] []       |
++     m4                 | []  []  [] []                   []        []       |
++     mailfromd          |                                                    |
++     mailutils          |     []                          []                 |
++     make               | []  []  [] []    []    []       []     [] []       |
++     man-db             |                                 []     []          |
++     man-db-manpages    |                                 []                 |
++     minicom            | []  []                    []    []        []       |
++     mkisofs            | []  []                          []     []          |
++     myserver           |                                                    |
++     nano               | []  []  [] []             []           []          |
++     opcodes            | []  []  []                      []                 |
++     parted             |     []                          []     [] []       |
++     pies               |                                                    |
++     popt               | []  []  [] []             []    []  [] [] []       |
++     psmisc             | []  []                          []                 |
++     pspp               |                                                    |
++     pwdutils           |     []                          []                 |
++     radius             |     []                          []                 |
++     recode             | []  []  [] []    []       []    []     []          |
++     rosegarden         | ()  ()                          ()     () ()       |
++     rpm                |                                 []        []       |
++     rush               |                                                    |
++     sarg               |     []                                             |
++     screem             |                                        [] []       |
++     scrollkeeper       | []                        []    []     []          |
++     sed                | []  []  [] []             []    []     [] []       |
++     sharutils          | []  []  []                []    []     [] []       |
++     shishi             |     []                                             |
++     skencil            |     []                                             |
++     solfege            | []  []     []                          []          |
++     solfege-manual     |     []     []                                      |
++     soundtracker       |     []                                 []          |
++     sp                 |     []                                    ()       |
++     sysstat            | []  []                          []     [] []       |
++     tar                | []  []  []                []    []     [] []       |
++     texinfo            |     []                          []     [] []       |
++     tin                |     []                                             |
++     unicode-han-tra... |                                                    |
++     unicode-transla... |     []  []                                         |
++     util-linux-ng      | []  []                    []    []     [] []       |
++     vice               |     ()                    ()           ()          |
++     vmm                |     []                                             |
++     vorbis-tools       |                                 []                 |
++     wastesedge         |     ()                                 ()          |
++     wdiff              | []                                                 |
++     wget               | []  []  []             [] []    []     [] []       |
++     wyslij-po          | []  []                          []                 |
++     xchat              | []  []        []    []    []    []     [] []    [] |
++     xdg-user-dirs      | []  []  [] [] [] [] []    []    []  [] [] []    [] |
++     xkeyboard-config   | []  []                    []    []     []          |
++                        +----------------------------------------------------+
++                          fi  fr  ga gl gu he hi hr hu hy id  is it ja ka kn
++                          105 121 53 20  4  8  3  5 53  2 120  5 84 67  0  4
++
++                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
++                        +-----------------------------------------------+
++     a2ps               |                               []              |
++     aegis              |                                               |
++     ant-phone          |                                               |
++     anubis             |                               []    []        |
++     aspell             |                         []                    |
++     bash               |                                               |
++     bfd                |                                               |
++     bibshelf           |                []             []              |
++     binutils           |                                               |
++     bison              |                               []              |
++     bison-runtime      |       []    [] []             []    []        |
++     bluez-pin          |    [] []    [] []             []              |
++     bombono-dvd        |                                               |
++     buzztard           |                                               |
++     cflow              |                                               |
++     clisp              |                                               |
++     coreutils          |          []                                   |
++     cpio               |                                               |
++     cppi               |                                               |
++     cpplib             |                                               |
++     cryptsetup         |                                               |
++     dfarc              |                   []                          |
++     dialog             |    []       [] []             []    []        |
++     dico               |                                               |
++     diffutils          |                []             []              |
++     dink               |                                               |
++     doodle             |                                               |
++     e2fsprogs          |                                               |
++     enscript           |                                               |
++     exif               |                []                             |
++     fetchmail          |                                               |
++     findutils          |                                               |
++     flex               |                                               |
++     freedink           |                                     []        |
++     gas                |                                               |
++     gawk               |                                               |
++     gcal               |                                               |
++     gcc                |                                               |
++     gettext-examples   |       []       []             [] []           |
++     gettext-runtime    | []                                            |
++     gettext-tools      | []                                            |
++     gip                |                []             []              |
++     gjay               |                                               |
++     gliv               |                                               |
++     glunarclock        |                []                             |
++     gnubiff            |                                               |
++     gnucash            | ()          ()                      ()     () |
++     gnuedu             |                                               |
++     gnulib             |                                               |
++     gnunet             |                                               |
++     gnunet-gtk         |                                               |
++     gnutls             |                               []              |
++     gold               |                                               |
++     gpe-aerial         |                []                             |
++     gpe-beam           |                []                             |
++     gpe-bluetooth      |                []                []           |
++     gpe-calendar       |                []                             |
++     gpe-clock          | []    []       []             [] []           |
++     gpe-conf           | []             []                             |
++     gpe-contacts       | []             []                             |
++     gpe-edit           |                []                             |
++     gpe-filemanager    | []             []                             |
++     gpe-go             | []             []                []           |
++     gpe-login          |                []                             |
++     gpe-ownerinfo      |                []             []              |
++     gpe-package        | []             []                             |
++     gpe-sketchbook     | []             []                             |
++     gpe-su             | []    []       []             [] [] []        |
++     gpe-taskmanager    | [] [] []       []             [] []           |
++     gpe-timesheet      |                []             []              |
++     gpe-today          |       []       []             [] []           |
++     gpe-todo           |                []                   []        |
++     gphoto2            |                                               |
++     gprof              |                               []              |
++     gpsdrive           |                                               |
++     gramadoir          |                                               |
++     grep               |                                               |
++     grub               |                                               |
++     gsasl              |                                               |
++     gss                |                                               |
++     gst-plugins-bad    |             [] []                [] []        |
++     gst-plugins-base   |             [] []                             |
++     gst-plugins-good   |                []                []           |
++     gst-plugins-ugly   |             [] []             [] [] []        |
++     gstreamer          |                                               |
++     gtick              |                                               |
++     gtkam              |                                     []        |
++     gtkorphan          |                []                      []     |
++     gtkspell           |       []    [] []       []    []    [] []     |
++     gutenprint         |                                               |
++     hello              | []             []             []              |
++     help2man           |                                               |
++     hylafax            |                                               |
++     idutils            |                                               |
++     indent             |                                               |
++     iso_15924          |             [] []                             |
++     iso_3166           | [] []       () [] [] []    []       []        |
++     iso_3166_2         |                                               |
++     iso_4217           |             []                      []        |
++     iso_639            |                      []    []                 |
++     iso_639_3          |                            []                 |
++     jwhois             |                []                             |
++     kbd                |                                               |
++     keytouch           |                []                             |
++     keytouch-editor    |                []                             |
++     keytouch-keyboa... |                []                             |
++     klavaro            |                                     []        |
++     latrine            |                []                             |
++     ld                 |                                               |
++     leafpad            | []          [] []                             |
++     libc               | []                                            |
++     libexif            |                                               |
++     libextractor       |                                               |
++     libgnutls          |                               []              |
++     libgpewidget       |                []             []              |
++     libgpg-error       |                                               |
++     libgphoto2         |                                               |
++     libgphoto2_port    |                                               |
++     libgsasl           |                                               |
++     libiconv           |                                               |
++     libidn             |                                               |
++     lifelines          |                                               |
++     liferea            |                                               |
++     lilypond           |                                               |
++     linkdr             |                                               |
++     lordsawar          |                                               |
++     lprng              |                                               |
++     lynx               |                                               |
++     m4                 |                                               |
++     mailfromd          |                                               |
++     mailutils          |                                               |
++     make               | []                                            |
++     man-db             |                                               |
++     man-db-manpages    |                                               |
++     minicom            |                                     []        |
++     mkisofs            |                                               |
++     myserver           |                                               |
++     nano               |                               []    []        |
++     opcodes            |                                               |
++     parted             |                                               |
++     pies               |                                               |
++     popt               | []             []                   []        |
++     psmisc             |                                               |
++     pspp               |                                               |
++     pwdutils           |                                               |
++     radius             |                                               |
++     recode             |                                               |
++     rosegarden         |                                               |
++     rpm                |                                               |
++     rush               |                                               |
++     sarg               |                                               |
++     screem             |                                               |
++     scrollkeeper       |                                     []     [] |
++     sed                |                                               |
++     sharutils          |                                               |
++     shishi             |                                               |
++     skencil            |                                               |
++     solfege            |                                     []        |
++     solfege-manual     |                                               |
++     soundtracker       |                                               |
++     sp                 |                                               |
++     sysstat            |                []                             |
++     tar                |       []                                      |
++     texinfo            |                                     []        |
++     tin                |                                               |
++     unicode-han-tra... |                                               |
++     unicode-transla... |                                               |
++     util-linux-ng      |                                               |
++     vice               |                                               |
++     vmm                |                                               |
++     vorbis-tools       |                                               |
++     wastesedge         |                                               |
++     wdiff              |                                               |
++     wget               |             []                                |
++     wyslij-po          |                                               |
++     xchat              | []             [] []                          |
++     xdg-user-dirs      | [] []       [] [] []       []       [] []     |
++     xkeyboard-config   | []    []    []                                |
++                        +-----------------------------------------------+
++                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
++                          20  5 10  1 13 48  4  2  2  4 24 10 20  3   1
++
++                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
++                        +---------------------------------------------------+
++     a2ps               | []           []     []  []   [] []       []    [] |
++     aegis              | []                      []      []                |
++     ant-phone          |                         []   []                   |
++     anubis             | []           []                 []                |
++     aspell             | []                           [] []    [] []       |
++     bash               | []                                    []          |
++     bfd                |                                 []                |
++     bibshelf           | []  []                                            |
++     binutils           |                                 []    []          |
++     bison              | []           []                 []                |
++     bison-runtime      | []           []     []  []   [] []       []       |
++     bluez-pin          | []           []         []   [] []    [] []    [] |
++     bombono-dvd        |     []                          ()                |
++     buzztard           | []  []                                            |
++     cflow              |              []                                   |
++     clisp              | []                              []                |
++     coreutils          | []           []     []  []      []       []       |
++     cpio               | []           []                 []                |
++     cppi               |              []                                   |
++     cpplib             | []                                                |
++     cryptsetup         | []                                                |
++     dfarc              |              []                                   |
++     dialog             | []           []         []      []                |
++     dico               |              []                                   |
++     diffutils          | []           []         []   [] []             [] |
++     dink               | ()                                                |
++     doodle             | []                                          []    |
++     e2fsprogs          | []           []                                   |
++     enscript           | []                      []   [] []       []       |
++     exif               | []           []              [] ()    []          |
++     fetchmail          | []           []                 []          []    |
++     findutils          | []           []     []          []       []       |
++     flex               | []           []         []   [] []                |
++     freedink           | []           []                                   |
++     gas                |                                                   |
++     gawk               | []           []         []   []                   |
++     gcal               |                                                   |
++     gcc                |                                                [] |
++     gettext-examples   | []           []     []       [] []    [] []    [] |
++     gettext-runtime    | []  []       []     []       [] []    [] []    [] |
++     gettext-tools      |              []              [] []    [] []    [] |
++     gip                | []           []                 []    []       [] |
++     gjay               |                                                   |
++     gliv               | []           []         []   [] []    []          |
++     glunarclock        | []                      []   []       []       [] |
++     gnubiff            | []                           ()                   |
++     gnucash            | []           ()         ()      ()                |
++     gnuedu             | []                                                |
++     gnulib             | []           []                 []       []       |
++     gnunet             |                                                   |
++     gnunet-gtk         |                                                   |
++     gnutls             | []           []                                   |
++     gold               |                                                   |
++     gpe-aerial         | []                  []  []   [] []       []    [] |
++     gpe-beam           | []                  []  []   [] []       []    [] |
++     gpe-bluetooth      | []                      []                        |
++     gpe-calendar       |                         []      []       []    [] |
++     gpe-clock          | []                  []  []   [] []    [] []    [] |
++     gpe-conf           | []                  []  []   [] []    [] []       |
++     gpe-contacts       |                         []   [] []       []    [] |
++     gpe-edit           | []           []                          []       |
++     gpe-filemanager    | []                              []       []       |
++     gpe-go             | []           []         []   [] []    [] []    [] |
++     gpe-login          | []                      []                        |
++     gpe-ownerinfo      | []                  []  []   [] []    [] []    [] |
++     gpe-package        | []                                       []       |
++     gpe-sketchbook     | []                  []  []   [] []       []    [] |
++     gpe-su             | []                  []  []   [] []    [] []    [] |
++     gpe-taskmanager    | []                  []  []   [] []    [] []    [] |
++     gpe-timesheet      | []                  []  []   [] []    [] []    [] |
++     gpe-today          | []                  []  []   [] []    [] []    [] |
++     gpe-todo           | []                      []      []       []    [] |
++     gphoto2            | []        [] []         []   [] []    []       [] |
++     gprof              | []                      []   []                   |
++     gpsdrive           | []                              []                |
++     gramadoir          | []                                    []          |
++     grep               | []           []                 []    []          |
++     grub               | []           []                 []                |
++     gsasl              | []           []                       []       [] |
++     gss                |              []              []       []          |
++     gst-plugins-bad    | []           []         []      []    []    []    |
++     gst-plugins-base   | []           []         []      []    []          |
++     gst-plugins-good   | []           []         []      []    []          |
++     gst-plugins-ugly   | []           []         []      []    [] []       |
++     gstreamer          | []           []         []      []    []          |
++     gtick              | []                              []    []          |
++     gtkam              | []        [] []         []      []    []          |
++     gtkorphan          | []                                                |
++     gtkspell           | []           []     []  []   [] []    [] [] [] [] |
++     gutenprint         | []                              []                |
++     hello              | []           []                       [] []       |
++     help2man           |              []                 []                |
++     hylafax            | []                                                |
++     idutils            | []           []         []   [] []                |
++     indent             | []           []         []   [] []    []       [] |
++     iso_15924          | []           []                 []       []       |
++     iso_3166           | []  [] [] [] []     ()  []   [] [] [] [] [] [] [] |
++     iso_3166_2         | []           []                          []       |
++     iso_4217           | []  []       []     []          [] []    []    [] |
++     iso_639            | []     [] [] []                 [] [] [] []    [] |
++     iso_639_3          |        [] []                                      |
++     jwhois             | []           []         []   []                   |
++     kbd                | []           []              []                   |
++     keytouch           | []           []                       []          |
++     keytouch-editor    | []           []                       []          |
++     keytouch-keyboa... | []           []                       []          |
++     klavaro            | []                      []                        |
++     latrine            |              []                 []                |
++     ld                 |                                                   |
++     leafpad            | []  []       []     []  []      []    [] []    [] |
++     libc               | []           []                 []    []          |
++     libexif            | []           []         ()            []          |
++     libextractor       |                                                   |
++     libgnutls          | []           []                                   |
++     libgpewidget       | []           []                          []       |
++     libgpg-error       |              []              []                   |
++     libgphoto2         | []           []                                   |
++     libgphoto2_port    | []           []         []      []    []          |
++     libgsasl           | []           []              []       []       [] |
++     libiconv           | []           []                       [] []    [] |
++     libidn             | []           []                                   |
++     lifelines          | []           []                                   |
++     liferea            | []           []     []  []   [] ()    ()    []    |
++     lilypond           | []                                                |
++     linkdr             | []                  []          []                |
++     lordsawar          |                                                   |
++     lprng              |              []                                   |
++     lynx               | []                      []      []                |
++     m4                 | []           []         []   [] []                |
++     mailfromd          |              []                                   |
++     mailutils          |              []                                   |
++     make               | []           []         []      []                |
++     man-db             | []           []                 []                |
++     man-db-manpages    | []           []                 []                |
++     minicom            |              []         []   [] []                |
++     mkisofs            | []           []                 []                |
++     myserver           |                                                   |
++     nano               | []           []         []      []                |
++     opcodes            | []                           []                   |
++     parted             | []           []                 []    []          |
++     pies               |              []                                   |
++     popt               | []           []     []          []                |
++     psmisc             | []           []                 []                |
++     pspp               | []                      []                        |
++     pwdutils           |              []                                   |
++     radius             | []           []                 []                |
++     recode             | []           []     []  []   [] []    [] []       |
++     rosegarden         |              ()                 ()                |
++     rpm                | []           []     []                            |
++     rush               | []           []                                   |
++     sarg               |                                                   |
++     screem             |                                                   |
++     scrollkeeper       | []  []       []              [] []    []    [] [] |
++     sed                | []           []     []  []   [] []    [] []    [] |
++     sharutils          | []           []                 []             [] |
++     shishi             |              []                                   |
++     skencil            |                     []  []                        |
++     solfege            | []           []         []      []                |
++     solfege-manual     | []           []         []                        |
++     soundtracker       |                                       []          |
++     sp                 |                                                   |
++     sysstat            | []           []         []      []                |
++     tar                | []           []                 []       []       |
++     texinfo            | []           []              [] []                |
++     tin                |                                 []                |
++     unicode-han-tra... |                                                   |
++     unicode-transla... |                                                   |
++     util-linux-ng      | []           []         []      []       []       |
++     vice               | []                                                |
++     vmm                | []                                                |
++     vorbis-tools       | []           []                                   |
++     wastesedge         | []                                                |
++     wdiff              | []           []                                   |
++     wget               | []           []     []  []      []    [] []       |
++     wyslij-po          | []  []       []                                   |
++     xchat              | []        [] []     []          []    [] [] [] [] |
++     xdg-user-dirs      | []  [] [] [] []  [] []  []   [] []    [] [] [] [] |
++     xkeyboard-config   | []           []                 []                |
++                        +---------------------------------------------------+
++                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
++                          135 10  4  7 105  1 29  62   47 91  3 54 46  9 37
++
++                          sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
++                        +---------------------------------------------------+
++     a2ps               | []              [] [] [] []                       | 27
++     aegis              |                          []                       |  9
++     ant-phone          | []                 []    []      []               |  9
++     anubis             | []                 [] [] []                       | 15
++     aspell             |                       [] []  []                   | 20
++     bash               | []                    [] []                       | 12
++     bfd                |                          []                       |  6
++     bibshelf           | []                       []      []               | 16
++     binutils           |                       [] []                       |  8
++     bison              | []                       []                       | 12
++     bison-runtime      | []              []    [] []      []          []   | 29
++     bluez-pin          | []              [] [] [] []  []  []          []   | 37
++     bombono-dvd        |                          []                       |  4
++     buzztard           |                          []                       |  7
++     cflow              |                       [] []      []               |  9
++     clisp              |                                                   | 10
++     coreutils          | []                    [] []      []               | 22
++     cpio               | []                 [] [] []      []          []   | 13
++     cppi               |                       [] []                       |  5
++     cpplib             | []                 [] [] []      []          []   | 14
++     cryptsetup         | []                       []                       |  7
++     dfarc              |                          []                       |  9
++     dialog             | []  []          []       []  []  []          []   | 30
++     dico               |                       []                          |  2
++     diffutils          | []                 [] [] []      []          []   | 30
++     dink               |                                                   |  4
++     doodle             | []                       []                       |  7
++     e2fsprogs          | []                 []    []                       | 11
++     enscript           | []                 [] [] []                       | 17
++     exif               | []                       []      []               | 16
++     fetchmail          |                    []    []      []               | 17
++     findutils          | []                 [] [] []      []               | 20
++     flex               | []                 []    []                  []   | 15
++     freedink           |                          []                       | 10
++     gas                |                    []                             |  4
++     gawk               | []                 []    []      []               | 18
++     gcal               | []                 []                             |  5
++     gcc                | []                 []            []               |  7
++     gettext-examples   | []                 [] [] []      []    []    []   | 34
++     gettext-runtime    | []                 [] [] []      []    []    []   | 29
++     gettext-tools      | []                 [] [] []      []          []   | 22
++     gip                | []                       []      []          []   | 22
++     gjay               |                          []                       |  3
++     gliv               | []                 []    []                       | 14
++     glunarclock        | []                       []  []  []          []   | 19
++     gnubiff            | []                       []                       |  4
++     gnucash            |                    () [] ()      []          ()   | 10
++     gnuedu             |                          []                  []   |  7
++     gnulib             | []                    [] []      []               | 16
++     gnunet             |                          []                       |  1
++     gnunet-gtk         | []                 []    []                       |  5
++     gnutls             | []                       []      []               | 10
++     gold               |                          []                       |  4
++     gpe-aerial         | []                       []      []               | 18
++     gpe-beam           | []                       []      []               | 19
++     gpe-bluetooth      | []                       []      []               | 13
++     gpe-calendar       | []                       []  []  []               | 12
++     gpe-clock          | []                 []    []  []  []               | 28
++     gpe-conf           | []                       []  []  []               | 20
++     gpe-contacts       | []                       []      []               | 17
++     gpe-edit           | []                       []      []               | 12
++     gpe-filemanager    | []                       []  []  []               | 16
++     gpe-go             | []                 []    []  []  []               | 25
++     gpe-login          | []                       []      []               | 11
++     gpe-ownerinfo      | []                 []    []      []          []   | 25
++     gpe-package        | []                       []      []               | 13
++     gpe-sketchbook     | []                       []      []               | 20
++     gpe-su             | []                 []    []  []  []               | 30
++     gpe-taskmanager    | []                 []    []  []  []               | 29
++     gpe-timesheet      | []                 []    []      []          []   | 25
++     gpe-today          | []                 []    []  []  []          []   | 30
++     gpe-todo           | []                       []  []  []               | 17
++     gphoto2            | []                    [] []      []          []   | 24
++     gprof              | []                 []    []                       | 15
++     gpsdrive           | []                       []      []               | 11
++     gramadoir          | []                       []      []               | 11
++     grep               |                 []       []      []               | 10
++     grub               | []                       []      []               | 14
++     gsasl              | []                       []      []          []   | 14
++     gss                | []                       []      []               | 11
++     gst-plugins-bad    | []                 []    []      []               | 26
++     gst-plugins-base   | []                 [] [] []      []               | 24
++     gst-plugins-good   | []                 []    []      []               | 24
++     gst-plugins-ugly   | []                 [] [] []      []               | 29
++     gstreamer          | []                    [] []      []               | 22
++     gtick              |                       [] []      []               | 13
++     gtkam              | []                       []      []               | 20
++     gtkorphan          | []                       []      []               | 14
++     gtkspell           | []              [] [] [] []  []  []    []    []   | 45
++     gutenprint         | []                                                | 10
++     hello              | []              [] []    []      []          []   | 21
++     help2man           | []                       []                       |  7
++     hylafax            |                          []                       |  5
++     idutils            | []                 []    []      []               | 17
++     indent             | []                 [] [] []      []          []   | 30
++     iso_15924          |                 ()    [] ()      []          []   | 16
++     iso_3166           | []        []    () [] [] ()  []  []    []    ()   | 53
++     iso_3166_2         |                 ()    [] ()      []               |  9
++     iso_4217           | []              () [] [] ()      []    []         | 26
++     iso_639            | []     [] []    ()    [] ()  []  []    []    []   | 38
++     iso_639_3          |        []                ()                       |  8
++     jwhois             | []                 []    []      []          []   | 16
++     kbd                | []                 [] [] []      []               | 15
++     keytouch           | []                       []      []               | 16
++     keytouch-editor    | []                       []      []               | 14
++     keytouch-keyboa... | []                       []      []               | 14
++     klavaro            |                          []                       | 11
++     latrine            |                    []    []      []               | 10
++     ld                 | []                 []    []                  []   | 11
++     leafpad            | []                 [] [] []      []          []   | 33
++     libc               | []                 []    []      []          []   | 21
++     libexif            |                          []      ()               |  7
++     libextractor       |                          []                       |  1
++     libgnutls          | []                       []      []               |  9
++     libgpewidget       | []                       []      []               | 14
++     libgpg-error       | []                       []      []               |  9
++     libgphoto2         |                       [] []                       |  8
++     libgphoto2_port    | []                    [] []                  []   | 14
++     libgsasl           | []                       []      []               | 13
++     libiconv           | []                       []  []  []               | 21
++     libidn             | ()                       []      []               | 11
++     lifelines          | []                                                |  4
++     liferea            | []                 []            []               | 21
++     lilypond           |                          []                       |  7
++     linkdr             | []                 []    []      []          []   | 17
++     lordsawar          |                                                   |  1
++     lprng              |                          []                       |  3
++     lynx               | []                 [] [] []                       | 17
++     m4                 | []                       []      []          []   | 19
++     mailfromd          |                       [] []                       |  3
++     mailutils          |                          []                       |  5
++     make               | []                 []    []      []               | 21
++     man-db             | []                       []      []               |  8
++     man-db-manpages    |                                                   |  4
++     minicom            | []                       []                       | 16
++     mkisofs            |                          []      []               |  9
++     myserver           |                                                   |  0
++     nano               | []                       []      []          []   | 21
++     opcodes            | []                 []    []                       | 11
++     parted             | []                 [] [] []                  []   | 15
++     pies               |                       [] []                       |  3
++     popt               | []              [] []    []      []          []   | 27
++     psmisc             | []                       []                       | 11
++     pspp               |                                                   |  4
++     pwdutils           | []                       []                       |  6
++     radius             |                       [] []                       |  9
++     recode             | []                 []    []      []               | 28
++     rosegarden         | ()                                                |  0
++     rpm                | []                       []                  []   | 11
++     rush               |                       [] []                       |  4
++     sarg               |                                                   |  1
++     screem             |                          []                       |  3
++     scrollkeeper       | []                 [] [] []                  []   | 27
++     sed                | []                 []    []      []          []   | 30
++     sharutils          | []                 []    []      []          []   | 22
++     shishi             |                          []                       |  3
++     skencil            | []                       []                       |  7
++     solfege            | []                 []    []      []               | 16
++     solfege-manual     |                    []                             |  8
++     soundtracker       | []                 []    []                       |  9
++     sp                 |                    []                             |  3
++     sysstat            |                          []      []               | 15
++     tar                | []                 [] [] []      []          []   | 23
++     texinfo            | []                 [] [] []      []               | 17
++     tin                |                                                   |  4
++     unicode-han-tra... |                                                   |  0
++     unicode-transla... |                                                   |  2
++     util-linux-ng      | []                 [] [] []                       | 20
++     vice               | ()                 ()                             |  1
++     vmm                |                          []                       |  4
++     vorbis-tools       |                          []                       |  6
++     wastesedge         |                                                   |  2
++     wdiff              | []                       []                       |  7
++     wget               | []                 []    []      []          []   | 26
++     wyslij-po          |                       [] []                       |  8
++     xchat              | []              []    [] []      []          []   | 36
++     xdg-user-dirs      | []     [] []    [] [] [] []      []    []    []   | 63
++     xkeyboard-config   | []                    [] []                       | 22
++                        +---------------------------------------------------+
++       85 teams           sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
++      178 domains         119  1  3  3  0 10 65 51 155 17  98     7    41    2618
++
++   Some counters in the preceding matrix are higher than the number of
++visible blocks let us expect.  This is because a few extra PO files are
++used for implementing regional variants of languages, or language
++dialects.
++
++   For a PO file in the matrix above to be effective, the package to
++which it applies should also have been internationalized and
++distributed as such by its maintainer.  There might be an observable
++lag between the mere existence a PO file and its wide availability in a
++distribution.
++
++   If June 2010 seems to be old, you may fetch a more recent copy of
++this `ABOUT-NLS' file on most GNU archive sites.  The most up-to-date
++matrix with full percentage details can be found at
++`http://translationproject.org/extra/matrix.html'.
++
++1.5 Using `gettext' in new packages
++===================================
++
++If you are writing a freely available program and want to
++internationalize it you are welcome to use GNU `gettext' in your
++package.  Of course you have to respect the GNU Library General Public
++License which covers the use of the GNU `gettext' library.  This means
++in particular that even non-free programs can use `libintl' as a shared
++library, whereas only free software can use `libintl' as a static
++library or use modified versions of `libintl'.
++
++   Once the sources are changed appropriately and the setup can handle
++the use of `gettext' the only thing missing are the translations.  The
++Free Translation Project is also available for packages which are not
++developed inside the GNU project.  Therefore the information given above
++applies also for every other Free Software Project.  Contact
++`coordinator@translationproject.org' to make the `.pot' files available
++to the translation teams.
++
+diff --git a/config.rpath b/config.rpath
+new file mode 100755
+index 0000000..17298f2
+--- /dev/null
++++ b/config.rpath
+@@ -0,0 +1,672 @@
++#! /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-2010 Free Software Foundation, Inc.
++#   Taken from GNU libtool, 2001
++#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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,'
++      ;;
++    darwin*)
++      case $cc_basename in
++        xlc*)
++          wl='-Wl,'
++          ;;
++      esac
++      ;;
++    mingw* | cygwin* | pw32* | os2* | cegcc*)
++      ;;
++    hpux9* | hpux10* | hpux11*)
++      wl='-Wl,'
++      ;;
++    irix5* | irix6* | nonstopux*)
++      wl='-Wl,'
++      ;;
++    newsos6)
++      ;;
++    linux* | k*bsd*-gnu)
++      case $cc_basename in
++        ecc*)
++          wl='-Wl,'
++          ;;
++        icc* | ifort*)
++          wl='-Wl,'
++          ;;
++        lf95*)
++          wl='-Wl,'
++          ;;
++        pgcc | pgf77 | pgf90)
++          wl='-Wl,'
++          ;;
++        ccc*)
++          wl='-Wl,'
++          ;;
++        como)
++          wl='-lopt='
++          ;;
++        *)
++          case `$CC -V 2>&1 | sed 5q` in
++            *Sun\ C*)
++              wl='-Wl,'
++              ;;
++          esac
++          ;;
++      esac
++      ;;
++    osf3* | osf4* | osf5*)
++      wl='-Wl,'
++      ;;
++    rdos*)
++      ;;
++    solaris*)
++      wl='-Wl,'
++      ;;
++    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*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_minus_L=yes
++      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++      # that the semantics of dynamic libraries on AmigaOS, at least up
++      # to version 4, is to share data among multiple programs linked
++      # with the same dynamic library.  Since this doesn't match the
++      # behavior of shared libraries on other platforms, we cannot use
++      # them.
++      ld_shlibs=no
++      ;;
++    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
++      ;;
++    interix[3-9]*)
++      hardcode_direct=no
++      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++      ;;
++    gnu* | linux* | k*bsd*-gnu)
++      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    netbsd*)
++      ;;
++    solaris*)
++      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++        ld_shlibs=no
++      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
++      case `$LD -v 2>&1` in
++        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
++          ld_shlibs=no
++          ;;
++        *)
++          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
++          else
++            ld_shlibs=no
++          fi
++          ;;
++      esac
++      ;;
++    sunos4*)
++      hardcode_direct=yes
++      ;;
++    *)
++      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++  esac
++  if test "$ld_shlibs" = no; then
++    hardcode_libdir_flag_spec=
++  fi
++else
++  case "$host_os" in
++    aix3*)
++      # Note: this linker hardcodes the directories in LIBPATH if there
++      # are no directories specified by -L.
++      hardcode_minus_L=yes
++      if test "$GCC" = yes; then
++        # Neither direct hardcoding nor static linking is supported with a
++        # broken collect2.
++        hardcode_direct=unsupported
++      fi
++      ;;
++    aix[4-9]*)
++      if test "$host_cpu" = ia64; then
++        # On IA64, the linker does run time linking by default, so we don't
++        # have to do anything special.
++        aix_use_runtimelinking=no
++      else
++        aix_use_runtimelinking=no
++        # Test if we are trying to use run time linking or normal
++        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++        # need to do runtime linking.
++        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
++          for ld_flag in $LDFLAGS; do
++            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++              aix_use_runtimelinking=yes
++              break
++            fi
++          done
++          ;;
++        esac
++      fi
++      hardcode_direct=yes
++      hardcode_libdir_separator=':'
++      if test "$GCC" = yes; then
++        case $host_os in aix4.[012]|aix4.[012].*)
++          collect2name=`${CC} -print-prog-name=collect2`
++          if test -f "$collect2name" && \
++            strings "$collect2name" | grep resolve_lib_name >/dev/null
++          then
++            # We have reworked collect2
++            :
++          else
++            # We have old collect2
++            hardcode_direct=unsupported
++            hardcode_minus_L=yes
++            hardcode_libdir_flag_spec='-L$libdir'
++            hardcode_libdir_separator=
++          fi
++          ;;
++        esac
++      fi
++      # Begin _LT_AC_SYS_LIBPATH_AIX.
++      echo 'int main () { return 0; }' > conftest.c
++      ${CC} ${LDFLAGS} conftest.c -o conftest
++      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
++}'`
++      if test -z "$aix_libpath"; then
++        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
++}'`
++      fi
++      if test -z "$aix_libpath"; then
++        aix_libpath="/usr/lib:/lib"
++      fi
++      rm -f conftest.c conftest
++      # End _LT_AC_SYS_LIBPATH_AIX.
++      if test "$aix_use_runtimelinking" = yes; then
++        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
++      else
++        if test "$host_cpu" = ia64; then
++          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
++        else
++          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
++        fi
++      fi
++      ;;
++    amigaos*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_minus_L=yes
++      # see comment about different semantics on the GNU ld section
++      ld_shlibs=no
++      ;;
++    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 test "$GCC" = yes ; then
++        :
++      else
++        case $cc_basename in
++          xlc*)
++            ;;
++          *)
++            ld_shlibs=no
++            ;;
++        esac
++      fi
++      ;;
++    dgux*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      ;;
++    freebsd1*)
++      ld_shlibs=no
++      ;;
++    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=:
++      ;;
++    openbsd*)
++      if test -f /usr/libexec/ld.so; then
++        hardcode_direct=yes
++        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++        else
++          case "$host_os" in
++            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++              hardcode_libdir_flag_spec='-R$libdir'
++              ;;
++            *)
++              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++              ;;
++          esac
++        fi
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    os2*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_minus_L=yes
++      ;;
++    osf3*)
++      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++      hardcode_libdir_separator=:
++      ;;
++    osf4* | osf5*)
++      if test "$GCC" = yes; then
++        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++      else
++        # Both cc and cxx compiler support -rpath directly
++        hardcode_libdir_flag_spec='-rpath $libdir'
++      fi
++      hardcode_libdir_separator=:
++      ;;
++    solaris*)
++      hardcode_libdir_flag_spec='-R$libdir'
++      ;;
++    sunos4*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_direct=yes
++      hardcode_minus_L=yes
++      ;;
++    sysv4)
++      case $host_vendor in
++        sni)
++          hardcode_direct=yes # is this really true???
++          ;;
++        siemens)
++          hardcode_direct=no
++          ;;
++        motorola)
++          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
++          ;;
++      esac
++      ;;
++    sysv4.3*)
++      ;;
++    sysv4*MP*)
++      if test -d /usr/nec; then
++        ld_shlibs=yes
++      fi
++      ;;
++    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
++      ;;
++    sysv5* | sco3.2v5* | sco5v6*)
++      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
++      hardcode_libdir_separator=':'
++      ;;
++    uts4*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      ;;
++    *)
++      ld_shlibs=no
++      ;;
++  esac
++fi
++
++# Check dynamic linker characteristics
++# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
++# Unlike libtool.m4, here we don't care about _all_ names of the library, but
++# only about the one the linker finds when passed -lNAME. This is the last
++# element of library_names_spec in libtool.m4, or possibly two of them if the
++# linker has special search rules.
++library_names_spec=      # the last element of library_names_spec in libtool.m4
++libname_spec='lib$name'
++case "$host_os" in
++  aix3*)
++    library_names_spec='$libname.a'
++    ;;
++  aix[4-9]*)
++    library_names_spec='$libname$shrext'
++    ;;
++  amigaos*)
++    library_names_spec='$libname.a'
++    ;;
++  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'
++    ;;
++  freebsd1*)
++    ;;
++  freebsd* | dragonfly*)
++    case "$host_os" in
++      freebsd[123]*)
++        library_names_spec='$libname$shrext$versuffix' ;;
++      *)
++        library_names_spec='$libname$shrext' ;;
++    esac
++    ;;
++  gnu*)
++    library_names_spec='$libname$shrext'
++    ;;
++  hpux9* | hpux10* | hpux11*)
++    case $host_cpu in
++      ia64*)
++        shrext=.so
++        ;;
++      hppa*64*)
++        shrext=.sl
++        ;;
++      *)
++        shrext=.sl
++        ;;
++    esac
++    library_names_spec='$libname$shrext'
++    ;;
++  interix[3-9]*)
++    library_names_spec='$libname$shrext'
++    ;;
++  irix5* | irix6* | nonstopux*)
++    library_names_spec='$libname$shrext'
++    case "$host_os" in
++      irix5* | nonstopux*)
++        libsuff= shlibsuff=
++        ;;
++      *)
++        case $LD in
++          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
++          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
++          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
++          *) libsuff= shlibsuff= ;;
++        esac
++        ;;
++    esac
++    ;;
++  linux*oldld* | linux*aout* | linux*coff*)
++    ;;
++  linux* | k*bsd*-gnu)
++    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'
++    ;;
++  uts4*)
++    library_names_spec='$libname$shrext'
++    ;;
++esac
++
++sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
++escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
++shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
++escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++
++LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<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/m4/codeset.m4 b/m4/codeset.m4
+new file mode 100644
+index 0000000..a53c042
+--- /dev/null
++++ b/m4/codeset.m4
+@@ -0,0 +1,21 @@
++# codeset.m4 serial 4 (gettext-0.18)
++dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_LANGINFO_CODESET],
++[
++  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
++    [AC_TRY_LINK([#include <langinfo.h>],
++      [char* cs = nl_langinfo(CODESET); return !cs;],
++      [am_cv_langinfo_codeset=yes],
++      [am_cv_langinfo_codeset=no])
++    ])
++  if test $am_cv_langinfo_codeset = yes; then
++    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
++      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
++  fi
++])
+diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
+new file mode 100644
+index 0000000..d416a61
+--- /dev/null
++++ b/m4/fcntl-o.m4
+@@ -0,0 +1,81 @@
++# fcntl-o.m4 serial 1
++dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl Written by Paul Eggert.
++
++# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
++# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
++# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
++AC_DEFUN([gl_FCNTL_O_FLAGS],
++[
++  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
++  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
++  AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
++    [AC_RUN_IFELSE(
++       [AC_LANG_PROGRAM(
++          [[#include <sys/types.h>
++           #include <sys/stat.h>
++           #include <unistd.h>
++           #include <fcntl.h>
++           #ifndef O_NOATIME
++            #define O_NOATIME 0
++           #endif
++           #ifndef O_NOFOLLOW
++            #define O_NOFOLLOW 0
++           #endif
++           static int const constants[] =
++            {
++              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
++              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
++            };
++          ]],
++          [[
++            int status = !constants;
++            {
++              static char const sym[] = "conftest.sym";
++              if (symlink (".", sym) != 0
++                  || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
++                status |= 32;
++              unlink (sym);
++            }
++            {
++              static char const file[] = "confdefs.h";
++              int fd = open (file, O_RDONLY | O_NOATIME);
++              char c;
++              struct stat st0, st1;
++              if (fd < 0
++                  || fstat (fd, &st0) != 0
++                  || sleep (1) != 0
++                  || read (fd, &c, 1) != 1
++                  || close (fd) != 0
++                  || stat (file, &st1) != 0
++                  || st0.st_atime != st1.st_atime)
++                status |= 64;
++            }
++            return status;]])],
++       [gl_cv_header_working_fcntl_h=yes],
++       [case $? in #(
++        32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
++        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
++        96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
++         *) gl_cv_header_working_fcntl_h='no';;
++        esac],
++       [gl_cv_header_working_fcntl_h=cross-compiling])])
++
++  case $gl_cv_header_working_fcntl_h in #(
++  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
++  *) ac_val=1;;
++  esac
++  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
++    [Define to 1 if O_NOATIME works.])
++
++  case $gl_cv_header_working_fcntl_h in #(
++  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
++  *) ac_val=1;;
++  esac
++  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
++    [Define to 1 if O_NOFOLLOW works.])
++])
+diff --git a/m4/gettext.m4 b/m4/gettext.m4
+new file mode 100644
+index 0000000..f84e6a5
+--- /dev/null
++++ b/m4/gettext.m4
+@@ -0,0 +1,383 @@
++# gettext.m4 serial 63 (gettext-0.18)
++dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
++
++dnl Macro to add for using GNU gettext.
++
++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
++dnl    default (if it is not specified or empty) is 'no-libtool'.
++dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
++dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
++dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
++dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
++dnl    depending on --{enable,disable}-{shared,static} and on the presence of
++dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
++dnl    $(top_builddir)/intl/libintl.a will be created.
++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
++dnl    implementations (in libc or libintl) without the ngettext() function
++dnl    will be ignored.  If NEEDSYMBOL is specified and is
++dnl    'need-formatstring-macros', then GNU gettext implementations that don't
++dnl    support the ISO C 99 <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
++dnl The result of the configuration is one of three cases:
++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
++dnl    and used.
++dnl    Catalog format: GNU --> install in $(datadir)
++dnl    Catalog extension: .mo after installation, .gmo in source tree
++dnl 2) GNU gettext has been found in the system's C library.
++dnl    Catalog format: GNU --> install in $(datadir)
++dnl    Catalog extension: .mo after installation, .gmo in source tree
++dnl 3) No internationalization, always use English msgid.
++dnl    Catalog format: none
++dnl    Catalog extension: none
++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
++dnl The use of .gmo is historical (it was needed to avoid overwriting the
++dnl GNU format catalogs when building on a platform with an X/Open gettext),
++dnl but we keep it in order not to force irrelevant filename changes on the
++dnl maintainers.
++dnl
++AC_DEFUN([AM_GNU_GETTEXT],
++[
++  dnl Argument checking.
++  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
++    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
++])])])])])
++  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
++    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
++  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
++    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
++])])])])
++  define([gt_included_intl],
++    ifelse([$1], [external],
++      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
++      [yes]))
++  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
++  gt_NEEDS_INIT
++  AM_GNU_GETTEXT_NEED([$2])
++
++  AC_REQUIRE([AM_PO_SUBDIRS])dnl
++  ifelse(gt_included_intl, yes, [
++    AC_REQUIRE([AM_INTL_SUBDIR])dnl
++  ])
++
++  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++
++  dnl Sometimes libintl requires libiconv, so first search for libiconv.
++  dnl Ideally we would do this search only after the
++  dnl      if test "$USE_NLS" = "yes"; then
++  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
++  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
++  dnl the configure script would need to contain the same shell code
++  dnl again, outside any 'if'. There are two solutions:
++  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
++  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
++  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
++  dnl documented, we avoid it.
++  ifelse(gt_included_intl, yes, , [
++    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++  ])
++
++  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
++  gt_INTL_MACOSX
++
++  dnl Set USE_NLS.
++  AC_REQUIRE([AM_NLS])
++
++  ifelse(gt_included_intl, yes, [
++    BUILD_INCLUDED_LIBINTL=no
++    USE_INCLUDED_LIBINTL=no
++  ])
++  LIBINTL=
++  LTLIBINTL=
++  POSUB=
++
++  dnl Add a version number to the cache macros.
++  case " $gt_needs " in
++    *" need-formatstring-macros "*) gt_api_version=3 ;;
++    *" need-ngettext "*) gt_api_version=2 ;;
++    *) gt_api_version=1 ;;
++  esac
++  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
++  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
++
++  dnl If we use NLS figure out what method
++  if test "$USE_NLS" = "yes"; then
++    gt_use_preinstalled_gnugettext=no
++    ifelse(gt_included_intl, yes, [
++      AC_MSG_CHECKING([whether included gettext is requested])
++      AC_ARG_WITH([included-gettext],
++        [  --with-included-gettext use the GNU gettext library included here],
++        nls_cv_force_use_gnu_gettext=$withval,
++        nls_cv_force_use_gnu_gettext=no)
++      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
++
++      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
++      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
++    ])
++        dnl User does not insist on using GNU NLS library.  Figure out what
++        dnl to use.  If GNU gettext is available we use this.  Else we have
++        dnl to fall back to GNU NLS library.
++
++        if test $gt_api_version -ge 3; then
++          gt_revision_test_code='
++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++'
++        else
++          gt_revision_test_code=
++        fi
++        if test $gt_api_version -ge 2; then
++          gt_expression_test_code=' + * ngettext ("", "", 0)'
++        else
++          gt_expression_test_code=
++        fi
++
++        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
++         [AC_TRY_LINK([#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_bindings],
++            [eval "$gt_func_gnugettext_libc=yes"],
++            [eval "$gt_func_gnugettext_libc=no"])])
++
++        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
++          dnl Sometimes libintl requires libiconv, so first search for libiconv.
++          ifelse(gt_included_intl, yes, , [
++            AM_ICONV_LINK
++          ])
++          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
++          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
++          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
++          dnl even if libiconv doesn't exist.
++          AC_LIB_LINKFLAGS_BODY([intl])
++          AC_CACHE_CHECK([for GNU gettext in libintl],
++            [$gt_func_gnugettext_libintl],
++           [gt_save_CPPFLAGS="$CPPFLAGS"
++            CPPFLAGS="$CPPFLAGS $INCINTL"
++            gt_save_LIBS="$LIBS"
++            LIBS="$LIBS $LIBINTL"
++            dnl Now see whether libintl exists and does not depend on libiconv.
++            AC_TRY_LINK([#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_alias ("")],
++              [eval "$gt_func_gnugettext_libintl=yes"],
++              [eval "$gt_func_gnugettext_libintl=no"])
++            dnl Now see whether libintl exists and depends on libiconv.
++            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
++              LIBS="$LIBS $LIBICONV"
++              AC_TRY_LINK([#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_alias ("")],
++               [LIBINTL="$LIBINTL $LIBICONV"
++                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
++                eval "$gt_func_gnugettext_libintl=yes"
++               ])
++            fi
++            CPPFLAGS="$gt_save_CPPFLAGS"
++            LIBS="$gt_save_LIBS"])
++        fi
++
++        dnl If an already present or preinstalled GNU gettext() is found,
++        dnl use it.  But if this macro is used in GNU gettext, and GNU
++        dnl gettext is already preinstalled in libintl, we update this
++        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
++        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
++           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
++                && test "$PACKAGE" != gettext-runtime \
++                && test "$PACKAGE" != gettext-tools; }; then
++          gt_use_preinstalled_gnugettext=yes
++        else
++          dnl Reset the values set by searching for libintl.
++          LIBINTL=
++          LTLIBINTL=
++          INCINTL=
++        fi
++
++    ifelse(gt_included_intl, yes, [
++        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
++          dnl GNU gettext is not found in the C library.
++          dnl Fall back on included GNU gettext library.
++          nls_cv_use_gnu_gettext=yes
++        fi
++      fi
++
++      if test "$nls_cv_use_gnu_gettext" = "yes"; then
++        dnl Mark actions used to generate GNU NLS library.
++        BUILD_INCLUDED_LIBINTL=yes
++        USE_INCLUDED_LIBINTL=yes
++        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
++        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
++        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
++      fi
++
++      CATOBJEXT=
++      if test "$gt_use_preinstalled_gnugettext" = "yes" \
++         || test "$nls_cv_use_gnu_gettext" = "yes"; then
++        dnl Mark actions to use GNU gettext tools.
++        CATOBJEXT=.gmo
++      fi
++    ])
++
++    if test -n "$INTL_MACOSX_LIBS"; then
++      if test "$gt_use_preinstalled_gnugettext" = "yes" \
++         || test "$nls_cv_use_gnu_gettext" = "yes"; then
++        dnl Some extra flags are needed during linking.
++        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
++        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
++      fi
++    fi
++
++    if test "$gt_use_preinstalled_gnugettext" = "yes" \
++       || test "$nls_cv_use_gnu_gettext" = "yes"; then
++      AC_DEFINE([ENABLE_NLS], [1],
++        [Define to 1 if translation of program messages to the user's native language
++   is requested.])
++    else
++      USE_NLS=no
++    fi
++  fi
++
++  AC_MSG_CHECKING([whether to use NLS])
++  AC_MSG_RESULT([$USE_NLS])
++  if test "$USE_NLS" = "yes"; then
++    AC_MSG_CHECKING([where the gettext function comes from])
++    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
++        gt_source="external libintl"
++      else
++        gt_source="libc"
++      fi
++    else
++      gt_source="included intl directory"
++    fi
++    AC_MSG_RESULT([$gt_source])
++  fi
++
++  if test "$USE_NLS" = "yes"; then
++
++    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
++        AC_MSG_CHECKING([how to link with libintl])
++        AC_MSG_RESULT([$LIBINTL])
++        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
++      fi
++
++      dnl For backward compatibility. Some packages may be using this.
++      AC_DEFINE([HAVE_GETTEXT], [1],
++       [Define if the GNU gettext() function is already present or preinstalled.])
++      AC_DEFINE([HAVE_DCGETTEXT], [1],
++       [Define if the GNU dcgettext() function is already present or preinstalled.])
++    fi
++
++    dnl We need to process the po/ directory.
++    POSUB=po
++  fi
++
++  ifelse(gt_included_intl, yes, [
++    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
++    dnl to 'yes' because some of the testsuite requires it.
++    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
++      BUILD_INCLUDED_LIBINTL=yes
++    fi
++
++    dnl Make all variables we use known to autoconf.
++    AC_SUBST([BUILD_INCLUDED_LIBINTL])
++    AC_SUBST([USE_INCLUDED_LIBINTL])
++    AC_SUBST([CATOBJEXT])
++
++    dnl For backward compatibility. Some configure.ins may be using this.
++    nls_cv_header_intl=
++    nls_cv_header_libgt=
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    DATADIRNAME=share
++    AC_SUBST([DATADIRNAME])
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    INSTOBJEXT=.mo
++    AC_SUBST([INSTOBJEXT])
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    GENCAT=gencat
++    AC_SUBST([GENCAT])
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    INTLOBJS=
++    if test "$USE_INCLUDED_LIBINTL" = yes; then
++      INTLOBJS="\$(GETTOBJS)"
++    fi
++    AC_SUBST([INTLOBJS])
++
++    dnl Enable libtool support if the surrounding package wishes it.
++    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
++    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
++  ])
++
++  dnl For backward compatibility. Some Makefiles may be using this.
++  INTLLIBS="$LIBINTL"
++  AC_SUBST([INTLLIBS])
++
++  dnl Make all documented variables known to autoconf.
++  AC_SUBST([LIBINTL])
++  AC_SUBST([LTLIBINTL])
++  AC_SUBST([POSUB])
++])
++
++
++dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
++m4_define([gt_NEEDS_INIT],
++[
++  m4_divert_text([DEFAULTS], [gt_needs=])
++  m4_define([gt_NEEDS_INIT], [])
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
++AC_DEFUN([AM_GNU_GETTEXT_NEED],
++[
++  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
++AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
+new file mode 100644
+index 0000000..f148c12
+--- /dev/null
++++ b/m4/glibc2.m4
+@@ -0,0 +1,30 @@
++# glibc2.m4 serial 2
++dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++# Test for the GNU C Library, version 2.0 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([gt_GLIBC2],
++  [
++    AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
++      [ac_cv_gnu_library_2],
++      [AC_EGREP_CPP([Lucky GNU user],
++        [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ >= 2)
++  Lucky GNU user
++ #endif
++#endif
++        ],
++        [ac_cv_gnu_library_2=yes],
++        [ac_cv_gnu_library_2=no])
++      ]
++    )
++    AC_SUBST([GLIBC2])
++    GLIBC2="$ac_cv_gnu_library_2"
++  ]
++)
+diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
+new file mode 100644
+index 0000000..68ada9d
+--- /dev/null
++++ b/m4/glibc21.m4
+@@ -0,0 +1,30 @@
++# glibc21.m4 serial 4
++dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++# Test for the GNU C Library, version 2.1 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([gl_GLIBC21],
++  [
++    AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
++      [ac_cv_gnu_library_2_1],
++      [AC_EGREP_CPP([Lucky GNU user],
++        [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
++  Lucky GNU user
++ #endif
++#endif
++        ],
++        [ac_cv_gnu_library_2_1=yes],
++        [ac_cv_gnu_library_2_1=no])
++      ]
++    )
++    AC_SUBST([GLIBC21])
++    GLIBC21="$ac_cv_gnu_library_2_1"
++  ]
++)
+diff --git a/m4/iconv.m4 b/m4/iconv.m4
+new file mode 100644
+index 0000000..e2041b9
+--- /dev/null
++++ b/m4/iconv.m4
+@@ -0,0 +1,214 @@
++# iconv.m4 serial 11 (gettext-0.18.1)
++dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
++[
++  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++
++  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++  dnl accordingly.
++  AC_LIB_LINKFLAGS_BODY([iconv])
++])
++
++AC_DEFUN([AM_ICONV_LINK],
++[
++  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
++  dnl those with the standalone portable GNU libiconv installed).
++  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
++
++  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++  dnl accordingly.
++  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++
++  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.
++  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);],
++      [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);],
++        [am_cv_lib_iconv=yes]
++        [am_cv_func_iconv=yes])
++      LIBS="$am_save_LIBS"
++    fi
++  ])
++  if test "$am_cv_func_iconv" = yes; then
++    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
++      dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
++      am_save_LIBS="$LIBS"
++      if test $am_cv_lib_iconv = yes; then
++        LIBS="$LIBS $LIBICONV"
++      fi
++      AC_TRY_RUN([
++#include <iconv.h>
++#include <string.h>
++int main ()
++{
++  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
++     returns.  */
++  {
++    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
++    if (cd_utf8_to_88591 != (iconv_t)(-1))
++      {
++        static const char input[] = "\342\202\254"; /* EURO SIGN */
++        char buf[10];
++        const char *inptr = input;
++        size_t inbytesleft = strlen (input);
++        char *outptr = buf;
++        size_t outbytesleft = sizeof (buf);
++        size_t res = iconv (cd_utf8_to_88591,
++                            (char **) &inptr, &inbytesleft,
++                            &outptr, &outbytesleft);
++        if (res == 0)
++          return 1;
++      }
++  }
++  /* Test against Solaris 10 bug: Failures are not distinguishable from
++     successful returns.  */
++  {
++    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
++    if (cd_ascii_to_88591 != (iconv_t)(-1))
++      {
++        static const char input[] = "\263";
++        char buf[10];
++        const char *inptr = input;
++        size_t inbytesleft = strlen (input);
++        char *outptr = buf;
++        size_t outbytesleft = sizeof (buf);
++        size_t res = iconv (cd_ascii_to_88591,
++                            (char **) &inptr, &inbytesleft,
++                            &outptr, &outbytesleft);
++        if (res == 0)
++          return 1;
++      }
++  }
++#if 0 /* This bug could be worked around by the caller.  */
++  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
++  {
++    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
++    if (cd_88591_to_utf8 != (iconv_t)(-1))
++      {
++        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
++        char buf[50];
++        const char *inptr = input;
++        size_t inbytesleft = strlen (input);
++        char *outptr = buf;
++        size_t outbytesleft = sizeof (buf);
++        size_t res = iconv (cd_88591_to_utf8,
++                            (char **) &inptr, &inbytesleft,
++                            &outptr, &outbytesleft);
++        if ((int)res > 0)
++          return 1;
++      }
++  }
++#endif
++  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
++     provided.  */
++  if (/* Try standardized names.  */
++      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
++      /* Try IRIX, OSF/1 names.  */
++      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
++      /* Try AIX names.  */
++      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
++      /* Try HP-UX names.  */
++      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
++    return 1;
++  return 0;
++}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
++        [case "$host_os" in
++           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
++           *)            am_cv_func_iconv_works="guessing yes" ;;
++         esac])
++      LIBS="$am_save_LIBS"
++    ])
++    case "$am_cv_func_iconv_works" in
++      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
++      *)   am_func_iconv=yes ;;
++    esac
++  else
++    am_func_iconv=no am_cv_lib_iconv=no
++  fi
++  if test "$am_func_iconv" = yes; then
++    AC_DEFINE([HAVE_ICONV], [1],
++      [Define if you have the iconv() function and it works.])
++  fi
++  if test "$am_cv_lib_iconv" = yes; then
++    AC_MSG_CHECKING([how to link with libiconv])
++    AC_MSG_RESULT([$LIBICONV])
++  else
++    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
++    dnl either.
++    CPPFLAGS="$am_save_CPPFLAGS"
++    LIBICONV=
++    LTLIBICONV=
++  fi
++  AC_SUBST([LIBICONV])
++  AC_SUBST([LTLIBICONV])
++])
++
++dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
++dnl avoid warnings like
++dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
++dnl This is tricky because of the way 'aclocal' is implemented:
++dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
++dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
++dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
++dnl   Otherwise aclocal would emit many "Use of uninitialized value $1"
++dnl   warnings.
++m4_define([gl_iconv_AC_DEFUN],
++  m4_version_prereq([2.64],
++    [[AC_DEFUN_ONCE(
++        [$1], [$2])]],
++    [[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([
++#include <stdlib.h>
++#include <iconv.h>
++extern
++#ifdef __cplusplus
++"C"
++#endif
++#if defined(__STDC__) || defined(__cplusplus)
++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
++#else
++size_t iconv();
++#endif
++], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
++      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
++    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
++    AC_MSG_RESULT([
++         $am_cv_proto_iconv])
++    AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
++      [Define as const if the declaration of iconv() needs const.])
++  fi
++])
+diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
+new file mode 100644
+index 0000000..289c4df
+--- /dev/null
++++ b/m4/intdiv0.m4
+@@ -0,0 +1,84 @@
++# intdiv0.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gt_INTDIV0],
++[
++  AC_REQUIRE([AC_PROG_CC])dnl
++  AC_REQUIRE([AC_CANONICAL_HOST])dnl
++
++  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
++    gt_cv_int_divbyzero_sigfpe,
++    [
++      gt_cv_int_divbyzero_sigfpe=
++changequote(,)dnl
++      case "$host_os" in
++        macos* | darwin[6-9]* | darwin[1-9][0-9]*)
++          # On MacOS X 10.2 or newer, just assume the same as when cross-
++          # compiling. If we were to perform the real test, 1 Crash Report
++          # dialog window would pop up.
++          case "$host_cpu" in
++            i[34567]86 | x86_64)
++              gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
++          esac
++          ;;
++      esac
++changequote([,])dnl
++      if test -z "$gt_cv_int_divbyzero_sigfpe"; then
++        AC_TRY_RUN([
++#include <stdlib.h>
++#include <signal.h>
++
++static void
++sigfpe_handler (int sig)
++{
++  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
++  exit (sig != SIGFPE);
++}
++
++int x = 1;
++int y = 0;
++int z;
++int nan;
++
++int main ()
++{
++  signal (SIGFPE, sigfpe_handler);
++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
++  signal (SIGTRAP, sigfpe_handler);
++#endif
++/* Linux/SPARC yields signal SIGILL.  */
++#if defined (__sparc__) && defined (__linux__)
++  signal (SIGILL, sigfpe_handler);
++#endif
++
++  z = x / y;
++  nan = y / y;
++  exit (1);
++}
++], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
++          [
++            # Guess based on the CPU.
++changequote(,)dnl
++            case "$host_cpu" in
++              alpha* | i[34567]86 | x86_64 | m68k | s390*)
++                gt_cv_int_divbyzero_sigfpe="guessing yes";;
++              *)
++                gt_cv_int_divbyzero_sigfpe="guessing no";;
++            esac
++changequote([,])dnl
++          ])
++      fi
++    ])
++  case "$gt_cv_int_divbyzero_sigfpe" in
++    *yes) value=1;;
++    *) value=0;;
++  esac
++  AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
++    [Define if integer division by zero raises signal SIGFPE.])
++])
+diff --git a/m4/intl.m4 b/m4/intl.m4
+new file mode 100644
+index 0000000..335b23c
+--- /dev/null
++++ b/m4/intl.m4
+@@ -0,0 +1,294 @@
++# intl.m4 serial 17 (gettext-0.18)
++dnl Copyright (C) 1995-2009 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 <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2009.
++
++AC_PREREQ([2.52])
++
++dnl Checks for all prerequisites of the intl subdirectory,
++dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
++dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
++AC_DEFUN([AM_INTL_SUBDIR],
++[
++  AC_REQUIRE([AC_PROG_INSTALL])dnl
++  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
++  AC_REQUIRE([AC_PROG_CC])dnl
++  AC_REQUIRE([AC_CANONICAL_HOST])dnl
++  AC_REQUIRE([gt_GLIBC2])dnl
++  AC_REQUIRE([AC_PROG_RANLIB])dnl
++  AC_REQUIRE([gl_VISIBILITY])dnl
++  AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
++  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
++  AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
++  AC_REQUIRE([gt_TYPE_WINT_T])dnl
++  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
++  AC_REQUIRE([gt_TYPE_INTMAX_T])
++  AC_REQUIRE([gt_PRINTF_POSIX])
++  AC_REQUIRE([gl_GLIBC21])dnl
++  AC_REQUIRE([gl_XSIZE])dnl
++  AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
++  AC_REQUIRE([gt_INTL_MACOSX])dnl
++
++  dnl Support for automake's --enable-silent-rules.
++  case "$enable_silent_rules" in
++    yes) INTL_DEFAULT_VERBOSITY=0;;
++    no)  INTL_DEFAULT_VERBOSITY=1;;
++    *)   INTL_DEFAULT_VERBOSITY=1;;
++  esac
++  AC_SUBST([INTL_DEFAULT_VERBOSITY])
++
++  AC_CHECK_TYPE([ptrdiff_t], ,
++    [AC_DEFINE([ptrdiff_t], [long],
++       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
++    ])
++  AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
++  AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
++    snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
++
++  dnl Use the _snprintf function only if it is declared (because on NetBSD it
++  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
++  gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
++  gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
++
++  dnl Use the *_unlocked functions only if they are declared.
++  dnl (because some of them were defined without being declared in Solaris
++  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
++  dnl on Solaris 2.5.1 to run on Solaris 2.6).
++  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
++  gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
++
++  case $gt_cv_func_printf_posix in
++    *yes) HAVE_POSIX_PRINTF=1 ;;
++    *) HAVE_POSIX_PRINTF=0 ;;
++  esac
++  AC_SUBST([HAVE_POSIX_PRINTF])
++  if test "$ac_cv_func_asprintf" = yes; then
++    HAVE_ASPRINTF=1
++  else
++    HAVE_ASPRINTF=0
++  fi
++  AC_SUBST([HAVE_ASPRINTF])
++  if test "$ac_cv_func_snprintf" = yes; then
++    HAVE_SNPRINTF=1
++  else
++    HAVE_SNPRINTF=0
++  fi
++  AC_SUBST([HAVE_SNPRINTF])
++  if test "$ac_cv_func_newlocale" = yes; then
++    HAVE_NEWLOCALE=1
++  else
++    HAVE_NEWLOCALE=0
++  fi
++  AC_SUBST([HAVE_NEWLOCALE])
++  if test "$ac_cv_func_wprintf" = yes; then
++    HAVE_WPRINTF=1
++  else
++    HAVE_WPRINTF=0
++  fi
++  AC_SUBST([HAVE_WPRINTF])
++
++  AM_LANGINFO_CODESET
++  gt_LC_MESSAGES
++
++  dnl Compilation on mingw and Cygwin needs special Makefile rules, because
++  dnl 1. when we install a shared library, we must arrange to export
++  dnl    auxiliary pointer variables for every exported variable,
++  dnl 2. when we install a shared library and a static library simultaneously,
++  dnl    the include file specifies __declspec(dllimport) and therefore we
++  dnl    must arrange to define the auxiliary pointer variables for the
++  dnl    exported variables _also_ in the static library.
++  if test "$enable_shared" = yes; then
++    case "$host_os" in
++      mingw* | cygwin*) is_woe32dll=yes ;;
++      *) is_woe32dll=no ;;
++    esac
++  else
++    is_woe32dll=no
++  fi
++  WOE32DLL=$is_woe32dll
++  AC_SUBST([WOE32DLL])
++
++  dnl On mingw and Cygwin, we can activate special Makefile rules which add
++  dnl version information to the shared libraries and executables.
++  case "$host_os" in
++    mingw* | cygwin*) is_woe32=yes ;;
++    *) is_woe32=no ;;
++  esac
++  WOE32=$is_woe32
++  AC_SUBST([WOE32])
++  if test $WOE32 = yes; then
++    dnl Check for a program that compiles Windows resource files.
++    AC_CHECK_TOOL([WINDRES], [windres])
++  fi
++
++  dnl Determine whether when creating a library, "-lc" should be passed to
++  dnl libtool or not. On many platforms, it is required for the libtool option
++  dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
++  dnl in the *.la files - makes it impossible to create multithreaded programs,
++  dnl because libtool also reorders the -lc to come before the -pthread, and
++  dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
++  case "$host_os" in
++    hpux*) LTLIBC="" ;;
++    *)     LTLIBC="-lc" ;;
++  esac
++  AC_SUBST([LTLIBC])
++
++  dnl Rename some macros and functions used for locking.
++  AH_BOTTOM([
++#define __libc_lock_t                   gl_lock_t
++#define __libc_lock_define              gl_lock_define
++#define __libc_lock_define_initialized  gl_lock_define_initialized
++#define __libc_lock_init                gl_lock_init
++#define __libc_lock_lock                gl_lock_lock
++#define __libc_lock_unlock              gl_lock_unlock
++#define __libc_lock_recursive_t                   gl_recursive_lock_t
++#define __libc_lock_define_recursive              gl_recursive_lock_define
++#define __libc_lock_define_initialized_recursive  gl_recursive_lock_define_initialized
++#define __libc_lock_init_recursive                gl_recursive_lock_init
++#define __libc_lock_lock_recursive                gl_recursive_lock_lock
++#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
++#define glthread_in_use  libintl_thread_in_use
++#define glthread_lock_init_func     libintl_lock_init_func
++#define glthread_lock_lock_func     libintl_lock_lock_func
++#define glthread_lock_unlock_func   libintl_lock_unlock_func
++#define glthread_lock_destroy_func  libintl_lock_destroy_func
++#define glthread_rwlock_init_multithreaded     libintl_rwlock_init_multithreaded
++#define glthread_rwlock_init_func              libintl_rwlock_init_func
++#define glthread_rwlock_rdlock_multithreaded   libintl_rwlock_rdlock_multithreaded
++#define glthread_rwlock_rdlock_func            libintl_rwlock_rdlock_func
++#define glthread_rwlock_wrlock_multithreaded   libintl_rwlock_wrlock_multithreaded
++#define glthread_rwlock_wrlock_func            libintl_rwlock_wrlock_func
++#define glthread_rwlock_unlock_multithreaded   libintl_rwlock_unlock_multithreaded
++#define glthread_rwlock_unlock_func            libintl_rwlock_unlock_func
++#define glthread_rwlock_destroy_multithreaded  libintl_rwlock_destroy_multithreaded
++#define glthread_rwlock_destroy_func           libintl_rwlock_destroy_func
++#define glthread_recursive_lock_init_multithreaded     libintl_recursive_lock_init_multithreaded
++#define glthread_recursive_lock_init_func              libintl_recursive_lock_init_func
++#define glthread_recursive_lock_lock_multithreaded     libintl_recursive_lock_lock_multithreaded
++#define glthread_recursive_lock_lock_func              libintl_recursive_lock_lock_func
++#define glthread_recursive_lock_unlock_multithreaded   libintl_recursive_lock_unlock_multithreaded
++#define glthread_recursive_lock_unlock_func            libintl_recursive_lock_unlock_func
++#define glthread_recursive_lock_destroy_multithreaded  libintl_recursive_lock_destroy_multithreaded
++#define glthread_recursive_lock_destroy_func           libintl_recursive_lock_destroy_func
++#define glthread_once_func            libintl_once_func
++#define glthread_once_singlethreaded  libintl_once_singlethreaded
++#define glthread_once_multithreaded   libintl_once_multithreaded
++])
++])
++
++
++dnl Checks for the core files of the intl subdirectory:
++dnl   dcigettext.c
++dnl   eval-plural.h
++dnl   explodename.c
++dnl   finddomain.c
++dnl   gettextP.h
++dnl   gmo.h
++dnl   hash-string.h hash-string.c
++dnl   l10nflist.c
++dnl   libgnuintl.h.in (except the *printf stuff)
++dnl   loadinfo.h
++dnl   loadmsgcat.c
++dnl   localealias.c
++dnl   log.c
++dnl   plural-exp.h plural-exp.c
++dnl   plural.y
++dnl Used by libglocale.
++AC_DEFUN([gt_INTL_SUBDIR_CORE],
++[
++  AC_REQUIRE([AC_C_INLINE])dnl
++  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
++  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
++  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
++  AC_REQUIRE([AC_FUNC_MMAP])dnl
++  AC_REQUIRE([gt_INTDIV0])dnl
++  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
++  AC_REQUIRE([gt_INTTYPES_PRI])dnl
++  AC_REQUIRE([gl_LOCK])dnl
++
++  AC_TRY_LINK(
++    [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
++    [],
++    [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
++       [Define to 1 if the compiler understands __builtin_expect.])])
++
++  AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
++  AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
++    stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
++    argz_stringify argz_next __fsetlocking])
++
++  dnl Use the *_unlocked functions only if they are declared.
++  dnl (because some of them were defined without being declared in Solaris
++  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
++  dnl on Solaris 2.5.1 to run on Solaris 2.6).
++  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
++  gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
++  gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
++
++  AM_ICONV
++
++  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
++  dnl because plural.y uses bison specific features. It requires at least
++  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
++  dnl compile.
++  dnl bison is only needed for the maintainer (who touches plural.y). But in
++  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
++  dnl the rule in general Makefile. Now, some people carelessly touch the
++  dnl files or have a broken "make" program, hence the plural.c rule will
++  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
++  dnl present or too old.
++  AC_CHECK_PROGS([INTLBISON], [bison])
++  if test -z "$INTLBISON"; then
++    ac_verc_fail=yes
++  else
++    dnl Found it, now check the version.
++    AC_MSG_CHECKING([version of bison])
++changequote(<<,>>)dnl
++    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++    case $ac_prog_version in
++      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
++changequote([,])dnl
++         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++    esac
++    AC_MSG_RESULT([$ac_prog_version])
++  fi
++  if test $ac_verc_fail = yes; then
++    INTLBISON=:
++  fi
++])
++
++
++dnl gt_CHECK_DECL(FUNC, INCLUDES)
++dnl Check whether a function is declared.
++AC_DEFUN([gt_CHECK_DECL],
++[
++  AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
++    [AC_TRY_COMPILE([$2], [
++#ifndef $1
++  char *p = (char *) $1;
++#endif
++], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
++  if test $ac_cv_have_decl_$1 = yes; then
++    gt_value=1
++  else
++    gt_value=0
++  fi
++  AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
++    [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
++])
+diff --git a/m4/intldir.m4 b/m4/intldir.m4
+new file mode 100644
+index 0000000..ebae76d
+--- /dev/null
++++ b/m4/intldir.m4
+@@ -0,0 +1,19 @@
++# intldir.m4 serial 2 (gettext-0.18)
++dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++AC_PREREQ([2.52])
++
++dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
++AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
+diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
+new file mode 100644
+index 0000000..dd91025
+--- /dev/null
++++ b/m4/intlmacosx.m4
+@@ -0,0 +1,51 @@
++# intlmacosx.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Checks for special options needed on MacOS X.
++dnl Defines INTL_MACOSX_LIBS.
++AC_DEFUN([gt_INTL_MACOSX],
++[
++  dnl Check for API introduced in MacOS X 10.2.
++  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
++    [gt_cv_func_CFPreferencesCopyAppValue],
++    [gt_save_LIBS="$LIBS"
++     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
++     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
++       [CFPreferencesCopyAppValue(NULL, NULL)],
++       [gt_cv_func_CFPreferencesCopyAppValue=yes],
++       [gt_cv_func_CFPreferencesCopyAppValue=no])
++     LIBS="$gt_save_LIBS"])
++  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
++    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
++      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
++  fi
++  dnl Check for API introduced in MacOS X 10.3.
++  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
++    [gt_save_LIBS="$LIBS"
++     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
++     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
++       [gt_cv_func_CFLocaleCopyCurrent=yes],
++       [gt_cv_func_CFLocaleCopyCurrent=no])
++     LIBS="$gt_save_LIBS"])
++  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
++    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
++      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
++  fi
++  INTL_MACOSX_LIBS=
++  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
++    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
++  fi
++  AC_SUBST([INTL_MACOSX_LIBS])
++])
+diff --git a/m4/intmax.m4 b/m4/intmax.m4
+new file mode 100644
+index 0000000..74aaaf5
+--- /dev/null
++++ b/m4/intmax.m4
+@@ -0,0 +1,33 @@
++# intmax.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether the system has the 'intmax_t' type, but don't attempt to
++dnl find a replacement if it is lacking.
++
++AC_DEFUN([gt_TYPE_INTMAX_T],
++[
++  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
++  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
++  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
++    [AC_TRY_COMPILE([
++#include <stddef.h>
++#include <stdlib.h>
++#if HAVE_STDINT_H_WITH_UINTMAX
++#include <stdint.h>
++#endif
++#if HAVE_INTTYPES_H_WITH_UINTMAX
++#include <inttypes.h>
++#endif
++],     [intmax_t x = -1;
++        return !x;],
++       [gt_cv_c_intmax_t=yes],
++       [gt_cv_c_intmax_t=no])])
++  if test $gt_cv_c_intmax_t = yes; then
++    AC_DEFINE([HAVE_INTMAX_T], [1],
++      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
++  fi
++])
+diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
+new file mode 100644
+index 0000000..718a4f4
+--- /dev/null
++++ b/m4/inttypes-pri.m4
+@@ -0,0 +1,36 @@
++# inttypes-pri.m4 serial 6 (gettext-0.18)
++dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_PREREQ([2.52])
++
++# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
++# macros to non-string values.  This is the case on AIX 4.3.3.
++
++AC_DEFUN([gt_INTTYPES_PRI],
++[
++  AC_CHECK_HEADERS([inttypes.h])
++  if test $ac_cv_header_inttypes_h = yes; then
++    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
++      [gt_cv_inttypes_pri_broken],
++      [
++        AC_TRY_COMPILE([#include <inttypes.h>
++#ifdef PRId32
++char *p = PRId32;
++#endif
++], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
++      ])
++  fi
++  if test "$gt_cv_inttypes_pri_broken" = yes; then
++    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
++      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
++    PRI_MACROS_BROKEN=1
++  else
++    PRI_MACROS_BROKEN=0
++  fi
++  AC_SUBST([PRI_MACROS_BROKEN])
++])
+diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
+new file mode 100644
+index 0000000..782d77e
+--- /dev/null
++++ b/m4/inttypes_h.m4
+@@ -0,0 +1,26 @@
++# inttypes_h.m4 serial 9
++dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
++[
++  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
++  [AC_TRY_COMPILE(
++    [#include <sys/types.h>
++#include <inttypes.h>],
++    [uintmax_t i = (uintmax_t) -1; return !i;],
++    [gl_cv_header_inttypes_h=yes],
++    [gl_cv_header_inttypes_h=no])])
++  if test $gl_cv_header_inttypes_h = yes; then
++    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
++      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
++       and declares uintmax_t. ])
++  fi
++])
+diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
+new file mode 100644
+index 0000000..1a70543
+--- /dev/null
++++ b/m4/lcmessage.m4
+@@ -0,0 +1,31 @@
++# lcmessage.m4 serial 6 (gettext-0.18)
++dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
++dnl Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995.
++
++# Check whether LC_MESSAGES is available in <locale.h>.
++
++AC_DEFUN([gt_LC_MESSAGES],
++[
++  AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
++    [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
++       [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
++  if test $gt_cv_val_LC_MESSAGES = yes; then
++    AC_DEFINE([HAVE_LC_MESSAGES], [1],
++      [Define if your <locale.h> file defines LC_MESSAGES.])
++  fi
++])
+diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
+new file mode 100644
+index 0000000..ebb3052
+--- /dev/null
++++ b/m4/lib-ld.m4
+@@ -0,0 +1,110 @@
++# lib-ld.m4 serial 4 (gettext-0.18)
++dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl Subroutines of libtool.m4,
++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
++dnl with libtool.m4.
++
++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
++AC_DEFUN([AC_LIB_PROG_LD_GNU],
++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
++case `$LD -v 2>&1 </dev/null` in
++*GNU* | *'with BFD'*)
++  acl_cv_prog_gnu_ld=yes ;;
++*)
++  acl_cv_prog_gnu_ld=no ;;
++esac])
++with_gnu_ld=$acl_cv_prog_gnu_ld
++])
++
++dnl From libtool-1.4. Sets the variable LD.
++AC_DEFUN([AC_LIB_PROG_LD],
++[AC_ARG_WITH([gnu-ld],
++[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
++test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_CANONICAL_HOST])dnl
++# 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
++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 GCC])
++  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.
++    [[\\/]* | [A-Za-z]:[\\/]*)]
++      [re_direlt='/[^/][^/]*/\.\./']
++      # Canonicalize the path of ld
++      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
++      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
++        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
++      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
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
++  for ac_dir in $PATH; do
++    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 GNU ld's 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="$ac_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
+new file mode 100644
+index 0000000..c73bd8e
+--- /dev/null
++++ b/m4/lib-link.m4
+@@ -0,0 +1,774 @@
++# lib-link.m4 serial 21 (gettext-0.18)
++dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_PREREQ([2.54])
++
++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
++dnl augments the CPPFLAGS variable.
++dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
++dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
++AC_DEFUN([AC_LIB_LINKFLAGS],
++[
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++  pushdef([Name],[translit([$1],[./-], [___])])
++  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
++    AC_LIB_LINKFLAGS_BODY([$1], [$2])
++    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
++    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
++    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
++    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
++  ])
++  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
++  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
++  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
++  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
++  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++  AC_SUBST([LIB]NAME)
++  AC_SUBST([LTLIB]NAME)
++  AC_SUBST([LIB]NAME[_PREFIX])
++  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
++  dnl results of this search when this library appears as a dependency.
++  HAVE_LIB[]NAME=yes
++  popdef([NAME])
++  popdef([Name])
++])
++
++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
++dnl searches for libname and the libraries corresponding to explicit and
++dnl implicit dependencies, together with the specified include files and
++dnl the ability to compile and link the specified testcode. 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],[translit([$1],[./-], [___])])
++  pushdef([NAME],[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_TRY_LINK([$3], [$4],
++      [ac_cv_lib[]Name=yes],
++      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
++    LIBS="$ac_save_LIBS"
++  ])
++  if test "$ac_cv_lib[]Name" = yes; then
++    HAVE_LIB[]NAME=yes
++    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the 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_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],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  define([acl_frompackage_]NAME, [$2])
++  popdef([NAME])
++  pushdef([PACK],[$2])
++  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
++                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  define([acl_libsinpackage_]PACKUP,
++    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
++  popdef([PACKUP])
++  popdef([PACK])
++])
++
++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
++dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
++dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
++AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
++[
++  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
++  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
++  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
++                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
++  dnl Autoconf >= 2.61 supports dots in --with options.
++  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
++  dnl By default, look in $includedir and $libdir.
++  use_additional=yes
++  AC_LIB_WITH_FINAL_PREFIX([
++    eval additional_includedir=\"$includedir\"
++    eval additional_libdir=\"$libdir\"
++  ])
++  AC_ARG_WITH(P_A_C_K[-prefix],
++[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
++  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
++[
++    if test "X$withval" = "Xno"; then
++      use_additional=no
++    else
++      if test "X$withval" = "X"; then
++        AC_LIB_WITH_FINAL_PREFIX([
++          eval additional_includedir=\"$includedir\"
++          eval additional_libdir=\"$libdir\"
++        ])
++      else
++        additional_includedir="$withval/include"
++        additional_libdir="$withval/$acl_libdirstem"
++        if test "$acl_libdirstem2" != "$acl_libdirstem" \
++           && ! test -d "$withval/$acl_libdirstem"; then
++          additional_libdir="$withval/$acl_libdirstem2"
++        fi
++      fi
++    fi
++])
++  dnl Search the library and its dependencies in $additional_libdir and
++  dnl $LDFLAGS. Using breadth-first-seach.
++  LIB[]NAME=
++  LTLIB[]NAME=
++  INC[]NAME=
++  LIB[]NAME[]_PREFIX=
++  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
++  dnl computed. So it has to be reset here.
++  HAVE_LIB[]NAME=
++  rpathdirs=
++  ltrpathdirs=
++  names_already_handled=
++  names_next_round='$1 $2'
++  while test -n "$names_next_round"; do
++    names_this_round="$names_next_round"
++    names_next_round=
++    for name in $names_this_round; do
++      already_handled=
++      for n in $names_already_handled; do
++        if test "$n" = "$name"; then
++          already_handled=yes
++          break
++        fi
++      done
++      if test -z "$already_handled"; then
++        names_already_handled="$names_already_handled $name"
++        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
++        dnl or AC_LIB_HAVE_LINKFLAGS call.
++        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++        eval value=\"\$HAVE_LIB$uppername\"
++        if test -n "$value"; then
++          if test "$value" = yes; then
++            eval value=\"\$LIB$uppername\"
++            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
++            eval value=\"\$LTLIB$uppername\"
++            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
++          else
++            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
++            dnl that this library doesn't exist. So just drop it.
++            :
++          fi
++        else
++          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
++          dnl and the already constructed $LIBNAME/$LTLIBNAME.
++          found_dir=
++          found_la=
++          found_so=
++          found_a=
++          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
++          if test -n "$acl_shlibext"; then
++            shrext=".$acl_shlibext"             # typically: shrext=.so
++          else
++            shrext=
++          fi
++          if test $use_additional = yes; then
++            dir="$additional_libdir"
++            dnl The same code as in the loop below:
++            dnl First look for a shared library.
++            if test -n "$acl_shlibext"; then
++              if test -f "$dir/$libname$shrext"; then
++                found_dir="$dir"
++                found_so="$dir/$libname$shrext"
++              else
++                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
++                  ver=`(cd "$dir" && \
++                        for f in "$libname$shrext".*; do echo "$f"; done \
++                        | sed -e "s,^$libname$shrext\\\\.,," \
++                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
++                        | sed 1q ) 2>/dev/null`
++                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
++                    found_dir="$dir"
++                    found_so="$dir/$libname$shrext.$ver"
++                  fi
++                else
++                  eval library_names=\"$acl_library_names_spec\"
++                  for f in $library_names; do
++                    if test -f "$dir/$f"; then
++                      found_dir="$dir"
++                      found_so="$dir/$f"
++                      break
++                    fi
++                  done
++                fi
++              fi
++            fi
++            dnl Then look for a static library.
++            if test "X$found_dir" = "X"; then
++              if test -f "$dir/$libname.$acl_libext"; then
++                found_dir="$dir"
++                found_a="$dir/$libname.$acl_libext"
++              fi
++            fi
++            if test "X$found_dir" != "X"; then
++              if test -f "$dir/$libname.la"; then
++                found_la="$dir/$libname.la"
++              fi
++            fi
++          fi
++          if test "X$found_dir" = "X"; then
++            for x in $LDFLAGS $LTLIB[]NAME; do
++              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++              case "$x" in
++                -L*)
++                  dir=`echo "X$x" | sed -e 's/^X-L//'`
++                  dnl First look for a shared library.
++                  if test -n "$acl_shlibext"; then
++                    if test -f "$dir/$libname$shrext"; then
++                      found_dir="$dir"
++                      found_so="$dir/$libname$shrext"
++                    else
++                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
++                        ver=`(cd "$dir" && \
++                              for f in "$libname$shrext".*; do echo "$f"; done \
++                              | sed -e "s,^$libname$shrext\\\\.,," \
++                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
++                              | sed 1q ) 2>/dev/null`
++                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
++                          found_dir="$dir"
++                          found_so="$dir/$libname$shrext.$ver"
++                        fi
++                      else
++                        eval library_names=\"$acl_library_names_spec\"
++                        for f in $library_names; do
++                          if test -f "$dir/$f"; then
++                            found_dir="$dir"
++                            found_so="$dir/$f"
++                            break
++                          fi
++                        done
++                      fi
++                    fi
++                  fi
++                  dnl Then look for a static library.
++                  if test "X$found_dir" = "X"; then
++                    if test -f "$dir/$libname.$acl_libext"; then
++                      found_dir="$dir"
++                      found_a="$dir/$libname.$acl_libext"
++                    fi
++                  fi
++                  if test "X$found_dir" != "X"; then
++                    if test -f "$dir/$libname.la"; then
++                      found_la="$dir/$libname.la"
++                    fi
++                  fi
++                  ;;
++              esac
++              if test "X$found_dir" != "X"; then
++                break
++              fi
++            done
++          fi
++          if test "X$found_dir" != "X"; then
++            dnl Found the library.
++            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
++            if test "X$found_so" != "X"; then
++              dnl Linking with a shared library. We attempt to hardcode its
++              dnl directory into the executable's runpath, unless it's the
++              dnl standard /usr/lib.
++              if test "$enable_rpath" = no \
++                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
++                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
++                dnl No hardcoding is needed.
++                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++              else
++                dnl Use an explicit option to hardcode DIR into the resulting
++                dnl binary.
++                dnl Potentially add DIR to ltrpathdirs.
++                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++                haveit=
++                for x in $ltrpathdirs; do
++                  if test "X$x" = "X$found_dir"; then
++                    haveit=yes
++                    break
++                  fi
++                done
++                if test -z "$haveit"; then
++                  ltrpathdirs="$ltrpathdirs $found_dir"
++                fi
++                dnl The hardcoding into $LIBNAME is system dependent.
++                if test "$acl_hardcode_direct" = yes; then
++                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
++                  dnl resulting binary.
++                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++                else
++                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
++                    dnl Use an explicit option to hardcode DIR into the resulting
++                    dnl binary.
++                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++                    dnl Potentially add DIR to rpathdirs.
++                    dnl The rpathdirs will be appended to $LIBNAME at the end.
++                    haveit=
++                    for x in $rpathdirs; do
++                      if test "X$x" = "X$found_dir"; then
++                        haveit=yes
++                        break
++                      fi
++                    done
++                    if test -z "$haveit"; then
++                      rpathdirs="$rpathdirs $found_dir"
++                    fi
++                  else
++                    dnl Rely on "-L$found_dir".
++                    dnl But don't add it if it's already contained in the LDFLAGS
++                    dnl or the already constructed $LIBNAME
++                    haveit=
++                    for x in $LDFLAGS $LIB[]NAME; do
++                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                      if test "X$x" = "X-L$found_dir"; then
++                        haveit=yes
++                        break
++                      fi
++                    done
++                    if test -z "$haveit"; then
++                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
++                    fi
++                    if test "$acl_hardcode_minus_L" != no; then
++                      dnl FIXME: Not sure whether we should use
++                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++                      dnl here.
++                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++                    else
++                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
++                      dnl here, because this doesn't fit in flags passed to the
++                      dnl compiler. So give up. No hardcoding. This affects only
++                      dnl very old systems.
++                      dnl FIXME: Not sure whether we should use
++                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++                      dnl here.
++                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++                    fi
++                  fi
++                fi
++              fi
++            else
++              if test "X$found_a" != "X"; then
++                dnl Linking with a static library.
++                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
++              else
++                dnl We shouldn't come here, but anyway it's good to have a
++                dnl fallback.
++                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
++              fi
++            fi
++            dnl Assume the include files are nearby.
++            additional_includedir=
++            case "$found_dir" in
++              */$acl_libdirstem | */$acl_libdirstem/)
++                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
++                if test "$name" = '$1'; then
++                  LIB[]NAME[]_PREFIX="$basedir"
++                fi
++                additional_includedir="$basedir/include"
++                ;;
++              */$acl_libdirstem2 | */$acl_libdirstem2/)
++                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
++                if test "$name" = '$1'; then
++                  LIB[]NAME[]_PREFIX="$basedir"
++                fi
++                additional_includedir="$basedir/include"
++                ;;
++            esac
++            if test "X$additional_includedir" != "X"; then
++              dnl Potentially add $additional_includedir to $INCNAME.
++              dnl But don't add it
++              dnl   1. if it's the standard /usr/include,
++              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
++              dnl   3. if it's already present in $CPPFLAGS or the already
++              dnl      constructed $INCNAME,
++              dnl   4. if it doesn't exist as a directory.
++              if test "X$additional_includedir" != "X/usr/include"; then
++                haveit=
++                if test "X$additional_includedir" = "X/usr/local/include"; then
++                  if test -n "$GCC"; then
++                    case $host_os in
++                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
++                    esac
++                  fi
++                fi
++                if test -z "$haveit"; then
++                  for x in $CPPFLAGS $INC[]NAME; do
++                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                    if test "X$x" = "X-I$additional_includedir"; then
++                      haveit=yes
++                      break
++                    fi
++                  done
++                  if test -z "$haveit"; then
++                    if test -d "$additional_includedir"; then
++                      dnl Really add $additional_includedir to $INCNAME.
++                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
++                    fi
++                  fi
++                fi
++              fi
++            fi
++            dnl Look for dependencies.
++            if test -n "$found_la"; then
++              dnl Read the .la file. It defines the variables
++              dnl dlname, library_names, old_library, dependency_libs, current,
++              dnl age, revision, installed, dlopen, dlpreopen, libdir.
++              save_libdir="$libdir"
++              case "$found_la" in
++                */* | *\\*) . "$found_la" ;;
++                *) . "./$found_la" ;;
++              esac
++              libdir="$save_libdir"
++              dnl We use only dependency_libs.
++              for dep in $dependency_libs; do
++                case "$dep" in
++                  -L*)
++                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
++                    dnl But don't add it
++                    dnl   1. if it's the standard /usr/lib,
++                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
++                    dnl   3. if it's already present in $LDFLAGS or the already
++                    dnl      constructed $LIBNAME,
++                    dnl   4. if it doesn't exist as a directory.
++                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
++                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
++                      haveit=
++                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
++                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
++                        if test -n "$GCC"; then
++                          case $host_os in
++                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
++                          esac
++                        fi
++                      fi
++                      if test -z "$haveit"; then
++                        haveit=
++                        for x in $LDFLAGS $LIB[]NAME; do
++                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                          if test "X$x" = "X-L$additional_libdir"; then
++                            haveit=yes
++                            break
++                          fi
++                        done
++                        if test -z "$haveit"; then
++                          if test -d "$additional_libdir"; then
++                            dnl Really add $additional_libdir to $LIBNAME.
++                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
++                          fi
++                        fi
++                        haveit=
++                        for x in $LDFLAGS $LTLIB[]NAME; do
++                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                          if test "X$x" = "X-L$additional_libdir"; then
++                            haveit=yes
++                            break
++                          fi
++                        done
++                        if test -z "$haveit"; then
++                          if test -d "$additional_libdir"; then
++                            dnl Really add $additional_libdir to $LTLIBNAME.
++                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
++                          fi
++                        fi
++                      fi
++                    fi
++                    ;;
++                  -R*)
++                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
++                    if test "$enable_rpath" != no; then
++                      dnl Potentially add DIR to rpathdirs.
++                      dnl The rpathdirs will be appended to $LIBNAME at the end.
++                      haveit=
++                      for x in $rpathdirs; do
++                        if test "X$x" = "X$dir"; then
++                          haveit=yes
++                          break
++                        fi
++                      done
++                      if test -z "$haveit"; then
++                        rpathdirs="$rpathdirs $dir"
++                      fi
++                      dnl Potentially add DIR to ltrpathdirs.
++                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++                      haveit=
++                      for x in $ltrpathdirs; do
++                        if test "X$x" = "X$dir"; then
++                          haveit=yes
++                          break
++                        fi
++                      done
++                      if test -z "$haveit"; then
++                        ltrpathdirs="$ltrpathdirs $dir"
++                      fi
++                    fi
++                    ;;
++                  -l*)
++                    dnl Handle this in the next round.
++                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++                    ;;
++                  *.la)
++                    dnl Handle this in the next round. Throw away the .la's
++                    dnl directory; it is already contained in a preceding -L
++                    dnl option.
++                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++                    ;;
++                  *)
++                    dnl Most likely an immediate library name.
++                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
++                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
++                    ;;
++                esac
++              done
++            fi
++          else
++            dnl Didn't find the library; assume it is in the system directories
++            dnl known to the linker and runtime loader. (All the system
++            dnl directories known to the linker should also be known to the
++            dnl runtime loader, otherwise the system is severely misconfigured.)
++            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
++          fi
++        fi
++      fi
++    done
++  done
++  if test "X$rpathdirs" != "X"; then
++    if test -n "$acl_hardcode_libdir_separator"; then
++      dnl Weird platform: only the last -rpath option counts, the user must
++      dnl pass all path elements in one option. We can arrange that for a
++      dnl single library, but not when more than one $LIBNAMEs are used.
++      alldirs=
++      for found_dir in $rpathdirs; do
++        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
++      done
++      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
++      acl_save_libdir="$libdir"
++      libdir="$alldirs"
++      eval flag=\"$acl_hardcode_libdir_flag_spec\"
++      libdir="$acl_save_libdir"
++      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++    else
++      dnl The -rpath options are cumulative.
++      for found_dir in $rpathdirs; do
++        acl_save_libdir="$libdir"
++        libdir="$found_dir"
++        eval flag=\"$acl_hardcode_libdir_flag_spec\"
++        libdir="$acl_save_libdir"
++        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++      done
++    fi
++  fi
++  if test "X$ltrpathdirs" != "X"; then
++    dnl When using libtool, the option that works for both libraries and
++    dnl executables is -R. The -R options are cumulative.
++    for found_dir in $ltrpathdirs; do
++      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
++    done
++  fi
++  popdef([P_A_C_K])
++  popdef([PACKLIBS])
++  popdef([PACKUP])
++  popdef([PACK])
++  popdef([NAME])
++])
++
++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
++dnl unless already present in VAR.
++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
++dnl contains two or three consecutive elements that belong together.
++AC_DEFUN([AC_LIB_APPENDTOVAR],
++[
++  for element in [$2]; do
++    haveit=
++    for x in $[$1]; do
++      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++      if test "X$x" = "X$element"; then
++        haveit=yes
++        break
++      fi
++    done
++    if test -z "$haveit"; then
++      [$1]="${[$1]}${[$1]:+ }$element"
++    fi
++  done
++])
++
++dnl For those cases where a variable contains several -L and -l options
++dnl referring to unknown libraries and directories, this macro determines the
++dnl necessary additional linker options for the runtime path.
++dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
++dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
++dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
++dnl otherwise linking without libtool is assumed.
++AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
++[
++  AC_REQUIRE([AC_LIB_RPATH])
++  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
++  $1=
++  if test "$enable_rpath" != no; then
++    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
++      dnl Use an explicit option to hardcode directories into the resulting
++      dnl binary.
++      rpathdirs=
++      next=
++      for opt in $2; do
++        if test -n "$next"; then
++          dir="$next"
++          dnl No need to hardcode the standard /usr/lib.
++          if test "X$dir" != "X/usr/$acl_libdirstem" \
++             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
++            rpathdirs="$rpathdirs $dir"
++          fi
++          next=
++        else
++          case $opt in
++            -L) next=yes ;;
++            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
++                 dnl No need to hardcode the standard /usr/lib.
++                 if test "X$dir" != "X/usr/$acl_libdirstem" \
++                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
++                   rpathdirs="$rpathdirs $dir"
++                 fi
++                 next= ;;
++            *) next= ;;
++          esac
++        fi
++      done
++      if test "X$rpathdirs" != "X"; then
++        if test -n ""$3""; then
++          dnl libtool is used for linking. Use -R options.
++          for dir in $rpathdirs; do
++            $1="${$1}${$1:+ }-R$dir"
++          done
++        else
++          dnl The linker is used for linking directly.
++          if test -n "$acl_hardcode_libdir_separator"; then
++            dnl Weird platform: only the last -rpath option counts, the user
++            dnl must pass all path elements in one option.
++            alldirs=
++            for dir in $rpathdirs; do
++              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
++            done
++            acl_save_libdir="$libdir"
++            libdir="$alldirs"
++            eval flag=\"$acl_hardcode_libdir_flag_spec\"
++            libdir="$acl_save_libdir"
++            $1="$flag"
++          else
++            dnl The -rpath options are cumulative.
++            for dir in $rpathdirs; do
++              acl_save_libdir="$libdir"
++              libdir="$dir"
++              eval flag=\"$acl_hardcode_libdir_flag_spec\"
++              libdir="$acl_save_libdir"
++              $1="${$1}${$1:+ }$flag"
++            done
++          fi
++        fi
++      fi
++    fi
++  fi
++  AC_SUBST([$1])
++])
+diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
+new file mode 100644
+index 0000000..1601cea
+--- /dev/null
++++ b/m4/lib-prefix.m4
+@@ -0,0 +1,224 @@
++# lib-prefix.m4 serial 7 (gettext-0.18)
++dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
++dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
++dnl require excessive bracketing.
++ifdef([AC_HELP_STRING],
++[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
++[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
++
++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
++dnl to access previously installed libraries. The basic assumption is that
++dnl a user will want packages to use other packages he previously installed
++dnl with the same --prefix option.
++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
++dnl libraries, but is otherwise very convenient.
++AC_DEFUN([AC_LIB_PREFIX],
++[
++  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
++  AC_REQUIRE([AC_PROG_CC])
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  dnl By default, look in $includedir and $libdir.
++  use_additional=yes
++  AC_LIB_WITH_FINAL_PREFIX([
++    eval additional_includedir=\"$includedir\"
++    eval additional_libdir=\"$libdir\"
++  ])
++  AC_LIB_ARG_WITH([lib-prefix],
++[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
++  --without-lib-prefix    don't search for libraries in includedir and libdir],
++[
++    if test "X$withval" = "Xno"; then
++      use_additional=no
++    else
++      if test "X$withval" = "X"; then
++        AC_LIB_WITH_FINAL_PREFIX([
++          eval additional_includedir=\"$includedir\"
++          eval additional_libdir=\"$libdir\"
++        ])
++      else
++        additional_includedir="$withval/include"
++        additional_libdir="$withval/$acl_libdirstem"
++      fi
++    fi
++])
++  if test $use_additional = yes; then
++    dnl Potentially add $additional_includedir to $CPPFLAGS.
++    dnl But don't add it
++    dnl   1. if it's the standard /usr/include,
++    dnl   2. if it's already present in $CPPFLAGS,
++    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
++    dnl   4. if it doesn't exist as a directory.
++    if test "X$additional_includedir" != "X/usr/include"; then
++      haveit=
++      for x in $CPPFLAGS; do
++        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++        if test "X$x" = "X-I$additional_includedir"; then
++          haveit=yes
++          break
++        fi
++      done
++      if test -z "$haveit"; then
++        if test "X$additional_includedir" = "X/usr/local/include"; then
++          if test -n "$GCC"; then
++            case $host_os in
++              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
++            esac
++          fi
++        fi
++        if test -z "$haveit"; then
++          if test -d "$additional_includedir"; then
++            dnl Really add $additional_includedir to $CPPFLAGS.
++            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
++          fi
++        fi
++      fi
++    fi
++    dnl Potentially add $additional_libdir to $LDFLAGS.
++    dnl But don't add it
++    dnl   1. if it's the standard /usr/lib,
++    dnl   2. if it's already present in $LDFLAGS,
++    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
++    dnl   4. if it doesn't exist as a directory.
++    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
++      haveit=
++      for x in $LDFLAGS; do
++        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++        if test "X$x" = "X-L$additional_libdir"; then
++          haveit=yes
++          break
++        fi
++      done
++      if test -z "$haveit"; then
++        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
++          if test -n "$GCC"; then
++            case $host_os in
++              linux*) haveit=yes;;
++            esac
++          fi
++        fi
++        if test -z "$haveit"; then
++          if test -d "$additional_libdir"; then
++            dnl Really add $additional_libdir to $LDFLAGS.
++            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
++          fi
++        fi
++      fi
++    fi
++  fi
++])
++
++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
++dnl acl_final_exec_prefix, containing the values to which $prefix and
++dnl $exec_prefix will expand at the end of the configure script.
++AC_DEFUN([AC_LIB_PREPARE_PREFIX],
++[
++  dnl Unfortunately, prefix and exec_prefix get only finally determined
++  dnl at the end of configure.
++  if test "X$prefix" = "XNONE"; then
++    acl_final_prefix="$ac_default_prefix"
++  else
++    acl_final_prefix="$prefix"
++  fi
++  if test "X$exec_prefix" = "XNONE"; then
++    acl_final_exec_prefix='${prefix}'
++  else
++    acl_final_exec_prefix="$exec_prefix"
++  fi
++  acl_save_prefix="$prefix"
++  prefix="$acl_final_prefix"
++  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
++  prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
++dnl variables prefix and exec_prefix bound to the values they will have
++dnl at the end of the configure script.
++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
++[
++  acl_save_prefix="$prefix"
++  prefix="$acl_final_prefix"
++  acl_save_exec_prefix="$exec_prefix"
++  exec_prefix="$acl_final_exec_prefix"
++  $1
++  exec_prefix="$acl_save_exec_prefix"
++  prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_PREPARE_MULTILIB creates
++dnl - a variable acl_libdirstem, containing the basename of the libdir, either
++dnl   "lib" or "lib64" or "lib/64",
++dnl - a variable acl_libdirstem2, as a secondary possible value for
++dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
++dnl   "lib/amd64".
++AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
++[
++  dnl There is no formal standard regarding lib and lib64.
++  dnl On glibc systems, the current practice is that on a system supporting
++  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
++  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
++  dnl the compiler's default mode by looking at the compiler's library search
++  dnl path. If at least one of its elements ends in /lib64 or points to a
++  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
++  dnl Otherwise we use the default, namely "lib".
++  dnl On Solaris systems, the current practice is that on a system supporting
++  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
++  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
++  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  acl_libdirstem=lib
++  acl_libdirstem2=
++  case "$host_os" in
++    solaris*)
++      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
++      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
++      dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
++      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
++      dnl symlink is missing, so we set acl_libdirstem2 too.
++      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
++        [AC_EGREP_CPP([sixtyfour bits], [
++#ifdef _LP64
++sixtyfour bits
++#endif
++           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
++        ])
++      if test $gl_cv_solaris_64bit = yes; then
++        acl_libdirstem=lib/64
++        case "$host_cpu" in
++          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
++          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
++        esac
++      fi
++      ;;
++    *)
++      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
++      if test -n "$searchpath"; then
++        acl_save_IFS="${IFS= 	}"; IFS=":"
++        for searchdir in $searchpath; do
++          if test -d "$searchdir"; then
++            case "$searchdir" in
++              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
++              */../ | */.. )
++                # Better ignore directories of this form. They are misleading.
++                ;;
++              *) searchdir=`cd "$searchdir" && pwd`
++                 case "$searchdir" in
++                   */lib64 ) acl_libdirstem=lib64 ;;
++                 esac ;;
++            esac
++          fi
++        done
++        IFS="$acl_save_IFS"
++      fi
++      ;;
++  esac
++  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
++])
+diff --git a/m4/lock.m4 b/m4/lock.m4
+new file mode 100644
+index 0000000..9da8465
+--- /dev/null
++++ b/m4/lock.m4
+@@ -0,0 +1,37 @@
++# lock.m4 serial 10 (gettext-0.18)
++dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gl_LOCK],
++[
++  AC_REQUIRE([gl_THREADLIB])
++  if test "$gl_threads_api" = posix; then
++    # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
++    # pthread_rwlock_* functions.
++    AC_CHECK_TYPE([pthread_rwlock_t],
++      [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
++         [Define if the POSIX multithreading library has read/write locks.])],
++      [],
++      [#include <pthread.h>])
++    # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
++    AC_TRY_COMPILE([#include <pthread.h>],
++      [#if __FreeBSD__ == 4
++error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
++#else
++int x = (int)PTHREAD_MUTEX_RECURSIVE;
++return !x;
++#endif],
++      [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
++         [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
++  fi
++  gl_PREREQ_LOCK
++])
++
++# Prerequisites of lib/lock.c.
++AC_DEFUN([gl_PREREQ_LOCK], [
++  AC_REQUIRE([AC_C_INLINE])
++])
+diff --git a/m4/longlong.m4 b/m4/longlong.m4
+new file mode 100644
+index 0000000..cca3c1a
+--- /dev/null
++++ b/m4/longlong.m4
+@@ -0,0 +1,106 @@
++# longlong.m4 serial 14
++dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++# Define HAVE_LONG_LONG_INT if 'long long int' works.
++# This fixes a bug in Autoconf 2.61, but can be removed once we
++# assume 2.62 everywhere.
++
++# Note: If the type 'long long int' exists but is only 32 bits large
++# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
++# defined. In this case you can treat 'long long int' like 'long int'.
++
++AC_DEFUN([AC_TYPE_LONG_LONG_INT],
++[
++  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
++    [AC_LINK_IFELSE(
++       [_AC_TYPE_LONG_LONG_SNIPPET],
++       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
++        dnl If cross compiling, assume the bug isn't important, since
++        dnl nobody cross compiles for this platform as far as we know.
++        AC_RUN_IFELSE(
++          [AC_LANG_PROGRAM(
++             [[@%:@include <limits.h>
++               @%:@ifndef LLONG_MAX
++               @%:@ define HALF \
++                        (1LL << (sizeof (long long int) * CHAR_BIT - 2))
++               @%:@ define LLONG_MAX (HALF - 1 + HALF)
++               @%:@endif]],
++             [[long long int n = 1;
++               int i;
++               for (i = 0; ; i++)
++                 {
++                   long long int m = n << i;
++                   if (m >> i != n)
++                     return 1;
++                   if (LLONG_MAX / 2 < m)
++                     break;
++                 }
++               return 0;]])],
++          [ac_cv_type_long_long_int=yes],
++          [ac_cv_type_long_long_int=no],
++          [ac_cv_type_long_long_int=yes])],
++       [ac_cv_type_long_long_int=no])])
++  if test $ac_cv_type_long_long_int = yes; then
++    AC_DEFINE([HAVE_LONG_LONG_INT], [1],
++      [Define to 1 if the system has the type `long long int'.])
++  fi
++])
++
++# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
++# This fixes a bug in Autoconf 2.61, but can be removed once we
++# assume 2.62 everywhere.
++
++# Note: If the type 'unsigned long long int' exists but is only 32 bits
++# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
++# will not be defined. In this case you can treat 'unsigned long long int'
++# like 'unsigned long int'.
++
++AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
++[
++  AC_CACHE_CHECK([for unsigned long long int],
++    [ac_cv_type_unsigned_long_long_int],
++    [AC_LINK_IFELSE(
++       [_AC_TYPE_LONG_LONG_SNIPPET],
++       [ac_cv_type_unsigned_long_long_int=yes],
++       [ac_cv_type_unsigned_long_long_int=no])])
++  if test $ac_cv_type_unsigned_long_long_int = yes; then
++    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
++      [Define to 1 if the system has the type `unsigned long long int'.])
++  fi
++])
++
++# Expands to a C program that can be used to test for simultaneous support
++# of 'long long' and 'unsigned long long'. We don't want to say that
++# 'long long' is available if 'unsigned long long' is not, or vice versa,
++# because too many programs rely on the symmetry between signed and unsigned
++# integer types (excluding 'bool').
++AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
++[
++  AC_LANG_PROGRAM(
++    [[/* For now, do not test the preprocessor; as of 2007 there are too many
++         implementations with broken preprocessors.  Perhaps this can
++         be revisited in 2012.  In the meantime, code should not expect
++         #if to work with literals wider than 32 bits.  */
++      /* Test literals.  */
++      long long int ll = 9223372036854775807ll;
++      long long int nll = -9223372036854775807LL;
++      unsigned long long int ull = 18446744073709551615ULL;
++      /* Test constant expressions.   */
++      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
++                     ? 1 : -1)];
++      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
++                     ? 1 : -1)];
++      int i = 63;]],
++    [[/* Test availability of runtime routines for shift and division.  */
++      long long int llmax = 9223372036854775807ll;
++      unsigned long long int ullmax = 18446744073709551615ull;
++      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
++              | (llmax / ll) | (llmax % ll)
++              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
++              | (ullmax / ull) | (ullmax % ull));]])
++])
+diff --git a/m4/nls.m4 b/m4/nls.m4
+new file mode 100644
+index 0000000..003704c
+--- /dev/null
++++ b/m4/nls.m4
+@@ -0,0 +1,32 @@
++# nls.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
++dnl Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
++
++AC_PREREQ([2.50])
++
++AC_DEFUN([AM_NLS],
++[
++  AC_MSG_CHECKING([whether NLS is requested])
++  dnl Default is enabled NLS
++  AC_ARG_ENABLE([nls],
++    [  --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
+new file mode 100644
+index 0000000..47f36a4
+--- /dev/null
++++ b/m4/po.m4
+@@ -0,0 +1,449 @@
++# po.m4 serial 17 (gettext-0.18)
++dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
++
++AC_PREREQ([2.50])
++
++dnl Checks for all prerequisites of the po subdirectory.
++AC_DEFUN([AM_PO_SUBDIRS],
++[
++  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++  AC_REQUIRE([AC_PROG_INSTALL])dnl
++  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
++  AC_REQUIRE([AM_NLS])dnl
++
++  dnl Release version of the gettext macros. This is used to ensure that
++  dnl the gettext macros and po/Makefile.in.in are in sync.
++  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
++
++  dnl Perform the following tests also if --disable-nls has been given,
++  dnl because they are needed for "make dist" to work.
++
++  dnl Search for GNU msgfmt in the PATH.
++  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
++  dnl The second test excludes FreeBSD msgfmt.
++  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
++     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++    :)
++  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
++
++  dnl Test whether it is GNU msgfmt >= 0.15.
++changequote(,)dnl
++  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
++    *) MSGFMT_015=$MSGFMT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([MSGFMT_015])
++changequote(,)dnl
++  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
++    *) GMSGFMT_015=$GMSGFMT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([GMSGFMT_015])
++
++  dnl Search for GNU xgettext 0.12 or newer in the PATH.
++  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
++  dnl The second test excludes FreeBSD xgettext.
++  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
++     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++    :)
++  dnl Remove leftover from FreeBSD xgettext call.
++  rm -f messages.po
++
++  dnl Test whether it is GNU xgettext >= 0.15.
++changequote(,)dnl
++  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
++    *) XGETTEXT_015=$XGETTEXT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([XGETTEXT_015])
++
++  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
++  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
++    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
++
++  dnl Installation directories.
++  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
++  dnl have to define it here, so that it can be used in po/Makefile.
++  test -n "$localedir" || localedir='${datadir}/locale'
++  AC_SUBST([localedir])
++
++  dnl Support for AM_XGETTEXT_OPTION.
++  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
++  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
++
++  AC_CONFIG_COMMANDS([po-directories], [[
++    for ac_file in $CONFIG_FILES; do
++      # Support "outfile[:infile[:infile...]]"
++      case "$ac_file" in
++        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++      esac
++      # PO directories have a Makefile.in generated from Makefile.in.in.
++      case "$ac_file" in */Makefile.in)
++        # Adjust a relative srcdir.
++        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++        # In autoconf-2.13 it is called $ac_given_srcdir.
++        # In autoconf-2.50 it is called $srcdir.
++        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++        case "$ac_given_srcdir" in
++          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++          /*) top_srcdir="$ac_given_srcdir" ;;
++          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
++        esac
++        # Treat a directory as a PO directory if and only if it has a
++        # POTFILES.in file. This allows packages to have multiple PO
++        # directories under different names or in different locations.
++        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++          rm -f "$ac_dir/POTFILES"
++          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ 	]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++          POMAKEFILEDEPS="POTFILES.in"
++          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
++          # on $ac_dir but don't depend on user-specified configuration
++          # parameters.
++          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++            # The LINGUAS file contains the set of available languages.
++            if test -n "$OBSOLETE_ALL_LINGUAS"; then
++              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++            fi
++            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++            # Hide the ALL_LINGUAS assigment from automake < 1.5.
++            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
++          else
++            # The set of available languages was given in configure.in.
++            # Hide the ALL_LINGUAS assigment from automake < 1.5.
++            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
++          fi
++          # Compute POFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
++          # Compute UPDATEPOFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
++          # Compute DUMMYPOFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
++          # Compute GMOFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
++          case "$ac_given_srcdir" in
++            .) srcdirpre= ;;
++            *) srcdirpre='$(srcdir)/' ;;
++          esac
++          POFILES=
++          UPDATEPOFILES=
++          DUMMYPOFILES=
++          GMOFILES=
++          for lang in $ALL_LINGUAS; do
++            POFILES="$POFILES $srcdirpre$lang.po"
++            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++          done
++          # CATALOGS depends on both $ac_dir and the user's LINGUAS
++          # environment variable.
++          INST_LINGUAS=
++          if test -n "$ALL_LINGUAS"; then
++            for presentlang in $ALL_LINGUAS; do
++              useit=no
++              if test "%UNSET%" != "$LINGUAS"; then
++                desiredlanguages="$LINGUAS"
++              else
++                desiredlanguages="$ALL_LINGUAS"
++              fi
++              for desiredlang in $desiredlanguages; do
++                # Use the presentlang catalog if desiredlang is
++                #   a. equal to presentlang, or
++                #   b. a variant of presentlang (because in this case,
++                #      presentlang can be used as a fallback for messages
++                #      which are not translated in the desiredlang catalog).
++                case "$desiredlang" in
++                  "$presentlang"*) useit=yes;;
++                esac
++              done
++              if test $useit = yes; then
++                INST_LINGUAS="$INST_LINGUAS $presentlang"
++              fi
++            done
++          fi
++          CATALOGS=
++          if test -n "$INST_LINGUAS"; then
++            for lang in $INST_LINGUAS; do
++              CATALOGS="$CATALOGS $lang.gmo"
++            done
++          fi
++          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++            if test -f "$f"; then
++              case "$f" in
++                *.orig | *.bak | *~) ;;
++                *) cat "$f" >> "$ac_dir/Makefile" ;;
++              esac
++            fi
++          done
++        fi
++        ;;
++      esac
++    done]],
++   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
++    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
++    # from automake < 1.5.
++    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
++    # Capture the value of LINGUAS because we need it to compute CATALOGS.
++    LINGUAS="${LINGUAS-%UNSET%}"
++   ])
++])
++
++dnl Postprocesses a Makefile in a directory containing PO files.
++AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
++[
++  # When this code is run, in config.status, two variables have already been
++  # set:
++  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
++  # - LINGUAS is the value of the environment variable LINGUAS at configure
++  #   time.
++
++changequote(,)dnl
++  # Adjust a relative srcdir.
++  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++  # In autoconf-2.13 it is called $ac_given_srcdir.
++  # In autoconf-2.50 it is called $srcdir.
++  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++  case "$ac_given_srcdir" in
++    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++    /*) top_srcdir="$ac_given_srcdir" ;;
++    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
++  esac
++
++  # Find a way to echo strings without interpreting backslash.
++  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
++    gt_echo='echo'
++  else
++    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
++      gt_echo='printf %s\n'
++    else
++      echo_func () {
++        cat <<EOT
++$*
++EOT
++      }
++      gt_echo='echo_func'
++    fi
++  fi
++
++  # A sed script that extracts the value of VARIABLE from a Makefile.
++  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.
++/^[	 ]*VARIABLE[	 ]*=/{
++  # Seen the first line of the variable definition.
++  s/^[	 ]*VARIABLE[	 ]*=//
++  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/g'`
++  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 obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++  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/LINGUAS"`
++    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
++  else
++    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
++    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
++    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
++  fi
++  # Hide the ALL_LINGUAS assigment 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).properties)
++  # Compute CLASSFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
++  # 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).resources.dll)
++  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.properties"
++    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
++    QMFILES="$QMFILES $srcdirpre$lang.qm"
++    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
++    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
++    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
++  done
++  # CATALOGS depends on both $ac_dir and the user's LINGUAS
++  # 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/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
++      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
++      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
++    done
++  fi
++
++  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
++  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
++    # Add dependencies that cannot be formulated as a simple suffix rule.
++    for lang in $ALL_LINGUAS; do
++      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++      cat >> "$ac_file.tmp" <<EOF
++$frobbedlang.msg: $lang.po
++	@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
++	\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
++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/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
++      cat >> "$ac_file.tmp" <<EOF
++$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
++	@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
++	\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
++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/printf-posix.m4 b/m4/printf-posix.m4
+new file mode 100644
+index 0000000..1eacf95
+--- /dev/null
++++ b/m4/printf-posix.m4
+@@ -0,0 +1,45 @@
++# printf-posix.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether the printf() function supports POSIX/XSI format strings with
++dnl positions.
++
++AC_DEFUN([gt_PRINTF_POSIX],
++[
++  AC_REQUIRE([AC_PROG_CC])
++  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
++    gt_cv_func_printf_posix,
++    [
++      AC_TRY_RUN([
++#include <stdio.h>
++#include <string.h>
++/* The string "%2$d %1$d", with dollar characters protected from the shell's
++   dollar expansion (possibly an autoconf bug).  */
++static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
++static char buf[100];
++int main ()
++{
++  sprintf (buf, format, 33, 55);
++  return (strcmp (buf, "55 33") != 0);
++}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
++      [
++        AC_EGREP_CPP([notposix], [
++#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
++  notposix
++#endif
++          ],
++          [gt_cv_func_printf_posix="guessing no"],
++          [gt_cv_func_printf_posix="guessing yes"])
++      ])
++    ])
++  case $gt_cv_func_printf_posix in
++    *yes)
++      AC_DEFINE([HAVE_POSIX_PRINTF], [1],
++        [Define if your printf() function supports format strings with positions.])
++      ;;
++  esac
++])
+diff --git a/m4/progtest.m4 b/m4/progtest.m4
+new file mode 100644
+index 0000000..2d804ac
+--- /dev/null
++++ b/m4/progtest.m4
+@@ -0,0 +1,92 @@
++# progtest.m4 serial 6 (gettext-0.18)
++dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++AC_PREREQ([2.50])
++
++# Search path for a program which passes the given test.
++
++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
++dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
++AC_DEFUN([AM_PATH_PROG_WITH_TEST],
++[
++# Prepare PATH_SEPARATOR.
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++  echo "#! /bin/sh" >conf$$.sh
++  echo  "exit 0"   >>conf$$.sh
++  chmod +x conf$$.sh
++  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++    PATH_SEPARATOR=';'
++  else
++    PATH_SEPARATOR=:
++  fi
++  rm -f conf$$.sh
++fi
++
++# Find out how to test for executable files. Don't use a zero-byte file,
++# as systems may use methods other than mode bits to determine executability.
++cat >conf$$.file <<_ASEOF
++#! /bin/sh
++exit 0
++_ASEOF
++chmod +x conf$$.file
++if test -x conf$$.file >/dev/null 2>&1; then
++  ac_executable_p="test -x"
++else
++  ac_executable_p="test -f"
++fi
++rm -f conf$$.file
++
++# Extract the first word of "$2", so it can be a program name with args.
++set dummy $2; ac_word=[$]2
++AC_MSG_CHECKING([for $ac_word])
++AC_CACHE_VAL([ac_cv_path_$1],
++[case "[$]$1" in
++  [[\\/]]* | ?:[[\\/]]*)
++    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
++    ;;
++  *)
++    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
++    for ac_dir in ifelse([$5], , $PATH, [$5]); do
++      IFS="$ac_save_IFS"
++      test -z "$ac_dir" && ac_dir=.
++      for ac_exec_ext in '' $ac_executable_extensions; do
++        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
++          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
++          if [$3]; then
++            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
++            break 2
++          fi
++        fi
++      done
++    done
++    IFS="$ac_save_IFS"
++dnl If no 4th arg is given, leave the cache variable unset,
++dnl so AC_PATH_PROGS will keep looking.
++ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
++])dnl
++    ;;
++esac])dnl
++$1="$ac_cv_path_$1"
++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
++  AC_MSG_RESULT([$][$1])
++else
++  AC_MSG_RESULT([no])
++fi
++AC_SUBST([$1])dnl
++])
+diff --git a/m4/size_max.m4 b/m4/size_max.m4
+new file mode 100644
+index 0000000..ce992db
+--- /dev/null
++++ b/m4/size_max.m4
+@@ -0,0 +1,75 @@
++# size_max.m4 serial 9
++dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gl_SIZE_MAX],
++[
++  AC_CHECK_HEADERS([stdint.h])
++  dnl First test whether the system already has SIZE_MAX.
++  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
++    gl_cv_size_max=
++    AC_EGREP_CPP([Found it], [
++#include <limits.h>
++#if HAVE_STDINT_H
++#include <stdint.h>
++#endif
++#ifdef SIZE_MAX
++Found it
++#endif
++], [gl_cv_size_max=yes])
++    if test -z "$gl_cv_size_max"; then
++      dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
++      dnl than the type 'unsigned long'. Try hard to find a definition that can
++      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
++      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
++        [#include <stddef.h>
++#include <limits.h>], [size_t_bits_minus_1=])
++      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
++        [#include <stddef.h>], [fits_in_uint=])
++      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
++        if test $fits_in_uint = 1; then
++          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
++          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
++          AC_TRY_COMPILE([#include <stddef.h>
++            extern size_t foo;
++            extern unsigned long foo;
++            ], [], [fits_in_uint=0])
++        fi
++        dnl We cannot use 'expr' to simplify this expression, because 'expr'
++        dnl works only with 'long' integers in the host environment, while we
++        dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
++        if test $fits_in_uint = 1; then
++          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
++        else
++          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
++        fi
++      else
++        dnl Shouldn't happen, but who knows...
++        gl_cv_size_max='((size_t)~(size_t)0)'
++      fi
++    fi
++  ])
++  if test "$gl_cv_size_max" != yes; then
++    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
++      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
++  fi
++  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
++  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
++  dnl #define by AC_DEFINE_UNQUOTED.
++  AH_VERBATIM([SIZE_MAX],
++[/* Define as the maximum value of type 'size_t', if the system doesn't define
++   it. */
++#ifndef SIZE_MAX
++# undef SIZE_MAX
++#endif])
++])
++
++dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
++dnl Remove this when we can assume autoconf >= 2.61.
++m4_ifdef([AC_COMPUTE_INT], [], [
++  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
++])
+diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
+new file mode 100644
+index 0000000..b8e3c6c
+--- /dev/null
++++ b/m4/stdint_h.m4
+@@ -0,0 +1,26 @@
++# stdint_h.m4 serial 8
++dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([gl_AC_HEADER_STDINT_H],
++[
++  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
++  [AC_TRY_COMPILE(
++    [#include <sys/types.h>
++#include <stdint.h>],
++    [uintmax_t i = (uintmax_t) -1; return !i;],
++    [gl_cv_header_stdint_h=yes],
++    [gl_cv_header_stdint_h=no])])
++  if test $gl_cv_header_stdint_h = yes; then
++    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
++      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
++       and declares uintmax_t. ])
++  fi
++])
+diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
+new file mode 100644
+index 0000000..05cc4ff
+--- /dev/null
++++ b/m4/threadlib.m4
+@@ -0,0 +1,347 @@
++# threadlib.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++dnl gl_THREADLIB
++dnl ------------
++dnl Tests for a multithreading library to be used.
++dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
++dnl USE_PTH_THREADS, USE_WIN32_THREADS
++dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
++dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
++dnl libtool).
++dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
++dnl programs that really need multithread functionality. The difference
++dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
++dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
++dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
++dnl multithread-safe programs.
++
++AC_DEFUN([gl_THREADLIB_EARLY],
++[
++  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
++])
++
++dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
++
++AC_DEFUN([gl_THREADLIB_EARLY_BODY],
++[
++  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
++  dnl influences the result of the autoconf tests that test for *_unlocked
++  dnl declarations, on AIX 5 at least. Therefore it must come early.
++  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
++  AC_BEFORE([$0], [gl_ARGP])dnl
++
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
++  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
++  dnl AC_GNU_SOURCE.
++  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
++    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
++    [AC_REQUIRE([AC_GNU_SOURCE])])
++  dnl Check for multithreading.
++  m4_divert_text([DEFAULTS], [gl_use_threads_default=])
++  AC_ARG_ENABLE([threads],
++AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
++AC_HELP_STRING([--disable-threads], [build without multithread safety]),
++    [gl_use_threads=$enableval],
++    [if test -n "$gl_use_threads_default"; then
++       gl_use_threads="$gl_use_threads_default"
++     else
++changequote(,)dnl
++       case "$host_os" in
++         dnl Disable multithreading by default on OSF/1, because it interferes
++         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
++         dnl child process gets an endless segmentation fault inside execvp().
++         dnl Disable multithreading by default on Cygwin 1.5.x, because it has
++         dnl bugs that lead to endless loops or crashes. See
++         dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
++         osf*) gl_use_threads=no ;;
++         cygwin*)
++               case `uname -r` in
++                 1.[0-5].*) gl_use_threads=no ;;
++                 *)         gl_use_threads=yes ;;
++               esac
++               ;;
++         *)    gl_use_threads=yes ;;
++       esac
++changequote([,])dnl
++     fi
++    ])
++  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
++    # For using <pthread.h>:
++    case "$host_os" in
++      osf*)
++        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
++        # groks <pthread.h>. cc also understands the flag -pthread, but
++        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
++        # 2. putting a flag into CPPFLAGS that has an effect on the linker
++        # causes the AC_TRY_LINK test below to succeed unexpectedly,
++        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
++        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
++        ;;
++    esac
++    # Some systems optimize for single-threaded programs by default, and
++    # need special flags to disable these optimizations. For example, the
++    # definition of 'errno' in <errno.h>.
++    case "$host_os" in
++      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
++      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
++    esac
++  fi
++])
++
++dnl The guts of gl_THREADLIB. Needs to be expanded only once.
++
++AC_DEFUN([gl_THREADLIB_BODY],
++[
++  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
++  gl_threads_api=none
++  LIBTHREAD=
++  LTLIBTHREAD=
++  LIBMULTITHREAD=
++  LTLIBMULTITHREAD=
++  if test "$gl_use_threads" != no; then
++    dnl Check whether the compiler and linker support weak declarations.
++    AC_CACHE_CHECK([whether imported symbols can be declared weak],
++      [gl_cv_have_weak],
++      [gl_cv_have_weak=no
++       dnl First, test whether the compiler accepts it syntactically.
++       AC_TRY_LINK([extern void xyzzy ();
++#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
++       if test $gl_cv_have_weak = maybe; then
++         dnl Second, test whether it actually works. On Cygwin 1.7.2, with
++         dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
++         AC_TRY_RUN([
++#include <stdio.h>
++#pragma weak fputs
++int main ()
++{
++  return (fputs == NULL);
++}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
++           [dnl When cross-compiling, assume that only ELF platforms support
++            dnl weak symbols.
++            AC_EGREP_CPP([Extensible Linking Format],
++              [#ifdef __ELF__
++               Extensible Linking Format
++               #endif
++              ],
++              [gl_cv_have_weak="guessing yes"],
++              [gl_cv_have_weak="guessing no"])
++           ])
++       fi
++      ])
++    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
++      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
++      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
++      AC_CHECK_HEADER([pthread.h],
++        [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
++      if test "$gl_have_pthread_h" = yes; then
++        # Other possible tests:
++        #   -lpthreads (FSU threads, PCthreads)
++        #   -lgthreads
++        gl_have_pthread=
++        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
++        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
++        # the second one only in libpthread, and lock.c needs it.
++        AC_TRY_LINK([#include <pthread.h>],
++          [pthread_mutex_lock((pthread_mutex_t*)0);
++           pthread_mutexattr_init((pthread_mutexattr_t*)0);],
++          [gl_have_pthread=yes])
++        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
++        # since it is defined as a macro on OSF/1.)
++        if test -n "$gl_have_pthread"; then
++          # The program links fine without libpthread. But it may actually
++          # need to link with libpthread in order to create multiple threads.
++          AC_CHECK_LIB([pthread], [pthread_kill],
++            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
++             # On Solaris and HP-UX, most pthread functions exist also in libc.
++             # Therefore pthread_in_use() needs to actually try to create a
++             # thread: pthread_create from libc will fail, whereas
++             # pthread_create will actually create a thread.
++             case "$host_os" in
++               solaris* | hpux*)
++                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
++                   [Define if the pthread_in_use() detection is hard.])
++             esac
++            ])
++        else
++          # Some library is needed. Try libpthread and libc_r.
++          AC_CHECK_LIB([pthread], [pthread_kill],
++            [gl_have_pthread=yes
++             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
++             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
++          if test -z "$gl_have_pthread"; then
++            # For FreeBSD 4.
++            AC_CHECK_LIB([c_r], [pthread_kill],
++              [gl_have_pthread=yes
++               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
++               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
++          fi
++        fi
++        if test -n "$gl_have_pthread"; then
++          gl_threads_api=posix
++          AC_DEFINE([USE_POSIX_THREADS], [1],
++            [Define if the POSIX multithreading library can be used.])
++          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
++            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
++              AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
++                [Define if references to the POSIX multithreading library should be made weak.])
++              LIBTHREAD=
++              LTLIBTHREAD=
++            fi
++          fi
++        fi
++      fi
++    fi
++    if test -z "$gl_have_pthread"; then
++      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
++        gl_have_solaristhread=
++        gl_save_LIBS="$LIBS"
++        LIBS="$LIBS -lthread"
++        AC_TRY_LINK([#include <thread.h>
++#include <synch.h>],
++          [thr_self();],
++          [gl_have_solaristhread=yes])
++        LIBS="$gl_save_LIBS"
++        if test -n "$gl_have_solaristhread"; then
++          gl_threads_api=solaris
++          LIBTHREAD=-lthread
++          LTLIBTHREAD=-lthread
++          LIBMULTITHREAD="$LIBTHREAD"
++          LTLIBMULTITHREAD="$LTLIBTHREAD"
++          AC_DEFINE([USE_SOLARIS_THREADS], [1],
++            [Define if the old Solaris multithreading library can be used.])
++          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
++            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
++              [Define if references to the old Solaris multithreading library should be made weak.])
++            LIBTHREAD=
++            LTLIBTHREAD=
++          fi
++        fi
++      fi
++    fi
++    if test "$gl_use_threads" = pth; then
++      gl_save_CPPFLAGS="$CPPFLAGS"
++      AC_LIB_LINKFLAGS([pth])
++      gl_have_pth=
++      gl_save_LIBS="$LIBS"
++      LIBS="$LIBS -lpth"
++      AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
++      LIBS="$gl_save_LIBS"
++      if test -n "$gl_have_pth"; then
++        gl_threads_api=pth
++        LIBTHREAD="$LIBPTH"
++        LTLIBTHREAD="$LTLIBPTH"
++        LIBMULTITHREAD="$LIBTHREAD"
++        LTLIBMULTITHREAD="$LTLIBTHREAD"
++        AC_DEFINE([USE_PTH_THREADS], [1],
++          [Define if the GNU Pth multithreading library can be used.])
++        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
++          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
++            AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
++              [Define if references to the GNU Pth multithreading library should be made weak.])
++            LIBTHREAD=
++            LTLIBTHREAD=
++          fi
++        fi
++      else
++        CPPFLAGS="$gl_save_CPPFLAGS"
++      fi
++    fi
++    if test -z "$gl_have_pthread"; then
++      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
++        if { case "$host_os" in
++               mingw*) true;;
++               *) false;;
++             esac
++           }; then
++          gl_threads_api=win32
++          AC_DEFINE([USE_WIN32_THREADS], [1],
++            [Define if the Win32 multithreading API can be used.])
++        fi
++      fi
++    fi
++  fi
++  AC_MSG_CHECKING([for multithread API to use])
++  AC_MSG_RESULT([$gl_threads_api])
++  AC_SUBST([LIBTHREAD])
++  AC_SUBST([LTLIBTHREAD])
++  AC_SUBST([LIBMULTITHREAD])
++  AC_SUBST([LTLIBMULTITHREAD])
++])
++
++AC_DEFUN([gl_THREADLIB],
++[
++  AC_REQUIRE([gl_THREADLIB_EARLY])
++  AC_REQUIRE([gl_THREADLIB_BODY])
++])
++
++
++dnl gl_DISABLE_THREADS
++dnl ------------------
++dnl Sets the gl_THREADLIB default so that threads are not used by default.
++dnl The user can still override it at installation time, by using the
++dnl configure option '--enable-threads'.
++
++AC_DEFUN([gl_DISABLE_THREADS], [
++  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
++])
++
++
++dnl Survey of platforms:
++dnl
++dnl Platform          Available   Compiler    Supports   test-lock
++dnl                   flavours    option      weak       result
++dnl ---------------   ---------   ---------   --------   ---------
++dnl Linux 2.4/glibc   posix       -lpthread       Y      OK
++dnl
++dnl GNU Hurd/glibc    posix
++dnl
++dnl FreeBSD 5.3       posix       -lc_r           Y
++dnl                   posix       -lkse ?         Y
++dnl                   posix       -lpthread ?     Y
++dnl                   posix       -lthr           Y
++dnl
++dnl FreeBSD 5.2       posix       -lc_r           Y
++dnl                   posix       -lkse           Y
++dnl                   posix       -lthr           Y
++dnl
++dnl FreeBSD 4.0,4.10  posix       -lc_r           Y      OK
++dnl
++dnl NetBSD 1.6        --
++dnl
++dnl OpenBSD 3.4       posix       -lpthread       Y      OK
++dnl
++dnl MacOS X 10.[123]  posix       -lpthread       Y      OK
++dnl
++dnl Solaris 7,8,9     posix       -lpthread       Y      Sol 7,8: 0.0; Sol 9: OK
++dnl                   solaris     -lthread        Y      Sol 7,8: 0.0; Sol 9: OK
++dnl
++dnl HP-UX 11          posix       -lpthread       N (cc) OK
++dnl                                               Y (gcc)
++dnl
++dnl IRIX 6.5          posix       -lpthread       Y      0.5
++dnl
++dnl AIX 4.3,5.1       posix       -lpthread       N      AIX 4: 0.5; AIX 5: OK
++dnl
++dnl OSF/1 4.0,5.1     posix       -pthread (cc)   N      OK
++dnl                               -lpthread (gcc) Y
++dnl
++dnl Cygwin            posix       -lpthread       Y      OK
++dnl
++dnl Any of the above  pth         -lpth                  0.0
++dnl
++dnl Mingw             win32                       N      OK
++dnl
++dnl BeOS 5            --
++dnl
++dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
++dnl turned off:
++dnl   OK if all three tests terminate OK,
++dnl   0.5 if the first test terminates OK but the second one loops endlessly,
++dnl   0.0 if the first test already loops endlessly.
+diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
+new file mode 100644
+index 0000000..03b51bc
+--- /dev/null
++++ b/m4/uintmax_t.m4
+@@ -0,0 +1,30 @@
++# uintmax_t.m4 serial 12
++dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++AC_PREREQ([2.13])
++
++# Define uintmax_t to 'unsigned long' or 'unsigned long long'
++# if it is not already defined in <stdint.h> or <inttypes.h>.
++
++AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
++[
++  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
++  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
++  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
++    AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
++    test $ac_cv_type_unsigned_long_long_int = yes \
++      && ac_type='unsigned long long' \
++      || ac_type='unsigned long'
++    AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
++      [Define to unsigned long or unsigned long long
++       if <stdint.h> and <inttypes.h> don't define.])
++  else
++    AC_DEFINE([HAVE_UINTMAX_T], [1],
++      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
++  fi
++])
+diff --git a/m4/visibility.m4 b/m4/visibility.m4
+new file mode 100644
+index 0000000..077c476
+--- /dev/null
++++ b/m4/visibility.m4
+@@ -0,0 +1,74 @@
++# visibility.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++dnl Tests whether the compiler supports the command-line option
++dnl -fvisibility=hidden and the function and variable attributes
++dnl __attribute__((__visibility__("hidden"))) and
++dnl __attribute__((__visibility__("default"))).
++dnl Does *not* test for __visibility__("protected") - which has tricky
++dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
++dnl MacOS X.
++dnl Does *not* test for __visibility__("internal") - which has processor
++dnl dependent semantics.
++dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
++dnl "really only recommended for legacy code".
++dnl Set the variable CFLAG_VISIBILITY.
++dnl Defines and sets the variable HAVE_VISIBILITY.
++
++AC_DEFUN([gl_VISIBILITY],
++[
++  AC_REQUIRE([AC_PROG_CC])
++  CFLAG_VISIBILITY=
++  HAVE_VISIBILITY=0
++  if test -n "$GCC"; then
++    dnl First, check whether -Werror can be added to the command line, or
++    dnl whether it leads to an error because of some other option that the
++    dnl user has put into $CC $CFLAGS $CPPFLAGS.
++    AC_MSG_CHECKING([whether the -Werror option is usable])
++    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
++      gl_save_CFLAGS="$CFLAGS"
++      CFLAGS="$CFLAGS -Werror"
++      AC_TRY_COMPILE([], [],
++        [gl_cv_cc_vis_werror=yes],
++        [gl_cv_cc_vis_werror=no])
++      CFLAGS="$gl_save_CFLAGS"])
++    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
++    dnl Now check whether visibility declarations are supported.
++    AC_MSG_CHECKING([for simple visibility declarations])
++    AC_CACHE_VAL([gl_cv_cc_visibility], [
++      gl_save_CFLAGS="$CFLAGS"
++      CFLAGS="$CFLAGS -fvisibility=hidden"
++      dnl We use the option -Werror and a function dummyfunc, because on some
++      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
++      dnl "visibility attribute not supported in this configuration; ignored"
++      dnl at the first function definition in every compilation unit, and we
++      dnl don't want to use the option in this case.
++      if test $gl_cv_cc_vis_werror = yes; then
++        CFLAGS="$CFLAGS -Werror"
++      fi
++      AC_TRY_COMPILE(
++        [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
++         extern __attribute__((__visibility__("default"))) int exportedvar;
++         extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
++         extern __attribute__((__visibility__("default"))) int exportedfunc (void);
++         void dummyfunc (void) {}],
++        [],
++        [gl_cv_cc_visibility=yes],
++        [gl_cv_cc_visibility=no])
++      CFLAGS="$gl_save_CFLAGS"])
++    AC_MSG_RESULT([$gl_cv_cc_visibility])
++    if test $gl_cv_cc_visibility = yes; then
++      CFLAG_VISIBILITY="-fvisibility=hidden"
++      HAVE_VISIBILITY=1
++    fi
++  fi
++  AC_SUBST([CFLAG_VISIBILITY])
++  AC_SUBST([HAVE_VISIBILITY])
++  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
++    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
++])
+diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
+new file mode 100644
+index 0000000..ed804e6
+--- /dev/null
++++ b/m4/wchar_t.m4
+@@ -0,0 +1,20 @@
++# wchar_t.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether <stddef.h> has the 'wchar_t' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_WCHAR_T],
++[
++  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
++    [AC_TRY_COMPILE([#include <stddef.h>
++       wchar_t foo = (wchar_t)'\0';], ,
++       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
++  if test $gt_cv_c_wchar_t = yes; then
++    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
++  fi
++])
+diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
+new file mode 100644
+index 0000000..a6c7d15
+--- /dev/null
++++ b/m4/wint_t.m4
+@@ -0,0 +1,28 @@
++# wint_t.m4 serial 4 (gettext-0.18)
++dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether <wchar.h> has the 'wint_t' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_WINT_T],
++[
++  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
++    [AC_TRY_COMPILE([
++/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
++   <wchar.h>.
++   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
++   before <wchar.h>.  */
++#include <stddef.h>
++#include <stdio.h>
++#include <time.h>
++#include <wchar.h>
++       wint_t foo = (wchar_t)'\0';], ,
++       [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
++  if test $gt_cv_c_wint_t = yes; then
++    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
++  fi
++])
+diff --git a/m4/xsize.m4 b/m4/xsize.m4
+new file mode 100644
+index 0000000..b653693
+--- /dev/null
++++ b/m4/xsize.m4
+@@ -0,0 +1,13 @@
++# xsize.m4 serial 4
++dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++AC_DEFUN([gl_XSIZE],
++[
++  dnl Prerequisites of lib/xsize.h.
++  AC_REQUIRE([gl_SIZE_MAX])
++  AC_REQUIRE([AC_C_INLINE])
++  AC_CHECK_HEADERS([stdint.h])
++])
+diff --git a/po/Makefile.in.in b/po/Makefile.in.in
+new file mode 100644
+index 0000000..83d8838
+--- /dev/null
++++ b/po/Makefile.in.in
+@@ -0,0 +1,444 @@
++# Makefile for PO directory in any package using GNU gettext.
++# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
++#
++# This file can be copied and used freely without restrictions.  It can
++# be used in projects which are not available under the GNU General Public
++# License but which still want to provide support for the GNU gettext
++# functionality.
++# Please note that the actual code of GNU gettext is covered by the GNU
++# General Public License and is *not* in the public domain.
++#
++# Origin: gettext-0.18
++GETTEXT_MACRO_VERSION = 0.18
++
++PACKAGE = @PACKAGE@
++VERSION = @VERSION@
++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
++
++SHELL = /bin/sh
++@SET_MAKE@
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++
++prefix = @prefix@
++exec_prefix = @exec_prefix@
++datarootdir = @datarootdir@
++datadir = @datadir@
++localedir = @localedir@
++gettextsrcdir = $(datadir)/gettext/po
++
++INSTALL = @INSTALL@
++INSTALL_DATA = @INSTALL_DATA@
++
++# We use $(mkdir_p).
++# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
++# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
++# @install_sh@ does not start with $(SHELL), so we add it.
++# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
++# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
++# versions, $(mkinstalldirs) and $(install_sh) are unused.
++mkinstalldirs = $(SHELL) @install_sh@ -d
++install_sh = $(SHELL) @install_sh@
++MKDIR_P = @MKDIR_P@
++mkdir_p = @mkdir_p@
++
++GMSGFMT_ = @GMSGFMT@
++GMSGFMT_no = @GMSGFMT@
++GMSGFMT_yes = @GMSGFMT_015@
++GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
++MSGFMT_ = @MSGFMT@
++MSGFMT_no = @MSGFMT@
++MSGFMT_yes = @MSGFMT_015@
++MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
++XGETTEXT_ = @XGETTEXT@
++XGETTEXT_no = @XGETTEXT@
++XGETTEXT_yes = @XGETTEXT_015@
++XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
++MSGMERGE = msgmerge
++MSGMERGE_UPDATE = @MSGMERGE@ --update
++MSGINIT = msginit
++MSGCONV = msgconv
++MSGFILTER = msgfilter
++
++POFILES = @POFILES@
++GMOFILES = @GMOFILES@
++UPDATEPOFILES = @UPDATEPOFILES@
++DUMMYPOFILES = @DUMMYPOFILES@
++DISTFILES.common = Makefile.in.in remove-potcdate.sin \
++$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
++DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
++$(POFILES) $(GMOFILES) \
++$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
++
++POTFILES = \
++
++CATALOGS = @CATALOGS@
++
++# Makevars gets inserted here. (Don't remove this line!)
++
++.SUFFIXES:
++.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
++
++.po.mo:
++	@echo "$(MSGFMT) -c -o $@ $<"; \
++	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
++
++.po.gmo:
++	@lang=`echo $* | sed -e 's,.*/,,'`; \
++	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
++	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
++
++.sin.sed:
++	sed -e '/^#/d' $< > t-$@
++	mv t-$@ $@
++
++
++all: check-macro-version all-@USE_NLS@
++
++all-yes: stamp-po
++all-no:
++
++# Ensure that the gettext macros and this Makefile.in.in are in sync.
++check-macro-version:
++	@test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
++	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
++	       exit 1; \
++	     }
++
++# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
++# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
++# we don't want to bother translators with empty POT files). We assume that
++# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
++# In this case, stamp-po is a nop (i.e. a phony target).
++
++# stamp-po is a timestamp denoting the last time at which the CATALOGS have
++# been loosely updated. Its purpose is that when a developer or translator
++# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
++# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
++# invocations of "make" will do nothing. This timestamp would not be necessary
++# if updating the $(CATALOGS) would always touch them; however, the rule for
++# $(POFILES) has been designed to not touch files that don't need to be
++# changed.
++stamp-po: $(srcdir)/$(DOMAIN).pot
++	test ! -f $(srcdir)/$(DOMAIN).pot || \
++	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
++	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
++	  echo "touch stamp-po" && \
++	  echo timestamp > stamp-poT && \
++	  mv stamp-poT stamp-po; \
++	}
++
++# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
++# otherwise packages like GCC can not be built if only parts of the source
++# have been downloaded.
++
++# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
++# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
++$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
++	if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
++	  package_gnu='GNU '; \
++	else \
++	  package_gnu=''; \
++	fi; \
++	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
++	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
++	else \
++	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
++	fi; \
++	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
++	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
++	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
++	      --files-from=$(srcdir)/POTFILES.in \
++	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
++	      --msgid-bugs-address="$$msgid_bugs_address" \
++	    ;; \
++	  *) \
++	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
++	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
++	      --files-from=$(srcdir)/POTFILES.in \
++	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
++	      --package-name="$${package_gnu}@PACKAGE@" \
++	      --package-version='@VERSION@' \
++	      --msgid-bugs-address="$$msgid_bugs_address" \
++	    ;; \
++	esac
++	test ! -f $(DOMAIN).po || { \
++	  if test -f $(srcdir)/$(DOMAIN).pot; then \
++	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
++	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
++	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
++	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
++	    else \
++	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
++	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
++	    fi; \
++	  else \
++	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
++	  fi; \
++	}
++
++# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
++# every "make" invocation, only create it when it is missing.
++# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
++$(srcdir)/$(DOMAIN).pot:
++	$(MAKE) $(DOMAIN).pot-update
++
++# This target rebuilds a PO file if $(DOMAIN).pot has changed.
++# Note that a PO file is not touched if it doesn't need to be changed.
++$(POFILES): $(srcdir)/$(DOMAIN).pot
++	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
++	if test -f "$(srcdir)/$${lang}.po"; then \
++	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
++	  cd $(srcdir) \
++	    && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
++	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
++	           *) \
++	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
++	         esac; \
++	       }; \
++	else \
++	  $(MAKE) $${lang}.po-create; \
++	fi
++
++
++install: install-exec install-data
++install-exec:
++install-data: install-data-@USE_NLS@
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
++	  for file in $(DISTFILES.common) Makevars.template; do \
++	    $(INSTALL_DATA) $(srcdir)/$$file \
++			    $(DESTDIR)$(gettextsrcdir)/$$file; \
++	  done; \
++	  for file in Makevars; do \
++	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
++	  done; \
++	else \
++	  : ; \
++	fi
++install-data-no: all
++install-data-yes: all
++	@catalogs='$(CATALOGS)'; \
++	for cat in $$catalogs; do \
++	  cat=`basename $$cat`; \
++	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++	  dir=$(localedir)/$$lang/LC_MESSAGES; \
++	  $(mkdir_p) $(DESTDIR)$$dir; \
++	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
++	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
++	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
++	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
++	    if test -n "$$lc"; then \
++	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
++	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
++	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
++	         for file in *; do \
++	           if test -f $$file; then \
++	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
++	           fi; \
++	         done); \
++	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	      else \
++	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
++	          :; \
++	        else \
++	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        fi; \
++	      fi; \
++	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
++	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
++	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
++	    fi; \
++	  done; \
++	done
++
++install-strip: install
++
++installdirs: installdirs-exec installdirs-data
++installdirs-exec:
++installdirs-data: installdirs-data-@USE_NLS@
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
++	else \
++	  : ; \
++	fi
++installdirs-data-no:
++installdirs-data-yes:
++	@catalogs='$(CATALOGS)'; \
++	for cat in $$catalogs; do \
++	  cat=`basename $$cat`; \
++	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++	  dir=$(localedir)/$$lang/LC_MESSAGES; \
++	  $(mkdir_p) $(DESTDIR)$$dir; \
++	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
++	    if test -n "$$lc"; then \
++	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
++	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
++	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
++	         for file in *; do \
++	           if test -f $$file; then \
++	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
++	           fi; \
++	         done); \
++	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	      else \
++	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
++	          :; \
++	        else \
++	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        fi; \
++	      fi; \
++	    fi; \
++	  done; \
++	done
++
++# Define this as empty until I found a useful application.
++installcheck:
++
++uninstall: uninstall-exec uninstall-data
++uninstall-exec:
++uninstall-data: uninstall-data-@USE_NLS@
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  for file in $(DISTFILES.common) Makevars.template; do \
++	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
++	  done; \
++	else \
++	  : ; \
++	fi
++uninstall-data-no:
++uninstall-data-yes:
++	catalogs='$(CATALOGS)'; \
++	for cat in $$catalogs; do \
++	  cat=`basename $$cat`; \
++	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
++	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++	  done; \
++	done
++
++check: all
++
++info dvi ps pdf html tags TAGS ctags CTAGS ID:
++
++mostlyclean:
++	rm -f remove-potcdate.sed
++	rm -f stamp-poT
++	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
++	rm -fr *.o
++
++clean: mostlyclean
++
++distclean: clean
++	rm -f Makefile Makefile.in POTFILES *.mo
++
++maintainer-clean: distclean
++	@echo "This command is intended for maintainers to use;"
++	@echo "it deletes files that may require special tools to rebuild."
++	rm -f stamp-po $(GMOFILES)
++
++distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
++dist distdir:
++	$(MAKE) update-po
++	@$(MAKE) dist2
++# This is a separate target because 'update-po' must be executed before.
++dist2: stamp-po $(DISTFILES)
++	dists="$(DISTFILES)"; \
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  dists="$$dists Makevars.template"; \
++	fi; \
++	if test -f $(srcdir)/$(DOMAIN).pot; then \
++	  dists="$$dists $(DOMAIN).pot stamp-po"; \
++	fi; \
++	if test -f $(srcdir)/ChangeLog; then \
++	  dists="$$dists ChangeLog"; \
++	fi; \
++	for i in 0 1 2 3 4 5 6 7 8 9; do \
++	  if test -f $(srcdir)/ChangeLog.$$i; then \
++	    dists="$$dists ChangeLog.$$i"; \
++	  fi; \
++	done; \
++	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
++	for file in $$dists; do \
++	  if test -f $$file; then \
++	    cp -p $$file $(distdir) || exit 1; \
++	  else \
++	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
++	  fi; \
++	done
++
++update-po: Makefile
++	$(MAKE) $(DOMAIN).pot-update
++	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
++	$(MAKE) update-gmo
++
++# General rule for creating PO files.
++
++.nop.po-create:
++	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
++	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
++	exit 1
++
++# General rule for updating PO files.
++
++.nop.po-update:
++	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
++	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
++	tmpdir=`pwd`; \
++	echo "$$lang:"; \
++	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
++	cd $(srcdir); \
++	if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
++	         $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
++	       *) \
++	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
++	     esac; \
++	   }; then \
++	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++	    rm -f $$tmpdir/$$lang.new.po; \
++	  else \
++	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++	      :; \
++	    else \
++	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++	      exit 1; \
++	    fi; \
++	  fi; \
++	else \
++	  echo "msgmerge for $$lang.po failed!" 1>&2; \
++	  rm -f $$tmpdir/$$lang.new.po; \
++	fi
++
++$(DUMMYPOFILES):
++
++update-gmo: Makefile $(GMOFILES)
++	@:
++
++# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
++# because execution permission bits may not work on the current file system.
++# Use @SHELL@, which is the shell determined by autoconf for the use by its
++# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
++Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
++	cd $(top_builddir) \
++	  && @SHELL@ ./config.status $(subdir)/$@.in po-directories
++
++force:
++
++# Tell versions [3.59,3.63) of GNU make not to export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff --git a/po/Makevars.template b/po/Makevars.template
+new file mode 100644
+index 0000000..32692ab
+--- /dev/null
++++ b/po/Makevars.template
+@@ -0,0 +1,41 @@
++# Makefile variables for PO directory in any package using GNU gettext.
++
++# Usually the message domain is the same as the package name.
++DOMAIN = $(PACKAGE)
++
++# These two variables depend on the location of this directory.
++subdir = po
++top_builddir = ..
++
++# These options get passed to xgettext.
++XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
++
++# This is the copyright holder that gets inserted into the header of the
++# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
++# package.  (Note that the msgstr strings, extracted from the package's
++# sources, belong to the copyright holder of the package.)  Translators are
++# expected to transfer the copyright for their translations to this person
++# or entity, or to disclaim their copyright.  The empty string stands for
++# the public domain; in this case the translators are expected to disclaim
++# their copyright.
++COPYRIGHT_HOLDER = Free Software Foundation, Inc.
++
++# This is the email address or URL to which the translators shall report
++# bugs in the untranslated strings:
++# - Strings which are not entire sentences, see the maintainer guidelines
++#   in the GNU gettext documentation, section 'Preparing Strings'.
++# - Strings which use unclear terms or require additional context to be
++#   understood.
++# - Strings which make invalid assumptions about notation of date, time or
++#   money.
++# - Pluralisation problems.
++# - Incorrect English spelling.
++# - Incorrect formatting.
++# It can be your email address, or a mailing list address where translators
++# can write to without being subscribed, or the URL of a web page through
++# which the translators can contact you.
++MSGID_BUGS_ADDRESS =
++
++# This is the list of locale categories, beyond LC_MESSAGES, for which the
++# message catalogs shall be used.  It is usually empty.
++EXTRA_LOCALE_CATEGORIES =
+diff --git a/po/Rules-quot b/po/Rules-quot
+new file mode 100644
+index 0000000..af52487
+--- /dev/null
++++ b/po/Rules-quot
+@@ -0,0 +1,47 @@
++# Special Makefile rules for English message catalogs with quotation marks.
++
++DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
++
++.SUFFIXES: .insert-header .po-update-en
++
++en@quot.po-create:
++	$(MAKE) en@quot.po-update
++en@boldquot.po-create:
++	$(MAKE) en@boldquot.po-update
++
++en@quot.po-update: en@quot.po-update-en
++en@boldquot.po-update: en@boldquot.po-update-en
++
++.insert-header.po-update-en:
++	@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
++	if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
++	tmpdir=`pwd`; \
++	echo "$$lang:"; \
++	ll=`echo $$lang | sed -e 's/@.*//'`; \
++	LC_ALL=C; export LC_ALL; \
++	cd $(srcdir); \
++	if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
++	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++	    rm -f $$tmpdir/$$lang.new.po; \
++	  else \
++	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++	      :; \
++	    else \
++	      echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++	      exit 1; \
++	    fi; \
++	  fi; \
++	else \
++	  echo "creation of $$lang.po failed!" 1>&2; \
++	  rm -f $$tmpdir/$$lang.new.po; \
++	fi
++
++en@quot.insert-header: insert-header.sin
++	sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
++
++en@boldquot.insert-header: insert-header.sin
++	sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
++
++mostlyclean: mostlyclean-quot
++mostlyclean-quot:
++	rm -f *.insert-header
+diff --git a/po/boldquot.sed b/po/boldquot.sed
+new file mode 100644
+index 0000000..4b937aa
+--- /dev/null
++++ b/po/boldquot.sed
+@@ -0,0 +1,10 @@
++s/"\([^"]*\)"/“\1”/g
++s/`\([^`']*\)'/‘\1’/g
++s/ '\([^`']*\)' / ‘\1’ /g
++s/ '\([^`']*\)'$/ ‘\1’/g
++s/^'\([^`']*\)' /‘\1’ /g
++s/“”/""/g
++s/“/“[1m/g
++s/”/[0m”/g
++s/‘/‘[1m/g
++s/’/[0m’/g
+diff --git a/po/en@boldquot.header b/po/en@boldquot.header
+new file mode 100644
+index 0000000..fedb6a0
+--- /dev/null
++++ b/po/en@boldquot.header
+@@ -0,0 +1,25 @@
++# All this catalog "translates" are quotation characters.
++# The msgids must be ASCII and therefore cannot contain real quotation
++# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
++# and double quote (0x22). These substitutes look strange; see
++# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++#
++# This catalog translates grave accent (0x60) and apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019).
++# It also translates pairs of apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019)
++# and pairs of quotation mark (0x22) to
++# left double quotation mark (U+201C) and right double quotation mark (U+201D).
++#
++# When output to an UTF-8 terminal, the quotation characters appear perfectly.
++# When output to an ISO-8859-1 terminal, the single quotation marks are
++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
++# grave/acute accent (by libiconv), and the double quotation marks are
++# transliterated to 0x22.
++# When output to an ASCII terminal, the single quotation marks are
++# transliterated to apostrophes, and the double quotation marks are
++# transliterated to 0x22.
++#
++# This catalog furthermore displays the text between the quotation marks in
++# bold face, assuming the VT100/XTerm escape sequences.
++#
+diff --git a/po/en@quot.header b/po/en@quot.header
+new file mode 100644
+index 0000000..a9647fc
+--- /dev/null
++++ b/po/en@quot.header
+@@ -0,0 +1,22 @@
++# All this catalog "translates" are quotation characters.
++# The msgids must be ASCII and therefore cannot contain real quotation
++# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
++# and double quote (0x22). These substitutes look strange; see
++# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++#
++# This catalog translates grave accent (0x60) and apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019).
++# It also translates pairs of apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019)
++# and pairs of quotation mark (0x22) to
++# left double quotation mark (U+201C) and right double quotation mark (U+201D).
++#
++# When output to an UTF-8 terminal, the quotation characters appear perfectly.
++# When output to an ISO-8859-1 terminal, the single quotation marks are
++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
++# grave/acute accent (by libiconv), and the double quotation marks are
++# transliterated to 0x22.
++# When output to an ASCII terminal, the single quotation marks are
++# transliterated to apostrophes, and the double quotation marks are
++# transliterated to 0x22.
++#
+diff --git a/po/insert-header.sin b/po/insert-header.sin
+new file mode 100644
+index 0000000..b26de01
+--- /dev/null
++++ b/po/insert-header.sin
+@@ -0,0 +1,23 @@
++# Sed script that inserts the file called HEADER before the header entry.
++#
++# At each occurrence of a line starting with "msgid ", we execute the following
++# commands. At the first occurrence, insert the file. At the following
++# occurrences, do nothing. The distinction between the first and the following
++# occurrences is achieved by looking at the hold space.
++/^msgid /{
++x
++# Test if the hold space is empty.
++s/m/m/
++ta
++# Yes it was empty. First occurrence. Read the file.
++r HEADER
++# Output the file's contents by reading the next line. But don't lose the
++# current line while doing this.
++g
++N
++bb
++:a
++# The hold space was nonempty. Following occurrences. Do nothing.
++x
++:b
++}
+diff --git a/po/quot.sed b/po/quot.sed
+new file mode 100644
+index 0000000..0122c46
+--- /dev/null
++++ b/po/quot.sed
+@@ -0,0 +1,6 @@
++s/"\([^"]*\)"/“\1”/g
++s/`\([^`']*\)'/‘\1’/g
++s/ '\([^`']*\)' / ‘\1’ /g
++s/ '\([^`']*\)'$/ ‘\1’/g
++s/^'\([^`']*\)' /‘\1’ /g
++s/“”/""/g
+diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
+new file mode 100644
+index 0000000..2436c49
+--- /dev/null
++++ b/po/remove-potcdate.sin
+@@ -0,0 +1,19 @@
++# Sed script that remove the POT-Creation-Date line in the header entry
++# from a POT file.
++#
++# The distinction between the first and the following occurrences of the
++# pattern is achieved by looking at the hold space.
++/^"POT-Creation-Date: .*"$/{
++x
++# Test if the hold space is empty.
++s/P/P/
++ta
++# Yes it was empty. First occurrence. Remove the line.
++g
++d
++bb
++:a
++# The hold space was nonempty. Following occurrences. Do nothing.
++x
++:b
++}
+-- 
+1.9.1
+
diff --git a/openpower/package/petitboot/petitboot-console-ui.rules b/openpower/package/petitboot/petitboot-console-ui.rules
new file mode 100644
index 0000000..7464856
--- /dev/null
+++ b/openpower/package/petitboot/petitboot-console-ui.rules
@@ -0,0 +1,5 @@
+
+# spawn a petitboot UI on common user-visible interface devices
+SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
+SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
+SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
new file mode 100644
index 0000000..6558b57
--- /dev/null
+++ b/openpower/package/petitboot/petitboot.mk
@@ -0,0 +1,58 @@
+################################################################################
+#
+# petitboot
+#
+################################################################################
+
+PETITBOOT_VERSION = 83a3159f19f237fa994d2c0a16f97f711d02472c
+PETITBOOT_SITE = git://ozlabs.org/~jk/petitboot
+PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex
+PETITBOOT_LICENSE = GPLv2
+PETITBOOT_LICENSE_FILES = COPYING
+
+PETITBOOT_AUTORECONF = YES
+PETITBOOT_AUTORECONF_OPTS = -i
+PETITBOOT_GETTEXTIZE = YES
+PETITBOOT_CONF_OPTS += --with-ncurses --without-twin-x11 --without-twin-fbdev \
+	      --localstatedir=/var \
+	      HOST_PROG_KEXEC=/usr/sbin/kexec \
+	      HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot \
+	      $(if $(BR2_PACKAGE_BUSYBOX),--with-tftp=busybox)
+
+ifdef PETITBOOT_DEBUG
+PETITBOOT_CONF_OPTS += --enable-debug
+endif
+
+ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)
+PETITBOOT_CONF_OPTS += --with-ncursesw MENU_LIB=-lmenuw FORM_LIB=-lformw
+endif
+
+PETITBOOT_PRE_CONFIGURE_HOOKS += PETITBOOT_PRE_CONFIGURE_BOOTSTRAP
+
+define PETITBOOT_POST_INSTALL
+	$(INSTALL) -D -m 0755 $(@D)/utils/bb-kexec-reboot \
+		$(TARGET_DIR)/usr/libexec/petitboot
+	$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/petitboot/boot.d
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/20-set-stdout \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S14silence-console \
+		$(TARGET_DIR)/etc/init.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S15pb-discover \
+		$(TARGET_DIR)/etc/init.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/kexec-restart \
+		$(TARGET_DIR)/usr/sbin/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/petitboot-console-ui.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/removable-event-poll.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+
+	ln -sf /usr/sbin/pb-udhcpc \
+		$(TARGET_DIR)/usr/share/udhcpc/default.script.d/
+endef
+
+PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL
+
+$(eval $(autotools-package))
diff --git a/openpower/package/petitboot/removable-event-poll.rules b/openpower/package/petitboot/removable-event-poll.rules
new file mode 100644
index 0000000..b736aef
--- /dev/null
+++ b/openpower/package/petitboot/removable-event-poll.rules
@@ -0,0 +1,4 @@
+
+# petitboot needs notification for media change events on removable devices,
+# which we only get if we've set the poll_msecs sysfs attribute.
+ACTION!="remove", ATTR{removable}=="1", ATTR{events_poll_msecs}="2000"
