[Pkg-gnupg-commit] [libassuan] 14/19: New upstream version 2.4.4

Eric Dorland eric at moszumanska.debian.org
Sat Nov 25 07:02:21 UTC 2017


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository libassuan.

commit 8263499176530c84a2e83d9711607018f376997a
Merge: 2c52569 3611db2
Author: Eric Dorland <eric at debian.org>
Date:   Sat Nov 25 00:47:02 2017 -0500

    New upstream version 2.4.4

 ChangeLog                   |   166 +
 INSTALL                     |   231 -
 Makefile.am                 |    14 +-
 Makefile.in                 |   892 ---
 NEWS                        |    15 +
 README                      |     4 +-
 VERSION                     |     2 +-
 aclocal.m4                  |  1224 ---
 autogen.sh                  |    41 +-
 build-aux/compile           |   347 -
 build-aux/depcomp           |   791 --
 build-aux/install-sh        |   527 --
 build-aux/ltmain.sh         |  9677 -----------------------
 build-aux/mdate-sh          |   224 -
 build-aux/missing           |   215 -
 build-aux/texinfo.tex       | 10079 ------------------------
 config.h.in                 |   259 -
 configure                   | 17391 ------------------------------------------
 configure.ac                |    52 +-
 doc/Makefile.in             |   810 --
 doc/assuan.info             |   116 +-
 doc/stamp-vti               |     4 +-
 doc/version.texi            |     4 +-
 m4/Makefile.in              |   445 --
 m4/libtool.m4               |  8027 -------------------
 m4/ltoptions.m4             |   384 -
 m4/ltsugar.m4               |   123 -
 m4/ltversion.m4             |    23 -
 m4/lt~obsolete.m4           |    98 -
 src/Makefile.am             |     2 +
 src/Makefile.in             |  1195 ---
 src/assuan-buffer.c         |    34 +-
 src/assuan-defs.h           |    35 +-
 src/assuan-error.c          |    33 +-
 src/assuan-handler.c        |    35 +-
 src/assuan-inquire.c        |    33 +-
 src/assuan-io.c             |    35 +-
 src/assuan-listen.c         |    41 +-
 src/assuan-logging.c        |    37 +-
 src/assuan-pipe-connect.c   |    35 +-
 src/assuan-pipe-server.c    |    41 +-
 src/assuan-socket-connect.c |    33 +-
 src/assuan-socket-server.c  |    49 +-
 src/assuan-socket.c         |    49 +-
 src/assuan-uds.c            |    33 +-
 src/assuan.c                |    37 +-
 src/assuan.h.in             |    39 +-
 src/client.c                |    33 +-
 src/context.c               |    33 +-
 src/conversion.c            |    40 +-
 src/debug.c                 |    10 +-
 src/debug.h                 |    36 +-
 src/funopen.c               |     1 +
 src/gpgcedev.c              |   102 +-
 src/gpgcedev.def            |     1 +
 src/gpgcemgr.c              |    87 +-
 src/isascii.c               |     1 +
 src/libassuan-config.in     |     1 +
 src/libassuan.def           |     4 +-
 src/libassuan.m4            |     3 +-
 src/libassuan.vers          |     1 +
 src/memrchr.c               |     1 +
 src/mkheader.c              |     1 +
 src/posix-fd-t.inc.h        |     1 +
 src/posix-includes.inc.h    |     1 +
 src/posix-sock-nonce.inc.h  |     3 +-
 src/posix-sys-pth-impl.h    |     3 +-
 src/posix-types.inc.h       |     1 +
 src/putc_unlocked.c         |     1 +
 src/server.c                |    33 +-
 src/setenv.c                |    31 +-
 src/stpcpy.c                |    32 +-
 src/system-posix.c          |    38 +-
 src/system-w32.c            |    33 +-
 src/system-w32ce.c          |    33 +-
 src/system.c                |    33 +-
 src/sysutils.c              |    34 +-
 src/versioninfo.rc.in       |     2 +-
 src/w32-fd-t.inc.h          |     1 +
 src/w32-includes.inc.h      |     3 +-
 src/w32-sock-nonce.inc.h    |     1 +
 src/w32-sys-pth-impl.h      |     1 +
 src/w32-types.inc.h         |     1 +
 src/w32ce-add.h             |     1 +
 src/w32ce-fd-t.inc.h        |     1 +
 tests/Makefile.in           |   804 --
 tests/version.c             |     1 +
 87 files changed, 979 insertions(+), 54450 deletions(-)

diff --cc ChangeLog
index 8e477d6,34fda85..6b9dc8d
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,531 -1,16 +1,697 @@@
 -No more ChangeLog files
 -========================
++2017-11-16  Werner Koch  <wk at gnupg.org>
+ 
 -Do not modify any of the ChangeLog files in Libassuan.  Starting on
 -December 1st, 2011 we put change information only in the GIT commit
 -log, and generate a top-level ChangeLog file from logs at "make dist"
 -time.  As such, there are strict requirements on the form of the
 -commit log messages.  See doc/HACKING for details.  The old ChangeLog
 -files have all be renamed to ChangeLog-2011.
++	Release 2.4.4.
++	+ commit 3611db285fda5514c25fe18322bc02a2d257ab9e
+ 
+ 
++2017-11-15  Werner Koch  <wk at gnupg.org>
+ 
 -Local Variables:
 -buffer-read-only: t
 -mode: text
 -End:
++	Add special check version request \001\001.
++	+ commit 4f5596cf09c9e3e7845aa703f68e49168797fd2a
++	* src/assuan.c (assuan_check_version): Handle version "\001\001"
++	* tests/version.c (main): Print extended version info.
++
++	Let configure create the VERSION file.
++	+ commit dfb8654f66f8ddeeb048e195a4f98c0aeed9ffb7
++	* autogen.sh: Update from Libgpg-error
++	* configure.ac: Create file VERSION.
++	* Makefile.am (dist-hook): Do not create VERSION.
++	(EXTRA_DIST): Add VERSION.
++
++	Fix last commit.
++	+ commit 4d4c82ae2bbe7c0e08391ecf34e1aaadfdab435f
++	* src/system-posix.c (__assuan_usleep): Its ysec and usecs
++
++	Fix the nanosleep case of __assuan_usleep.
++	+ commit 7b408d356094ab0ef0a07904a3ddf3832a8aa197
++	* src/system-posix.c (__assuan_usleep): Handle full seconds.
++
++2017-09-06  NIIBE Yutaka  <gniibe at fsij.org>
++
++	We can't support fd passing, if the system doesn't support it.
++	+ commit 87c2bb5708ff202651fca81d91d5f1e0c898cb07
++	* configure.ac (check_descriptor_passing): New.
++	(use_descriptor_passing): Use check_descriptor_passing.
++
++	Define INADDR_LOOPBACK if not defined.
++	+ commit 87473cd29ca9d5e3fb1c3172126c1122472d8b90
++	* src/assuan-socket.c (INADDR_LOOPBACK): Define.
++
++2017-06-19  Marcus Brinkmann  <marcus.brinkmann at ruhr-uni-bochum.de>
++
++	configure: Add flag to disable documentation build.
++	+ commit 859f9a9754708572a6289853d7d95b9ee3eae589
++	* configure.ac: Add new option --disable-doc.
++	(BUILD_DOC): New automake conditional.
++	* Makefile.am (SUBDIRS): Make doc optional based on BUILD_DOC.
++	(DISTCHECK_CONFIGURE_FLAGS): New variable.
++
++	Signed-Off-By: Marcus Brinkmann <mb at g10code.com>
++
++2017-05-31  NIIBE Yutaka  <gniibe at fsij.org>
++
++	Use gpgrt_free to release memory allocated by gpgrt_asprintf.
++	+ commit 62f3123d3877c8a84961e5f907bf959d4593fa5c
++	* src/assuan-logging.c (_assuan_log_control_channel): Use gpgrt_free.
++	* src/debug.c (_assuan_debug, _assuan_debug_add, _assuan_debug_end):
++	Likewise.
++
++2017-03-08  Justus Winter  <justus at g10code.com>
++
++	build: Use macOS' compatibility macros to enable all features.
++	+ commit b26b73d04bff10852382113ae361ea5726661510
++	* configure.ac: On macOS, use the compatibility macros to expose every
++	feature of the libc.  This is the equivalent of _GNU_SOURCE on GNU
++	libc.
++
++2016-09-04  Ben Kibbey  <bjk at luxsci.net>
++
++	EPROTO portability fix.
++	+ commit 8ab3b9273524bd344bdb90dd5d3bc8e5f53ead6e
++	* src/assuan-socket.c(socks5_connect): Return EPROTONOSUPPORT rather
++	than EPROTO.
++
 +2016-07-14  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.4.3.
++	+ commit 316a040452c0956ecab4ce6b5d99d5e75b36879b
 +	* configure.ac: Set LT version to C7/A7/R3.
 +	* Makefile.am (distcheck-hook): New.
 +
 +2016-07-13  Werner Koch  <wk at gnupg.org>
 +
 +	build: Update config.{guess,sub} to {2016-05-15,2016-06-20}.
++	+ commit cbf913c5d543163fa29703884bae3676a57a3261
 +	* build-aux/config.guess: Update.
 +	* build-aux/config.sub: Update.
 +
 +	Improve test for inet_pton on Solaris.
++	+ commit c52829e32fe9108fc0e39d478eede24ac5e694ac
 +	* configure.ac (HAVE_INET_PTON): Add a fallback test.
 +
 +	Allow socket redirection with assuan_socket_connect.
++	+ commit 678f6063b53e4a2cc919f5a8b9d8bde743839c54
 +	* src/assuan-socket-connect.c (assuan_socket_connect): Use
 +	set_socketaddr function.
 +
 +	Speedup closing fds before an exec.
++	+ commit e64f9a4af5a379f5a9fde59f0f944cd10ccfc6ea
 +	* src/system-posix.c [__linux__]: Include dirent.h.
 +	(get_max_fds) [__linux__]: Return the actual used highest fd.
 +
 +2016-07-05  Justus Winter  <justus at g10code.com>
 +
 +	Fix distcheck.
++	+ commit 70bb71e51462e9d81eff80ef8308cd8e15ea96ca
 +	* tests/Makefile.am (EXTRA_DIST): Drop compiled test.
 +
 +2016-06-25  Werner Koch  <wk at gnupg.org>
 +
 +	Fix minor memory leaks.
++	+ commit d60ef7192ad95ec2ec1aef436742f56e6c750b89
 +	* src/assuan-pipe-connect.c (socketpair_connect): Always free
 +	CHILD_FDS.
 +	* src/assuan-uds.c (uds_sendfd): Clear CONTROL_U to silence Valgrind.
 +	* tests/fdpassing.c (main): Free FNAME.
 +
 +	* src/assuan-handler.c (dispatch_command): Remove dead assignment.
 +
 +2016-01-15  Werner Koch  <wk at gnupg.org>
 +
 +	Improve getting of max. number of open fds.
++	+ commit 7101fcbb662220326f2fc786219c1853f27a5298
 +	* configure.ac (AC_CHECK_FUNCS): Add getrlimit.
 +	* src/assuan-pipe-connect.c (MAX_OPEN_FDS): Remove non-used macro.
 +	* src/system.c (MAX_OPEN_FDS): Remove non-used macro.
 +	* src/system-posix.c: Include stdint.h, sys/time.h, sys/resource.h.
 +	(MAX_OPEN_FDS): Remove non-used macro.
 +	(get_max_fds): New.  Taken from gnupg/common/exechelp-posix.c.
 +	(__assuan_spawn): Use it here.
 +
 +2015-12-02  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.4.2.
++	+ commit e0516c5bbac23aa2d2a0b59caad67fca00b3183f
 +	* configure.ac: Bump LT version to C7/A7/R2.
 +
 +2015-11-27  Werner Koch  <wk at gnupg.org>
 +
 +	New feature to test for SOCKS5 proxy availability.
++	+ commit 05ac2dc5c77fa4b87e98508c1b15fd254806b1ce
 +	* src/assuan-socket.c (socks5_connect): Add special treatment for
 +	empty hostnames.
 +	(_assuan_sock_connect_byname): Add feature to test for proxy
 +	availibility.
 +	* tests/socks5.c (main): Add option --have-proxy.
 +
 +2015-11-26  Werner Koch  <wk at gnupg.org>
 +
 +	Protect connect system hook against blocking (nPth).
++	+ commit 18ca1593c62d62bb72b4e7e14347cd221c187138
 +	* src/assuan.h.in (ASSUAN_SYSTEM_NPTH_IMPL): Add wrapper for connect.
 +
 +	Do not use size_t with _assuan_read.
++	+ commit 9f24377f9f19983926233af8b475328bb7fe9e65
 +	* src/assuan-socket.c (do_readn): Use ssize_t for N.
 +
 +2015-11-23  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.4.1.
++	+ commit add6953a916dafa93ae152bffc937a93ab5b55f8
 +	* configure.ac: Bump LT version to C7/A7/R1.
 +
 +	Make socks5 test case a bit more robust.
++	+ commit 429ff31fe72db8afedaad3f2d089c9c3b5dae41e
 +	* tests/socks5.c (main): Call gpgrt_init.  Check for write and read
 +	errors.  Allow building of some parts even w/o getaddrinfo.
 +
 +2015-11-21  Werner Koch  <wk at gnupg.org>
 +
 +	Also try port 9150 in Tor mode.
++	+ commit 5b927b3dcffa2918e6b503c4907923aadbad0865
 +	* src/assuan-socket.c (TOR_PORT2): New.
 +	(_assuan_sock_wsa2errno): Map WSAECONNREFUSED.
 +	(socks5_connect): Fall back to TOR_PORT2.
 +
 +2015-11-21  Andre Heinecke  <aheinecke at intevation.de>
 +
 +	Fix windows build with mingw-w64 2.0.x.
++	+ commit cef28d96debcf94003f94f3ea2181e80aff0b665
 +	* src/assuan-socket.c: Add errno values not defined by mingw-w64 2.0
 +
 +2015-11-03  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.4.0.
++	+ commit 0beb1784e7b72e31ecec441ee0a8ba4cef63d853
 +	* configure.ac: Bump LT version to C7/A7/Ro.
 +
 +	w32: Use assuan_fd_t with the new socket functions.
++	+ commit 6034cc02e38cb947800f904f678c4ef5ff9c2050
 +	* src/assuan-socket.c (socks5_connect): Use assuan_fd_t instead of
 +	int.
 +	(_assuan_sock_connect): Ditto.
 +	(_assuan_sock_connect_byname): Ditto.
 +
 +	Use asprintf function from libgpg-error.
++	+ commit 7279c3ce9283723bd7f670051cd8a2087f62cd7f
 +	* configure.ac: Require libgpg-error 1.17.
 +	(vasprintf): Remove ac_replace.
 +	* src/assuan-defs.h [!HAVE_VASPRINTF]: Remove replace wrapper.
 +	* src/assuan-logging.c (_assuan_log_control_channel):
 +	(_assuan_log_control_channel): s/asprintf/gpgrt_asprintf/.
 +	* src/debug.c (_assuan_debug): s/vasprintf/gpgrt_vasprintf/.
 +	(_assuan_debug_begin): Ditto.
 +	(_assuan_debug_add): Ditto. s/asprintf/gpgrt_asprintf/.
 +
 +2015-10-26  Werner Koch  <wk at gnupg.org>
 +
 +	Tests: Cope with broken HTTP servers.
++	+ commit dda9c84bc67326a6d2bef1e5c45b5de8b67eeb40
 +	* tests/socks5.c (main): Use GET instead of HEAD
 +
 +	Support hostname based SOCKS5 connection.
++	+ commit 4061ac57ca84a1e0ed779096897a160d49b50c03
 +	* src/assuan.h.in (ASSUAN_SOCK_SOCKS): New.
 +	(ASSUAN_SOCK_TOR): New.
 +	(assuan_sock_connect_byname): New.
 +	* src/libassuan.def, src/libassuan.vers: Add that function.
 +
 +	* src/assuan-socket.c (socks5_connect): Add args socksport,
 +	credentials, hostname, and hostport.  Implement user/password
 +	authentication and domainname address type.  Change callers
 +	accordingly.
 +	(_assuan_sock_connect_byname): New.
 +	(assuan_sock_connect_byname): New.
 +
 +	* tests/socks5.c (main): Add options --byname, --user, and --pass.
 +
 +2015-10-18  Werner Koch  <wk at gnupg.org>
 +
 +	Support SOCKS5 for assuan_sock_connect.
++	+ commit 85ece74a11718338dcd76d6e43ea8100183df02f
 +	* src/assuan-socket.c: Include netinet/in.h and arpa/inet.h.
 +	(SOCKS_PORT, TOR_PORT): New constants.
 +	(tor_mode): New variable.
 +	(_assuan_sock_set_flag): Add flags "tor-mode" and "socks".
 +	(_assuan_sock_get_flag): Ditto.
 +	(do_readn, do_writen): Always build.
 +	(socks5_connect): New.
 +	(use_socks): New.
 +	(_assuan_sock_connect): Divert to socks5_connect if requested.
 +
 +	* tests/socks5.c: New.
 +	* configure.ac (AH_TOP): Define GPGRT_ENABLE_ES_MACROS.
 +	(AC_CHECK_FUNC): Check for getaddrinfo.
 +	* tests/Makefile.am (testtools): New. Add socks5.
 +	(AM_LDFLAGS): Add -no-install for easier debugging.
 +
 +2015-08-28  Werner Koch  <wk at gnupg.org>
 +
 +	Post release updates.
++	+ commit 3aec1981cfd0a7b29750965c065a45ad928e66dc
++
 +
 +	Release 2.3.0.
++	+ commit cdb1e6484d6f094f8e795bfec5b314ec524a90f8
 +	* configure.ac: Set LT version to C6/A6/R0.
 +
 +	Support Cygwin local sockets.
++	+ commit 6d4a8ee2a6c749eec70bd3ae804f21456e375727
 +	* src/assuan-socket.c (cygwin_fdtable, cygwin_fdtable_cs): New.
 +	(is_cygwin_fd, insert_cygwin_fd, delete_cygwin_fd): New.
 +	(assuan_sock_init) [W32]: Init the CS.
 +	(assuan_sock_deinit) [W32]: Deinit the CS.
 +	(read_port_and_nonce): Add arg cygwin and detect Cygwin socket files.
 +	(_assuan_sock_set_flag): Add "cygwin" flag.
 +	(_assuan_sock_get_flag): Ditto.
 +	(do_readn, do_writen): New.
 +	(_assuan_sock_bind): Create a Cygwin socket file depending on a socket
 +	flag.
 +	(_assuan_sock_connect): Handle the cygwin socket protocol.
 +	(_assuan_sock_check_nonce): Ditto.
 +
 +	Read up remaining lines in assuan_inquire after reaching MAXLEN.
++	+ commit 5a52404c704d0e99629a2db79dda17e3b95c9680
 +	* src/assuan-inquire.c (assuan_inquire): Clear return args on error.
 +	Read up remaining lines after MAXLEN has been hit.
 +
 +2015-08-25  Werner Koch  <wk at gnupg.org>
 +
 +	Add configure option --enable-build-timestamp.
++	+ commit d4bef26a49879761867ad6d57113341915db6acf
 +	* configure.ac (BUILD_TIMESTAMP): Set to "<none>" by default.
 +
 +2015-08-07  Werner Koch  <wk at gnupg.org>
 +
 +	Wipe the context before releasing as an extra safeguard.
++	+ commit b5cbf11ccece653819a782a3e8adbb785fe36d7d
 +	* src/assuan-defs.h (wipememory2, wipememory): New.  Taken from GnuPG.
 +	* src/assuan.c (assuan_release): Wipe the context.
 +
 +2015-06-30  Werner Koch  <wk at gnupg.org>
 +
 +	Add assuan_sock_set_flag and assuan_sock_get_flag.
++	+ commit 87def94c86d5272c23daf2b5ea446c5553aa1d90
 +	* src/assuan-socket.c (_assuan_sock_set_flag): New.
 +	(assuan_sock_set_flag): New.
 +	(_assuan_sock_get_flag, assuan_sock_get_flag): New.
 +	* src/assuan.h.in (assuan_sock_set_flag): New.
 +	(assuan_sock_get_flag): New.
 +	* src/libassuan.def: Add them.
 +	* src/libassuan.vers: Add them.
 +
 +2015-06-26  Werner Koch  <wk at gnupg.org>
 +
 +	Return GPG_ERR_SOURCE_ASSUAN on errors with no CTX.
++	+ commit cd8face27cc96cb0092c920e6e5bdee81a61c420
 +	* src/assuan-defs.h (_assuan_error): Use error source Assuan if no CTX
 +	is given.
 +
 +	Do not segv if NULL is passed for CTX in sendfd and receivefd.
++	+ commit 0da6afa864cfd68333941d6332d762c82928946c
 +	* src/assuan-buffer.c (assuan_sendfd): Check that CTX is not NULL.
 +	(assuan_receivefd): Ditto.
 +
 +2015-06-01  Neal H. Walfield  <neal at gnu.org>
 +
 +	Fix documentation for assuan_inquire.
++	+ commit c6b131949bb6c77392af2cbbbeb8ea1bed129b79
 +	* doc/assuan.texi (assuan_inquire): Fix and improve description of
 +	this function.
 +
 +2015-05-12  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.2.1.
++	+ commit 1f0896c86b0d6b02a71b90f122bf3fa90e75fb9d
++
 +
 +2015-05-07  Daniel Kahn Gillmor  <dkg at fifthhorseman.net>
 +
 +	clean up assuan documentation.
++	+ commit e6e51c067181a94d92353f5af2340e75a839c4e3
 +	* doc/assuan.texi: fix documentation
 +
 +2015-05-07  Neal H. Walfield  <neal at gnu.org>
 +
 +	Documentation cleanups.
++	+ commit ccd1811479e9d30dcd207a5031eda07958459fe2
++
 +
 +2015-01-30  Werner Koch  <wk at gnupg.org>
 +
 +	w32: Use -static-libgcc to avoid linking to libgcc_s_sjlj-1.dll.
++	+ commit 5cdc9c457f4e549491fa3f0db75119abd078b070
 +	* src/Makefile.am (extra_ltoptions): New.
 +	(libassuan_la_LDFLAGS): Use it.
 +
 +2015-01-28  Werner Koch  <wk at gnupg.org>
 +
 +	Require the use of automake 1.14.
++	+ commit 77dfed442db065ce0c9e0afb8a0f6fd3ae169a64
 +	* configure.ac (AM_INIT_AUTOMAKE): Add serial-tests.
 +	* src/Makefile.am (INCLUDES): Rename to AM_CPPFLAGS and remove the
 +	nonexistent ../include/.
 +
 +	w32: Fix assuan_connect_fd.
++	+ commit 91a98e2c812dccd73c57badd02da7642e0421c8e
 +	* src/assuan-socket-connect.c (assuan_socket_connect_fd): Map fd to
 +	assuan_fd_t.
 +
 +	Fix gcc warning about unused values.
++	+ commit 5e0a01fad54ca16a4cff2c0fc33bf16aac62f417
 +	* src/debug.h: Remove traling ", 0" expression part where not useful.
 +
 +2015-01-27  Werner Koch  <wk at gnupg.org>
 +
 +	Fix WSAEADDRINUSE EADDRINUSE mismatch.
++	+ commit ab5264b20f75a4dcc8baf2e672394d3a84c60870
 +	* src/w32-sock-nonce.inc.h (EADDRINUSE): Avoid redefining.
 +	* src/assuan-socket.c (_assuan_sock_bind): Set error to EADDRINUSE.
 +
 +2014-12-11  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.2.0.
++	+ commit 261498de39a10a00d5035f2481d33319c983875f
 +	* configure.ac: Set LT version to C5/A5/R0.
 +	(AM_INIT_AUTOMAKE): Add options.
 +	* Makefile.am (AUTOMAKE_OPTIONS): Remove.
 +
 +2014-11-28  Werner Koch  <wk at gnupg.org>
 +
 +	Do not allow LFs in the redirected name.
++	+ commit 0fce017100c5896cf9dc1fcbd4a39053651c3910
 +	* src/assuan-socket.c (eval_redirection): Stop parsing at the first
 +	LF.
 +
 +	Implement socket file redirection.
++	+ commit 1f99031cb55e88840d98dd71381b2bc2618406fc
 +	* configure.ac (AC_CHECK_FUNC): Check for stat.
 +	* src/assuan-socket.c (SUN_LEN): Add.
 +	(eval_redirection): New.
 +	(_assuan_sock_connect) [!W32]: Implement socket file redirection.
 +	(_assuan_sock_set_sockaddr_un): New.
 +	(assuan_sock_set_sockaddr_un): New.
 +
 +2014-11-07  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.1.3.
++	+ commit 3003c5d70febc8d4b6be9c95ca6deda7b033cabc
 +	* configure.ac: Set LT version to C4/A4/R3.
 +
 +	w32: Remove I/O delays due to our 100ms delay after an EAGAIN.
++	+ commit 1023508f210cd136992661c01b55b428de86a182
 +	* src/system-w32.c (__assuan_read): Retry using select.  Map
 +	WSAECONNRESET to EPIPE.
 +	(__assuan_write): Retry using select.
 +	* src/assuan-buffer.c (readline) [W32]:  Return EOF instead of EPIPE.
 +
 +2014-08-17  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.1.2.
++	+ commit a5d7f4999f4aa844d9446bd4524cb6a47219826c
 +	* configure.ac: Set LT version to C4/A4/R2.
 +
 +	Update build system.
++	+ commit 49a930a613b280fdd55e6d558a2ae414bdbbf66e
 +	* autogen.sh: Add --find-version stuff.  Taken from GnuPG.
 +	* configure.ac: Change accordingly
 +
 +	Fix possible segv in a call to _assuan_debug.
++	+ commit b6da2da96780ec270439eba5569a618cabe4da02
 +	* src/context.c (assuan_set_error): Do not pass NULL for %s in the
 +	trace function.
 +
 +2014-06-30  Werner Koch  <wk at gnupg.org>
 +
 +	Avoid a vasprintf call if tracing has not been enabled.
++	+ commit 134c045c7d1f93ce61f62193d33af8a6e8825543
 +	* src/debug.c (_assuan_debug): Check wether CAT want to be logged.
 +
 +2014-04-16  Werner Koch  <wk at gnupg.org>
 +
 +	Fix NULL deref when tracing is enabled and malloc fails.
++	+ commit 326a2918d645dd3d38dbc928e4452c66cb9757f1
 +	* src/debug.h (TRACE_ERR): Check CTX before a deref.
 +	* src/assuan-defs.h (_assuan_error): Turn into an inline function and
 +	check CTX before a deref.
 +
 +2014-01-10  Werner Koch  <wk at gnupg.org>
 +
 +	Use the generic autogen.sh script.
++	+ commit a5a6aea1ef063b9c6801b5f5ff482b7599ec4b2e
 +	* autogen.rc: New.
 +	* Makefile.am (EXTRA_DIST): Add it.
 +	* autogen.sh: Update from GnuPG.
 +
 +	Move helper scripts to build-aux.
++	+ commit a9c9aaca70c770cf5f9d05ce2417343490e45627
 +	* compile, config.guess, config.rpath, config.sub, depcomp, ltmain.sh
 +	* doc/mdate-sh, doc/texinfo.tex, install-sh, missing: Move to
 +	build-aux/.
 +	* Makefile.am (EXTRA_DIST): Remove config.rpath - it is implicitly
 +	distributed.
 +	* configure.ac (AC_CONFIG_AUX_DIR): New.
 +	(AM_SILENT_RULES): New.
 +
 +2013-12-03  Werner Koch  <wk at gnupg.org>
 +
 +	Add build support for ppc64le.
++	+ commit 46b6d97b4a396c16df53e82872c3cc772d427623
 +	* config.guess, config.sub: Update to latest version (2013-11-29).
 +	* m4/libtool.m4: Add patches for ppc64le.
 +
 +2013-06-24  Werner Koch  <wk at gnupg.org>
 +
 +	Release 2.1.1.
++	+ commit cf1e6f64c83194a42012cc786a0da2814be72883
 +	* configure.ac: Set LT version to C4/A4/R1.
 +
 +2013-06-19  Werner Koch  <wk at gnupg.org>
 +
 +	Changes to support W64.
++	+ commit 6ba18ca32c8669fa76cc10de3382f78212ca51a8
 +	* configure.ac (have_dosish_system): Set for W64.
 +	* src/assuan-defs.h (SOCKET2HANDLE, HANDLE2SOCKET): Add versions for
 +	W64.
 +	* src/assuan-handler.c (assuan_command_parse_fd) [W64]: Use strtoull
 +	to parse an FD.
 +
 +2013-06-17  Werner Koch  <wk at gnupg.org>
 +
 +	Add hack to have different names for 64 bit Windows DLLs.
++	+ commit f88eb9e98f491b503f46c7d995c9651f1e46b9e9
 +	* ltmain.sh: Prefix the SO number for W64 with a "6".
 +
 +	Support building for w64.
++	+ commit 61f5ca41e9d44bdd266cb4e91abe45fc5f2ddf3e
++
 +
 +2013-02-22  Werner Koch  <wk at gnupg.org>
 +
 +	Release version 2.1.0.
++	+ commit 7d227acff329a921f76cd4c391d7cbae40115672
 +	* configure.ac: Bump LT version to C4/A4/R0.
 +
 +	Add assuan_check_version and ASSUAN_VERSION_NUMBER.
++	+ commit ab2e01598446120dac09e49c63a5c8fc27a1bc32
 +	* src/assuan.c (assuan_check_version): New.
 +	(digitp, parse_version_number, parse_version_string)
 +	(compare_versions): New.  Taken from libksba.
 +	* configure.ac (VERSION_NUMBER): New ac_subst.
 +	* src/Makefile.am (assuan.h): Pass VERSION and VERSION_NUMBER to
 +	mkheader.
 +	* src/assuan.h.in (ASSUAN_VERSION, ASSUAN_VERSION_NUMBER): New macros.
 +	(assuan_check_version): New prototype.
 +	* src/libassuan.def, src/libassuan.vers: Add assuan_check_version.
 +	* src/mkheader.c (write_special, main): Support version and
 +	version_number.
 +	* tests/version.c: New.
 +	* tests/Makefile.am (TESTS): Add version.
 +
 +	w32: Fix header inclusion order for newer toolchain.
++	+ commit a4d64a06f9b80ed58cd8f9ca4a68393733c36b1f
 +	* src/system-w32.c: Do not include windows.h here.
 +
 +	Beautify the BUILD_TIMESTAMP and put it into the binary.
++	+ commit c6c80414201a1c58e24220ff9ea214c7164ccc8d
 +	* configure.ac (BUILD_TIMESTAMP): Use an ISO date string on all
 +	platforms and ac_define it.
 +	* src/sysutils.c (_assuan_sysutils_blurb): But revision and build date
 +	into the binary.
 +
 +	w32ce: Adjust to changed API and make it build again.
++	+ commit 3eec7a1f67dc1af2199d91ee017be26b24c389b6
 +	* src/system-w32ce.c (__assuan_write, __assuan_recvmsg)
 +	(__assuan_sendmsg, __assuan_waitpid): Make functions global.
 +	* tests/ce-server.c: Fix syntax error (s/#else/#endif)
 +
 +	w32: Allow overriding a toolchain via ~/.gnupg-autogen.rc.
++	+ commit e321c69006a12577e41408a2e1ea726a19b75c00
 +	* autogen.sh (build-w32): Include {amd64,w32_toolprefixes).
 +
 +	Modernize release version management.
++	+ commit 807d9cd2a27c62ab6c91b9ec1dd11675ec0382d6
 +	* configure.ac: Update to modern git version checking.  Remove svn
 +	support.
 +	* src/versioninfo.rc.in: Update copyright years.
 +
 +	Fix --with-{lib,}gpg-error-prefix.
++	+ commit 97ce28a430129ce997783c6196ccfe737f5b3007
 +	* m4/gpg-error.m4: Update from current gpg-error git.
 +
 +	Update helper scripts.
++	+ commit 0884e91324232b4d7dfdc8fad0dea9948519845b
 +	* compile, config.guess, config.rpath, config.sub, depcomp,
 +	* install-sh, mkinstalldirs: Update to current versions from gnulib.
 +
 +2013-02-07  Werner Koch  <wk at gnupg.org>
 +
 +	Make assuan_transact more robust against inquiry errors.
++	+ commit f17039b1ece8a8b2c56766f86b002536c7599699
 +	* src/client.c (assuan_transact): Send an CAN after an error return
 +	from the inquiry callback.
 +
 +2012-11-26  Ben Kibbey  <bjk at luxsci.net>
 +
 +	Check for getpeerucred().
++	+ commit cd96daf5a4ddb4a7e9e373220a7aaead0a97c8cf
 +	* configure.ac: check for getpeerucred() which (Open)Solaris/SunOS
 +	uses.
 +	* src/assuan-socket-server.c (accept_connection_bottom): make use
 +	of getpeerucred().
 +
 +2012-11-21  Ben Kibbey  <bjk at luxsci.net>
 +
 +	Support LOCAL_PEEREID (NetBSD) and getpeereid() (FreeBSD)
++	+ commit 76ea68c2a77cafe2424fe6bc97403c9d9a6b1e95
 +	* configure.ac: check for LOCAL_PEEREID and getpeereid().
 +	* src/assuan-socket-server.c (accept_connection_bottom): make use of
 +	LOCAL_PEEREID and getpeereid().
 +
 +2012-11-16  Werner Koch  <wk at gnupg.org>
 +
 +	Improve parsing of the GIT revision number.
++	+ commit 76ceeb3582bba138227bf76167b451ee017d38fc
 +	* configure.ac (mmm4_revision): Use git rev-parse.  Print version
 +	information at the end of a configure run.
 +
 +	Fix non-portable use of chmod in autogen.sh.
++	+ commit e6688eebc03fda7c8c81789c24ad13c06f648a9f
 +	* autogen.sh: Remove option -c from chmod.
 +
 +2012-06-05  W. Trevor King  <wking at tremily.us>
 +
 +	src/assuan-handler.c: add help strings for standard commands.
++	+ commit ca3f8e4b5bbe5549bd7804cf3bff36be21db1b82
++
 +
 +2012-04-20  W. Trevor King  <wking at tremily.us>
 +
 +	Update example code for pipe server.
++	+ commit 7cf99d04d864fb308159fb928057f59eb4e5a110
 +	* doc/assuan.texi: Fix server example code to use assuan_new.
 +
 +	Wrap reference to END with @code.
++	+ commit f40f8033b21bad8801b43676b486dab80c532397
 +	* doc/assuan.texi: Wrap reference to END with @code{}.
 +
 +2012-04-20  Werner Koch  <wk at gnupg.org>
 +
 +	State new contribution rules.
++	+ commit 861d19e028af70c7009640efc98eb485fff546d7
 +	* doc/DCO: New.
 +	* doc/HACKING: Doument new rules.  Give examples for commit logs.
 +
 +2012-01-25  Werner Koch  <wk at gnupg.org>
 +
 +	Make new functions also visible on non-W32.
++	+ commit 5c00c7cc2901a879927a5756e1bb7ecf49439ebc
 +	* src/system-posix.c (__assuan_read, __assuan_write, __assuan_recvmsg)
 +	(__assuan_sendmsg, __assuan_waitpid): Make functions global.
 +	* src/libassuan.vers: Add above functions.
 +	* configure.ac: Set version to 2.1.0-git.
 +
 +	Require gitlog-to-changelog to be installed.
++	+ commit dbfbc908121afd1cf3177249d9378fc787a9cff7
 +	* Makefile.am (GITLOG_TO_CHANGELOG): New.
 +	(gen-ChangeLog): Use installed version of gitlog-to-changelog.
 +	* build-aux/gitlog-to-changelog: Remove from repo.
 +
 +2012-01-24  Marcus Brinkmann  <marcus.brinkmann at ruhr-uni-bochum.de>
 +
 +	Fix npth port file handle use.
++	+ commit cef55142f2552538714f8296479f58a63d14a239
 +	* assuan.h.in (ASSUAN_SYSTEM_NPTH_IMPL): Use npth_unprotect and
 +	npth_protect with actual assuan functions instead of npth wrappers.
 +	* libassuan.def: Add __assuan_read, __assuan_write, __assuan_sendmsg,
 +	__assuan_recvmsg, __assuan_waitpid exports.
 +	* system-w32.c (__assuan_read, __assuan_write, __assuan_sendmsg,
 +	__assuan_recvmsg, __assuan_waitpid): Make non-static.
 +
 +2012-01-03  Marcus Brinkmann  <marcus.brinkmann at ruhr-uni-bochum.de>
 +
 +	Make assuan portable to NPTH.
++	+ commit e23e6f2bd49f415f4fdca013e4f61e1b17995a51
++
 +
 +2011-12-20  Werner Koch  <wk at gnupg.org>
 +
 +	Post release version number update.
++	+ commit 6ff1083166366b9d627e5e909f245cfb119b27a7
++
 +
 +	Release version 2.0.3.
++	+ commit 3ebe00d6854f110301a2742041d6d5c3e95d8e6b
 +	* configure.ac: Bump LT version to C3/A3/R0.
 +
 +	Update gitlog-to-changelog to support --tear-off.
++	+ commit 132c70fe697346a1c9f75d51572835f6d4951b3b
++
 +
 +2011-12-13  Werner Koch  <wk at gnupg.org>
 +
 +	Fix assuan_get_pid for pipe servers.
++	+ commit edbe8fdcea1a2c05999861f58d5f67d2e76610e0
 +	At some point in the past we introduced a regression in that the
 +	client of a pipe server received its own pid and not the pid of
 +	the server.
 +
 +	* src/assuan-pipe-connect.c (struct at_pipe_fork)
 +	(struct at_socketpair_fork): Add PARENT_PID.
 +	(at_pipe_fork_cb, at_socketpair_fork): Use PARENT_PID instead of getpid.
 +	(pipe_connect, socketpair_connect): Set PARENT_PID.
 +
 +	vasprintf.c: Improve test code.
++	+ commit ff9a8c2e64ea2345f2ebe85a527b7c43033ba53e
 +	* src/vasprintf.c (checkit): Set flag for a test failure.
 +	(main): Return error on any failure.
 +
 +2011-12-01  Werner Koch  <wk at gnupg.org>
 +
 +	Generate the ChangeLog from commit logs.
++	+ commit 165a57d29d2ac84159aa48b171b6098c629bc798
 +	* build-aux/gitlog-to-changelog: New script.  Taken from gnulib.
 +	* build-aux/git-log-fix: New file.
 +	* build-aux/git-log-footer: New file.
 +	* doc/HACKING: New file.
 +	* ChangeLog: New file.
 +	* Makefile.am (EXTRA_DIST): Add new files.
 +	(gen-ChangeLog): New.
 +	(dist-hook): Run gen-ChangeLog.
 +	* autogen.sh: Install commit-msg hook for git.
 +
 +	Rename all ChangeLog files to ChangeLog-2011.
 +
 +2011-12-01  Werner Koch  <wk at gnupg.org>
 +
 +	NB: Changes done before December 1st, 2011 are described in
 +	per directory files named ChangeLog-2011.  See doc/HACKING for
 +	details.
 +
 +        -----
 +	Copyright (C) 2011 Free Software Foundation, Inc.
 +
 +	Copying and distribution of this file and/or the original GIT
 +	commit log messages, with or without modification, are
 +	permitted provided the copyright notice and this notice are
 +	preserved.
diff --cc INSTALL
index 095b1eb,095b1eb..0000000
deleted file mode 100644,100644
--- a/INSTALL
+++ /dev/null
@@@ -1,231 -1,231 +1,0 @@@
--Installation Instructions
--*************************
--
--Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
--Software Foundation, Inc.
--
--This file is free documentation; the Free Software Foundation gives
--unlimited permission to copy, distribute and modify it.
--
--Basic Installation
--==================
--
--These are generic installation instructions.
--
--   The `configure' shell script attempts to guess correct values for
--various system-dependent variables used during compilation.  It uses
--those values to create a `Makefile' in each directory of the package.
--It may also create one or more `.h' files containing system-dependent
--definitions.  Finally, it creates a shell script `config.status' that
--you can run in the future to recreate the current configuration, and a
--file `config.log' containing compiler output (useful mainly for
--debugging `configure').
--
--   It can also use an optional file (typically called `config.cache'
--and enabled with `--cache-file=config.cache' or simply `-C') that saves
--the results of its tests to speed up reconfiguring.  (Caching is
--disabled by default to prevent problems with accidental use of stale
--cache files.)
--
--   If you need to do unusual things to compile the package, please try
--to figure out how `configure' could check whether to do them, and mail
--diffs or instructions to the address given in the `README' so they can
--be considered for the next release.  If you are using the cache, and at
--some point `config.cache' contains results you don't want to keep, you
--may remove or edit it.
--
--   The file `configure.ac' (or `configure.in') is used to create
--`configure' by a program called `autoconf'.  You only need
--`configure.ac' if you want to change it or regenerate `configure' using
--a newer version of `autoconf'.
--
--The simplest way to compile this package is:
--
--  1. `cd' to the directory containing the package's source code and type
--     `./configure' to configure the package for your system.  If you're
--     using `csh' on an old version of System V, you might need to type
--     `sh ./configure' instead to prevent `csh' from trying to execute
--     `configure' itself.
--
--     Running `configure' takes awhile.  While running, it prints some
--     messages telling which features it is checking for.
--
--  2. Type `make' to compile the package.
--
--  3. Optionally, type `make check' to run any self-tests that come with
--     the package.
--
--  4. Type `make install' to install the programs and any data files and
--     documentation.
--
--  5. You can remove the program binaries and object files from the
--     source code directory by typing `make clean'.  To also remove the
--     files that `configure' created (so you can compile the package for
--     a different kind of computer), type `make distclean'.  There is
--     also a `make maintainer-clean' target, but that is intended mainly
--     for the package's developers.  If you use it, you may have to get
--     all sorts of other programs in order to regenerate files that came
--     with the distribution.
--
--Compilers and Options
--=====================
--
--Some systems require unusual options for compilation or linking that the
--`configure' script does not know about.  Run `./configure --help' for
--details on some of the pertinent environment variables.
--
--   You can give `configure' initial values for configuration parameters
--by setting variables in the command line or in the environment.  Here
--is an example:
--
--     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
--
--   *Note Defining Variables::, for more details.
--
--Compiling For Multiple Architectures
--====================================
--
--You can compile the package for more than one kind of computer at the
--same time, by placing the object files for each architecture in their
--own directory.  To do this, you must use a version of `make' that
--supports the `VPATH' variable, such as GNU `make'.  `cd' to the
--directory where you want the object files and executables to go and run
--the `configure' script.  `configure' automatically checks for the
--source code in the directory that `configure' is in and in `..'.
--
--   If you have to use a `make' that does not support the `VPATH'
--variable, you have to compile the package for one architecture at a
--time in the source code directory.  After you have installed the
--package for one architecture, use `make distclean' before reconfiguring
--for another architecture.
--
--Installation Names
--==================
--
--By default, `make install' will install the package's files in
--`/usr/local/bin', `/usr/local/man', etc.  You can specify an
--installation prefix other than `/usr/local' by giving `configure' the
--option `--prefix=PREFIX'.
--
--   You can specify separate installation prefixes for
--architecture-specific files and architecture-independent files.  If you
--give `configure' the option `--exec-prefix=PREFIX', the package will
--use PREFIX as the prefix for installing programs and libraries.
--Documentation and other data files will still use the regular prefix.
--
--   In addition, if you use an unusual directory layout you can give
--options like `--bindir=DIR' to specify different values for particular
--kinds of files.  Run `configure --help' for a list of the directories
--you can set and what kinds of files go in them.
--
--   If the package supports it, you can cause programs to be installed
--with an extra prefix or suffix on their names by giving `configure' the
--option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
--
--Optional Features
--=================
--
--Some packages pay attention to `--enable-FEATURE' options to
--`configure', where FEATURE indicates an optional part of the package.
--They may also pay attention to `--with-PACKAGE' options, where PACKAGE
--is something like `gnu-as' or `x' (for the X Window System).  The
--`README' should mention any `--enable-' and `--with-' options that the
--package recognizes.
--
--   For packages that use the X Window System, `configure' can usually
--find the X include and library files automatically, but if it doesn't,
--you can use the `configure' options `--x-includes=DIR' and
--`--x-libraries=DIR' to specify their locations.
--
--Specifying the System Type
--==========================
--
--There may be some features `configure' cannot figure out automatically,
--but needs to determine by the type of machine the package will run on.
--Usually, assuming the package is built to be run on the _same_
--architectures, `configure' can figure that out, but if it prints a
--message saying it cannot guess the machine type, give it the
--`--build=TYPE' option.  TYPE can either be a short name for the system
--type, such as `sun4', or a canonical name which has the form:
--
--     CPU-COMPANY-SYSTEM
--
--where SYSTEM can have one of these forms:
--
--     OS KERNEL-OS
--
--   See the file `config.sub' for the possible values of each field.  If
--`config.sub' isn't included in this package, then this package doesn't
--need to know the machine type.
--
--   If you are _building_ compiler tools for cross-compiling, you should
--use the `--target=TYPE' option to select the type of system they will
--produce code for.
--
--   If you want to _use_ a cross compiler, that generates code for a
--platform different from the build platform, you should specify the
--"host" platform (i.e., that on which the generated programs will
--eventually be run) with `--host=TYPE'.
--
--Sharing Defaults
--================
--
--If you want to set default values for `configure' scripts to share, you
--can create a site shell script called `config.site' that gives default
--values for variables like `CC', `cache_file', and `prefix'.
--`configure' looks for `PREFIX/share/config.site' if it exists, then
--`PREFIX/etc/config.site' if it exists.  Or, you can set the
--`CONFIG_SITE' environment variable to the location of the site script.
--A warning: not all `configure' scripts look for a site script.
--
--Defining Variables
--==================
--
--Variables not defined in a site shell script can be set in the
--environment passed to `configure'.  However, some packages may run
--configure again during the build, and the customized values of these
--variables may be lost.  In order to avoid this problem, you should set
--them in the `configure' command line, using `VAR=value'.  For example:
--
--     ./configure CC=/usr/local2/bin/gcc
--
--will cause the specified gcc to be used as the C compiler (unless it is
--overridden in the site shell script).
--
--`configure' Invocation
--======================
--
--`configure' recognizes the following options to control how it operates.
--
--`--help'
--`-h'
--     Print a summary of the options to `configure', and exit.
--
--`--version'
--`-V'
--     Print the version of Autoconf used to generate the `configure'
--     script, and exit.
--
--`--cache-file=FILE'
--     Enable the cache: use and save the results of the tests in FILE,
--     traditionally `config.cache'.  FILE defaults to `/dev/null' to
--     disable caching.
--
--`--config-cache'
--`-C'
--     Alias for `--cache-file=config.cache'.
--
--`--quiet'
--`--silent'
--`-q'
--     Do not print messages saying which checks are being made.  To
--     suppress all normal output, redirect it to `/dev/null' (any error
--     messages will still be shown).
--
--`--srcdir=DIR'
--     Look for the package's source code in directory DIR.  Usually
--     `configure' can determine that directory automatically.
--
--`configure' also accepts some other, not widely useful, options.  Run
--`configure --help' for more details.
--
diff --cc VERSION
index 35cee72,0000000..79a6144
mode 100644,000000..100644
--- a/VERSION
+++ b/VERSION
@@@ -1,1 -1,0 +1,1 @@@
- 2.4.3
++2.4.4
diff --cc build-aux/compile
index 531136b,531136b..0000000
deleted file mode 100755,100755
--- a/build-aux/compile
+++ /dev/null
@@@ -1,347 -1,347 +1,0 @@@
--#! /bin/sh
--# Wrapper for compilers which do not understand '-c -o'.
--
--scriptversion=2012-10-14.11; # UTC
--
--# Copyright (C) 1999-2013 Free Software Foundation, Inc.
--# Written by Tom Tromey <tromey at cygnus.com>.
--#
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2, or (at your option)
--# any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
--# As a special exception to the GNU General Public License, if you
--# distribute this file as part of a program that contains a
--# configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--# This file is maintained in Automake, please report
--# bugs to <bug-automake at gnu.org> or send patches to
--# <automake-patches at gnu.org>.
--
--nl='
--'
--
--# We need space, tab and new line, in precisely that order.  Quoting is
--# there to prevent tools from complaining about whitespace usage.
--IFS=" ""	$nl"
--
--file_conv=
--
--# func_file_conv build_file lazy
--# Convert a $build file to $host form and store it in $file
--# Currently only supports Windows hosts. If the determined conversion
--# type is listed in (the comma separated) LAZY, no conversion will
--# take place.
--func_file_conv ()
--{
--  file=$1
--  case $file in
--    / | /[!/]*) # absolute file, and not a UNC file
--      if test -z "$file_conv"; then
--	# lazily determine how to convert abs files
--	case `uname -s` in
--	  MINGW*)
--	    file_conv=mingw
--	    ;;
--	  CYGWIN*)
--	    file_conv=cygwin
--	    ;;
--	  *)
--	    file_conv=wine
--	    ;;
--	esac
--      fi
--      case $file_conv/,$2, in
--	*,$file_conv,*)
--	  ;;
--	mingw/*)
--	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
--	  ;;
--	cygwin/*)
--	  file=`cygpath -m "$file" || echo "$file"`
--	  ;;
--	wine/*)
--	  file=`winepath -w "$file" || echo "$file"`
--	  ;;
--      esac
--      ;;
--  esac
--}
--
--# func_cl_dashL linkdir
--# Make cl look for libraries in LINKDIR
--func_cl_dashL ()
--{
--  func_file_conv "$1"
--  if test -z "$lib_path"; then
--    lib_path=$file
--  else
--    lib_path="$lib_path;$file"
--  fi
--  linker_opts="$linker_opts -LIBPATH:$file"
--}
--
--# func_cl_dashl library
--# Do a library search-path lookup for cl
--func_cl_dashl ()
--{
--  lib=$1
--  found=no
--  save_IFS=$IFS
--  IFS=';'
--  for dir in $lib_path $LIB
--  do
--    IFS=$save_IFS
--    if $shared && test -f "$dir/$lib.dll.lib"; then
--      found=yes
--      lib=$dir/$lib.dll.lib
--      break
--    fi
--    if test -f "$dir/$lib.lib"; then
--      found=yes
--      lib=$dir/$lib.lib
--      break
--    fi
--    if test -f "$dir/lib$lib.a"; then
--      found=yes
--      lib=$dir/lib$lib.a
--      break
--    fi
--  done
--  IFS=$save_IFS
--
--  if test "$found" != yes; then
--    lib=$lib.lib
--  fi
--}
--
--# func_cl_wrapper cl arg...
--# Adjust compile command to suit cl
--func_cl_wrapper ()
--{
--  # Assume a capable shell
--  lib_path=
--  shared=:
--  linker_opts=
--  for arg
--  do
--    if test -n "$eat"; then
--      eat=
--    else
--      case $1 in
--	-o)
--	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
--	  eat=1
--	  case $2 in
--	    *.o | *.[oO][bB][jJ])
--	      func_file_conv "$2"
--	      set x "$@" -Fo"$file"
--	      shift
--	      ;;
--	    *)
--	      func_file_conv "$2"
--	      set x "$@" -Fe"$file"
--	      shift
--	      ;;
--	  esac
--	  ;;
--	-I)
--	  eat=1
--	  func_file_conv "$2" mingw
--	  set x "$@" -I"$file"
--	  shift
--	  ;;
--	-I*)
--	  func_file_conv "${1#-I}" mingw
--	  set x "$@" -I"$file"
--	  shift
--	  ;;
--	-l)
--	  eat=1
--	  func_cl_dashl "$2"
--	  set x "$@" "$lib"
--	  shift
--	  ;;
--	-l*)
--	  func_cl_dashl "${1#-l}"
--	  set x "$@" "$lib"
--	  shift
--	  ;;
--	-L)
--	  eat=1
--	  func_cl_dashL "$2"
--	  ;;
--	-L*)
--	  func_cl_dashL "${1#-L}"
--	  ;;
--	-static)
--	  shared=false
--	  ;;
--	-Wl,*)
--	  arg=${1#-Wl,}
--	  save_ifs="$IFS"; IFS=','
--	  for flag in $arg; do
--	    IFS="$save_ifs"
--	    linker_opts="$linker_opts $flag"
--	  done
--	  IFS="$save_ifs"
--	  ;;
--	-Xlinker)
--	  eat=1
--	  linker_opts="$linker_opts $2"
--	  ;;
--	-*)
--	  set x "$@" "$1"
--	  shift
--	  ;;
--	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
--	  func_file_conv "$1"
--	  set x "$@" -Tp"$file"
--	  shift
--	  ;;
--	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
--	  func_file_conv "$1" mingw
--	  set x "$@" "$file"
--	  shift
--	  ;;
--	*)
--	  set x "$@" "$1"
--	  shift
--	  ;;
--      esac
--    fi
--    shift
--  done
--  if test -n "$linker_opts"; then
--    linker_opts="-link$linker_opts"
--  fi
--  exec "$@" $linker_opts
--  exit 1
--}
--
--eat=
--
--case $1 in
--  '')
--     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
--     exit 1;
--     ;;
--  -h | --h*)
--    cat <<\EOF
--Usage: compile [--help] [--version] PROGRAM [ARGS]
--
--Wrapper for compilers which do not understand '-c -o'.
--Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
--arguments, and rename the output as expected.
--
--If you are trying to build a whole package this is not the
--right script to run: please start by reading the file 'INSTALL'.
--
--Report bugs to <bug-automake at gnu.org>.
--EOF
--    exit $?
--    ;;
--  -v | --v*)
--    echo "compile $scriptversion"
--    exit $?
--    ;;
--  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
--    func_cl_wrapper "$@"      # Doesn't return...
--    ;;
--esac
--
--ofile=
--cfile=
--
--for arg
--do
--  if test -n "$eat"; then
--    eat=
--  else
--    case $1 in
--      -o)
--	# configure might choose to run compile as 'compile cc -o foo foo.c'.
--	# So we strip '-o arg' only if arg is an object.
--	eat=1
--	case $2 in
--	  *.o | *.obj)
--	    ofile=$2
--	    ;;
--	  *)
--	    set x "$@" -o "$2"
--	    shift
--	    ;;
--	esac
--	;;
--      *.c)
--	cfile=$1
--	set x "$@" "$1"
--	shift
--	;;
--      *)
--	set x "$@" "$1"
--	shift
--	;;
--    esac
--  fi
--  shift
--done
--
--if test -z "$ofile" || test -z "$cfile"; then
--  # If no '-o' option was seen then we might have been invoked from a
--  # pattern rule where we don't need one.  That is ok -- this is a
--  # normal compilation that the losing compiler can handle.  If no
--  # '.c' file was seen then we are probably linking.  That is also
--  # ok.
--  exec "$@"
--fi
--
--# Name of file we expect compiler to create.
--cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
--
--# Create the lock directory.
--# Note: use '[/\\:.-]' here to ensure that we don't use the same name
--# that we are using for the .o file.  Also, base the name on the expected
--# object file name, since that is what matters with a parallel build.
--lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
--while true; do
--  if mkdir "$lockdir" >/dev/null 2>&1; then
--    break
--  fi
--  sleep 1
--done
--# FIXME: race condition here if user kills between mkdir and trap.
--trap "rmdir '$lockdir'; exit 1" 1 2 15
--
--# Run the compile.
--"$@"
--ret=$?
--
--if test -f "$cofile"; then
--  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
--elif test -f "${cofile}bj"; then
--  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
--fi
--
--rmdir "$lockdir"
--exit $ret
--
--# Local Variables:
--# mode: shell-script
--# sh-indentation: 2
--# eval: (add-hook 'write-file-hooks 'time-stamp)
--# time-stamp-start: "scriptversion="
--# time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-time-zone: "UTC"
--# time-stamp-end: "; # UTC"
--# End:
diff --cc build-aux/depcomp
index 4ebd5b3,4ebd5b3..0000000
deleted file mode 100755,100755
--- a/build-aux/depcomp
+++ /dev/null
@@@ -1,791 -1,791 +1,0 @@@
--#! /bin/sh
--# depcomp - compile a program generating dependencies as side-effects
--
--scriptversion=2013-05-30.07; # UTC
--
--# Copyright (C) 1999-2013 Free Software Foundation, Inc.
--
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2, or (at your option)
--# any later version.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--
--# You should have received a copy of the GNU General Public License
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
--# As a special exception to the GNU General Public License, if you
--# distribute this file as part of a program that contains a
--# configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
--
--case $1 in
--  '')
--    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
--    exit 1;
--    ;;
--  -h | --h*)
--    cat <<\EOF
--Usage: depcomp [--help] [--version] PROGRAM [ARGS]
--
--Run PROGRAMS ARGS to compile a file, generating dependencies
--as side-effects.
--
--Environment variables:
--  depmode     Dependency tracking mode.
--  source      Source file read by 'PROGRAMS ARGS'.
--  object      Object file output by 'PROGRAMS ARGS'.
--  DEPDIR      directory where to store dependencies.
--  depfile     Dependency file to output.
--  tmpdepfile  Temporary file to use when outputting dependencies.
--  libtool     Whether libtool is used (yes/no).
--
--Report bugs to <bug-automake at gnu.org>.
--EOF
--    exit $?
--    ;;
--  -v | --v*)
--    echo "depcomp $scriptversion"
--    exit $?
--    ;;
--esac
--
--# Get the directory component of the given path, and save it in the
--# global variables '$dir'.  Note that this directory component will
--# be either empty or ending with a '/' character.  This is deliberate.
--set_dir_from ()
--{
--  case $1 in
--    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
--      *) dir=;;
--  esac
--}
--
--# Get the suffix-stripped basename of the given path, and save it the
--# global variable '$base'.
--set_base_from ()
--{
--  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
--}
--
--# If no dependency file was actually created by the compiler invocation,
--# we still have to create a dummy depfile, to avoid errors with the
--# Makefile "include basename.Plo" scheme.
--make_dummy_depfile ()
--{
--  echo "#dummy" > "$depfile"
--}
--
--# Factor out some common post-processing of the generated depfile.
--# Requires the auxiliary global variable '$tmpdepfile' to be set.
--aix_post_process_depfile ()
--{
--  # If the compiler actually managed to produce a dependency file,
--  # post-process it.
--  if test -f "$tmpdepfile"; then
--    # Each line is of the form 'foo.o: dependency.h'.
--    # Do two passes, one to just change these to
--    #   $object: dependency.h
--    # and one to simply output
--    #   dependency.h:
--    # which is needed to avoid the deleted-header problem.
--    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
--      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
--    } > "$depfile"
--    rm -f "$tmpdepfile"
--  else
--    make_dummy_depfile
--  fi
--}
--
--# A tabulation character.
--tab='	'
--# A newline character.
--nl='
--'
--# Character ranges might be problematic outside the C locale.
--# These definitions help.
--upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
--lower=abcdefghijklmnopqrstuvwxyz
--digits=0123456789
--alpha=${upper}${lower}
--
--if test -z "$depmode" || test -z "$source" || test -z "$object"; then
--  echo "depcomp: Variables source, object and depmode must be set" 1>&2
--  exit 1
--fi
--
--# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
--depfile=${depfile-`echo "$object" |
--  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
--tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
--
--rm -f "$tmpdepfile"
--
--# Avoid interferences from the environment.
--gccflag= dashmflag=
--
--# Some modes work just like other modes, but use different flags.  We
--# parameterize here, but still list the modes in the big case below,
--# to make depend.m4 easier to write.  Note that we *cannot* use a case
--# here, because this file can only contain one case statement.
--if test "$depmode" = hp; then
--  # HP compiler uses -M and no extra arg.
--  gccflag=-M
--  depmode=gcc
--fi
--
--if test "$depmode" = dashXmstdout; then
--  # This is just like dashmstdout with a different argument.
--  dashmflag=-xM
--  depmode=dashmstdout
--fi
--
--cygpath_u="cygpath -u -f -"
--if test "$depmode" = msvcmsys; then
--  # This is just like msvisualcpp but w/o cygpath translation.
--  # Just convert the backslash-escaped backslashes to single forward
--  # slashes to satisfy depend.m4
--  cygpath_u='sed s,\\\\,/,g'
--  depmode=msvisualcpp
--fi
--
--if test "$depmode" = msvc7msys; then
--  # This is just like msvc7 but w/o cygpath translation.
--  # Just convert the backslash-escaped backslashes to single forward
--  # slashes to satisfy depend.m4
--  cygpath_u='sed s,\\\\,/,g'
--  depmode=msvc7
--fi
--
--if test "$depmode" = xlc; then
--  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
--  gccflag=-qmakedep=gcc,-MF
--  depmode=gcc
--fi
--
--case "$depmode" in
--gcc3)
--## gcc 3 implements dependency tracking that does exactly what
--## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
--## it if -MD -MP comes after the -MF stuff.  Hmm.
--## Unfortunately, FreeBSD c89 acceptance of flags depends upon
--## the command line argument order; so add the flags where they
--## appear in depend2.am.  Note that the slowdown incurred here
--## affects only configure: in makefiles, %FASTDEP% shortcuts this.
--  for arg
--  do
--    case $arg in
--    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
--    *)  set fnord "$@" "$arg" ;;
--    esac
--    shift # fnord
--    shift # $arg
--  done
--  "$@"
--  stat=$?
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile"
--    exit $stat
--  fi
--  mv "$tmpdepfile" "$depfile"
--  ;;
--
--gcc)
--## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
--## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
--## (see the conditional assignment to $gccflag above).
--## There are various ways to get dependency output from gcc.  Here's
--## why we pick this rather obscure method:
--## - Don't want to use -MD because we'd like the dependencies to end
--##   up in a subdir.  Having to rename by hand is ugly.
--##   (We might end up doing this anyway to support other compilers.)
--## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
--##   -MM, not -M (despite what the docs say).  Also, it might not be
--##   supported by the other compilers which use the 'gcc' depmode.
--## - Using -M directly means running the compiler twice (even worse
--##   than renaming).
--  if test -z "$gccflag"; then
--    gccflag=-MD,
--  fi
--  "$@" -Wp,"$gccflag$tmpdepfile"
--  stat=$?
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile"
--    exit $stat
--  fi
--  rm -f "$depfile"
--  echo "$object : \\" > "$depfile"
--  # The second -e expression handles DOS-style file names with drive
--  # letters.
--  sed -e 's/^[^:]*: / /' \
--      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
--## This next piece of magic avoids the "deleted header file" problem.
--## The problem is that when a header file which appears in a .P file
--## is deleted, the dependency causes make to die (because there is
--## typically no way to rebuild the header).  We avoid this by adding
--## dummy dependencies for each header file.  Too bad gcc doesn't do
--## this for us directly.
--## Some versions of gcc put a space before the ':'.  On the theory
--## that the space means something, we add a space to the output as
--## well.  hp depmode also adds that space, but also prefixes the VPATH
--## to the object.  Take care to not repeat it in the output.
--## Some versions of the HPUX 10.20 sed can't process this invocation
--## correctly.  Breaking it into two sed invocations is a workaround.
--  tr ' ' "$nl" < "$tmpdepfile" \
--    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
--    | sed -e 's/$/ :/' >> "$depfile"
--  rm -f "$tmpdepfile"
--  ;;
--
--hp)
--  # This case exists only to let depend.m4 do its work.  It works by
--  # looking at the text of this script.  This case will never be run,
--  # since it is checked for above.
--  exit 1
--  ;;
--
--sgi)
--  if test "$libtool" = yes; then
--    "$@" "-Wp,-MDupdate,$tmpdepfile"
--  else
--    "$@" -MDupdate "$tmpdepfile"
--  fi
--  stat=$?
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile"
--    exit $stat
--  fi
--  rm -f "$depfile"
--
--  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
--    echo "$object : \\" > "$depfile"
--    # Clip off the initial element (the dependent).  Don't try to be
--    # clever and replace this with sed code, as IRIX sed won't handle
--    # lines with more than a fixed number of characters (4096 in
--    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
--    # the IRIX cc adds comments like '#:fec' to the end of the
--    # dependency line.
--    tr ' ' "$nl" < "$tmpdepfile" \
--      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
--      | tr "$nl" ' ' >> "$depfile"
--    echo >> "$depfile"
--    # The second pass generates a dummy entry for each header file.
--    tr ' ' "$nl" < "$tmpdepfile" \
--      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
--      >> "$depfile"
--  else
--    make_dummy_depfile
--  fi
--  rm -f "$tmpdepfile"
--  ;;
--
--xlc)
--  # This case exists only to let depend.m4 do its work.  It works by
--  # looking at the text of this script.  This case will never be run,
--  # since it is checked for above.
--  exit 1
--  ;;
--
--aix)
--  # The C for AIX Compiler uses -M and outputs the dependencies
--  # in a .u file.  In older versions, this file always lives in the
--  # current directory.  Also, the AIX compiler puts '$object:' at the
--  # start of each line; $object doesn't have directory information.
--  # Version 6 uses the directory in both cases.
--  set_dir_from "$object"
--  set_base_from "$object"
--  if test "$libtool" = yes; then
--    tmpdepfile1=$dir$base.u
--    tmpdepfile2=$base.u
--    tmpdepfile3=$dir.libs/$base.u
--    "$@" -Wc,-M
--  else
--    tmpdepfile1=$dir$base.u
--    tmpdepfile2=$dir$base.u
--    tmpdepfile3=$dir$base.u
--    "$@" -M
--  fi
--  stat=$?
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
--    exit $stat
--  fi
--
--  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
--  do
--    test -f "$tmpdepfile" && break
--  done
--  aix_post_process_depfile
--  ;;
--
--tcc)
--  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
--  # FIXME: That version still under development at the moment of writing.
--  #        Make that this statement remains true also for stable, released
--  #        versions.
--  # It will wrap lines (doesn't matter whether long or short) with a
--  # trailing '\', as in:
--  #
--  #   foo.o : \
--  #    foo.c \
--  #    foo.h \
--  #
--  # It will put a trailing '\' even on the last line, and will use leading
--  # spaces rather than leading tabs (at least since its commit 0394caf7
--  # "Emit spaces for -MD").
--  "$@" -MD -MF "$tmpdepfile"
--  stat=$?
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile"
--    exit $stat
--  fi
--  rm -f "$depfile"
--  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
--  # We have to change lines of the first kind to '$object: \'.
--  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
--  # And for each line of the second kind, we have to emit a 'dep.h:'
--  # dummy dependency, to avoid the deleted-header problem.
--  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
--  rm -f "$tmpdepfile"
--  ;;
--
--## The order of this option in the case statement is important, since the
--## shell code in configure will try each of these formats in the order
--## listed in this file.  A plain '-MD' option would be understood by many
--## compilers, so we must ensure this comes after the gcc and icc options.
--pgcc)
--  # Portland's C compiler understands '-MD'.
--  # Will always output deps to 'file.d' where file is the root name of the
--  # source file under compilation, even if file resides in a subdirectory.
--  # The object file name does not affect the name of the '.d' file.
--  # pgcc 10.2 will output
--  #    foo.o: sub/foo.c sub/foo.h
--  # and will wrap long lines using '\' :
--  #    foo.o: sub/foo.c ... \
--  #     sub/foo.h ... \
--  #     ...
--  set_dir_from "$object"
--  # Use the source, not the object, to determine the base name, since
--  # that's sadly what pgcc will do too.
--  set_base_from "$source"
--  tmpdepfile=$base.d
--
--  # For projects that build the same source file twice into different object
--  # files, the pgcc approach of using the *source* file root name can cause
--  # problems in parallel builds.  Use a locking strategy to avoid stomping on
--  # the same $tmpdepfile.
--  lockdir=$base.d-lock
--  trap "
--    echo '$0: caught signal, cleaning up...' >&2
--    rmdir '$lockdir'
--    exit 1
--  " 1 2 13 15
--  numtries=100
--  i=$numtries
--  while test $i -gt 0; do
--    # mkdir is a portable test-and-set.
--    if mkdir "$lockdir" 2>/dev/null; then
--      # This process acquired the lock.
--      "$@" -MD
--      stat=$?
--      # Release the lock.
--      rmdir "$lockdir"
--      break
--    else
--      # If the lock is being held by a different process, wait
--      # until the winning process is done or we timeout.
--      while test -d "$lockdir" && test $i -gt 0; do
--        sleep 1
--        i=`expr $i - 1`
--      done
--    fi
--    i=`expr $i - 1`
--  done
--  trap - 1 2 13 15
--  if test $i -le 0; then
--    echo "$0: failed to acquire lock after $numtries attempts" >&2
--    echo "$0: check lockdir '$lockdir'" >&2
--    exit 1
--  fi
--
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile"
--    exit $stat
--  fi
--  rm -f "$depfile"
--  # Each line is of the form `foo.o: dependent.h',
--  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
--  # Do two passes, one to just change these to
--  # `$object: dependent.h' and one to simply `dependent.h:'.
--  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
--  # Some versions of the HPUX 10.20 sed can't process this invocation
--  # correctly.  Breaking it into two sed invocations is a workaround.
--  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
--    | sed -e 's/$/ :/' >> "$depfile"
--  rm -f "$tmpdepfile"
--  ;;
--
--hp2)
--  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
--  # compilers, which have integrated preprocessors.  The correct option
--  # to use with these is +Maked; it writes dependencies to a file named
--  # 'foo.d', which lands next to the object file, wherever that
--  # happens to be.
--  # Much of this is similar to the tru64 case; see comments there.
--  set_dir_from  "$object"
--  set_base_from "$object"
--  if test "$libtool" = yes; then
--    tmpdepfile1=$dir$base.d
--    tmpdepfile2=$dir.libs/$base.d
--    "$@" -Wc,+Maked
--  else
--    tmpdepfile1=$dir$base.d
--    tmpdepfile2=$dir$base.d
--    "$@" +Maked
--  fi
--  stat=$?
--  if test $stat -ne 0; then
--     rm -f "$tmpdepfile1" "$tmpdepfile2"
--     exit $stat
--  fi
--
--  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
--  do
--    test -f "$tmpdepfile" && break
--  done
--  if test -f "$tmpdepfile"; then
--    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
--    # Add 'dependent.h:' lines.
--    sed -ne '2,${
--               s/^ *//
--               s/ \\*$//
--               s/$/:/
--               p
--             }' "$tmpdepfile" >> "$depfile"
--  else
--    make_dummy_depfile
--  fi
--  rm -f "$tmpdepfile" "$tmpdepfile2"
--  ;;
--
--tru64)
--  # The Tru64 compiler uses -MD to generate dependencies as a side
--  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
--  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
--  # dependencies in 'foo.d' instead, so we check for that too.
--  # Subdirectories are respected.
--  set_dir_from  "$object"
--  set_base_from "$object"
--
--  if test "$libtool" = yes; then
--    # Libtool generates 2 separate objects for the 2 libraries.  These
--    # two compilations output dependencies in $dir.libs/$base.o.d and
--    # in $dir$base.o.d.  We have to check for both files, because
--    # one of the two compilations can be disabled.  We should prefer
--    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
--    # automatically cleaned when .libs/ is deleted, while ignoring
--    # the former would cause a distcleancheck panic.
--    tmpdepfile1=$dir$base.o.d          # libtool 1.5
--    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
--    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
--    "$@" -Wc,-MD
--  else
--    tmpdepfile1=$dir$base.d
--    tmpdepfile2=$dir$base.d
--    tmpdepfile3=$dir$base.d
--    "$@" -MD
--  fi
--
--  stat=$?
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
--    exit $stat
--  fi
--
--  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
--  do
--    test -f "$tmpdepfile" && break
--  done
--  # Same post-processing that is required for AIX mode.
--  aix_post_process_depfile
--  ;;
--
--msvc7)
--  if test "$libtool" = yes; then
--    showIncludes=-Wc,-showIncludes
--  else
--    showIncludes=-showIncludes
--  fi
--  "$@" $showIncludes > "$tmpdepfile"
--  stat=$?
--  grep -v '^Note: including file: ' "$tmpdepfile"
--  if test $stat -ne 0; then
--    rm -f "$tmpdepfile"
--    exit $stat
--  fi
--  rm -f "$depfile"
--  echo "$object : \\" > "$depfile"
--  # The first sed program below extracts the file names and escapes
--  # backslashes for cygpath.  The second sed program outputs the file
--  # name when reading, but also accumulates all include files in the
--  # hold buffer in order to output them again at the end.  This only
--  # works with sed implementations that can handle large buffers.
--  sed < "$tmpdepfile" -n '
--/^Note: including file:  *\(.*\)/ {
--  s//\1/
--  s/\\/\\\\/g
--  p
--}' | $cygpath_u | sort -u | sed -n '
--s/ /\\ /g
--s/\(.*\)/'"$tab"'\1 \\/p
--s/.\(.*\) \\/\1:/
--H
--$ {
--  s/.*/'"$tab"'/
--  G
--  p
--}' >> "$depfile"
--  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
--  rm -f "$tmpdepfile"
--  ;;
--
--msvc7msys)
--  # This case exists only to let depend.m4 do its work.  It works by
--  # looking at the text of this script.  This case will never be run,
--  # since it is checked for above.
--  exit 1
--  ;;
--
--#nosideeffect)
--  # This comment above is used by automake to tell side-effect
--  # dependency tracking mechanisms from slower ones.
--
--dashmstdout)
--  # Important note: in order to support this mode, a compiler *must*
--  # always write the preprocessed file to stdout, regardless of -o.
--  "$@" || exit $?
--
--  # Remove the call to Libtool.
--  if test "$libtool" = yes; then
--    while test "X$1" != 'X--mode=compile'; do
--      shift
--    done
--    shift
--  fi
--
--  # Remove '-o $object'.
--  IFS=" "
--  for arg
--  do
--    case $arg in
--    -o)
--      shift
--      ;;
--    $object)
--      shift
--      ;;
--    *)
--      set fnord "$@" "$arg"
--      shift # fnord
--      shift # $arg
--      ;;
--    esac
--  done
--
--  test -z "$dashmflag" && dashmflag=-M
--  # Require at least two characters before searching for ':'
--  # in the target name.  This is to cope with DOS-style filenames:
--  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
--  "$@" $dashmflag |
--    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
--  rm -f "$depfile"
--  cat < "$tmpdepfile" > "$depfile"
--  # Some versions of the HPUX 10.20 sed can't process this sed invocation
--  # correctly.  Breaking it into two sed invocations is a workaround.
--  tr ' ' "$nl" < "$tmpdepfile" \
--    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
--    | sed -e 's/$/ :/' >> "$depfile"
--  rm -f "$tmpdepfile"
--  ;;
--
--dashXmstdout)
--  # This case only exists to satisfy depend.m4.  It is never actually
--  # run, as this mode is specially recognized in the preamble.
--  exit 1
--  ;;
--
--makedepend)
--  "$@" || exit $?
--  # Remove any Libtool call
--  if test "$libtool" = yes; then
--    while test "X$1" != 'X--mode=compile'; do
--      shift
--    done
--    shift
--  fi
--  # X makedepend
--  shift
--  cleared=no eat=no
--  for arg
--  do
--    case $cleared in
--    no)
--      set ""; shift
--      cleared=yes ;;
--    esac
--    if test $eat = yes; then
--      eat=no
--      continue
--    fi
--    case "$arg" in
--    -D*|-I*)
--      set fnord "$@" "$arg"; shift ;;
--    # Strip any option that makedepend may not understand.  Remove
--    # the object too, otherwise makedepend will parse it as a source file.
--    -arch)
--      eat=yes ;;
--    -*|$object)
--      ;;
--    *)
--      set fnord "$@" "$arg"; shift ;;
--    esac
--  done
--  obj_suffix=`echo "$object" | sed 's/^.*\././'`
--  touch "$tmpdepfile"
--  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
--  rm -f "$depfile"
--  # makedepend may prepend the VPATH from the source file name to the object.
--  # No need to regex-escape $object, excess matching of '.' is harmless.
--  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
--  # Some versions of the HPUX 10.20 sed can't process the last invocation
--  # correctly.  Breaking it into two sed invocations is a workaround.
--  sed '1,2d' "$tmpdepfile" \
--    | tr ' ' "$nl" \
--    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
--    | sed -e 's/$/ :/' >> "$depfile"
--  rm -f "$tmpdepfile" "$tmpdepfile".bak
--  ;;
--
--cpp)
--  # Important note: in order to support this mode, a compiler *must*
--  # always write the preprocessed file to stdout.
--  "$@" || exit $?
--
--  # Remove the call to Libtool.
--  if test "$libtool" = yes; then
--    while test "X$1" != 'X--mode=compile'; do
--      shift
--    done
--    shift
--  fi
--
--  # Remove '-o $object'.
--  IFS=" "
--  for arg
--  do
--    case $arg in
--    -o)
--      shift
--      ;;
--    $object)
--      shift
--      ;;
--    *)
--      set fnord "$@" "$arg"
--      shift # fnord
--      shift # $arg
--      ;;
--    esac
--  done
--
--  "$@" -E \
--    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
--             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
--    | sed '$ s: \\$::' > "$tmpdepfile"
--  rm -f "$depfile"
--  echo "$object : \\" > "$depfile"
--  cat < "$tmpdepfile" >> "$depfile"
--  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
--  rm -f "$tmpdepfile"
--  ;;
--
--msvisualcpp)
--  # Important note: in order to support this mode, a compiler *must*
--  # always write the preprocessed file to stdout.
--  "$@" || exit $?
--
--  # Remove the call to Libtool.
--  if test "$libtool" = yes; then
--    while test "X$1" != 'X--mode=compile'; do
--      shift
--    done
--    shift
--  fi
--
--  IFS=" "
--  for arg
--  do
--    case "$arg" in
--    -o)
--      shift
--      ;;
--    $object)
--      shift
--      ;;
--    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
--        set fnord "$@"
--        shift
--        shift
--        ;;
--    *)
--        set fnord "$@" "$arg"
--        shift
--        shift
--        ;;
--    esac
--  done
--  "$@" -E 2>/dev/null |
--  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
--  rm -f "$depfile"
--  echo "$object : \\" > "$depfile"
--  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
--  echo "$tab" >> "$depfile"
--  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
--  rm -f "$tmpdepfile"
--  ;;
--
--msvcmsys)
--  # This case exists only to let depend.m4 do its work.  It works by
--  # looking at the text of this script.  This case will never be run,
--  # since it is checked for above.
--  exit 1
--  ;;
--
--none)
--  exec "$@"
--  ;;
--
--*)
--  echo "Unknown depmode $depmode" 1>&2
--  exit 1
--  ;;
--esac
--
--exit 0
--
--# Local Variables:
--# mode: shell-script
--# sh-indentation: 2
--# eval: (add-hook 'write-file-hooks 'time-stamp)
--# time-stamp-start: "scriptversion="
--# time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-time-zone: "UTC"
--# time-stamp-end: "; # UTC"
--# End:
diff --cc build-aux/install-sh
index 377bb86,377bb86..0000000
deleted file mode 100755,100755
--- a/build-aux/install-sh
+++ /dev/null
@@@ -1,527 -1,527 +1,0 @@@
--#!/bin/sh
--# install - install a program, script, or datafile
--
--scriptversion=2011-11-20.07; # UTC
--
--# This originates from X11R5 (mit/util/scripts/install.sh), which was
--# later released in X11R6 (xc/config/util/install.sh) with the
--# following copyright and license.
--#
--# Copyright (C) 1994 X Consortium
--#
--# Permission is hereby granted, free of charge, to any person obtaining a copy
--# of this software and associated documentation files (the "Software"), to
--# deal in the Software without restriction, including without limitation the
--# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
--# sell copies of the Software, and to permit persons to whom the Software is
--# furnished to do so, subject to the following conditions:
--#
--# The above copyright notice and this permission notice shall be included in
--# all copies or substantial portions of the Software.
--#
--# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
--# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
--# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
--# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
--# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--#
--# Except as contained in this notice, the name of the X Consortium shall not
--# be used in advertising or otherwise to promote the sale, use or other deal-
--# ings in this Software without prior written authorization from the X Consor-
--# tium.
--#
--#
--# FSF changes to this file are in the public domain.
--#
--# Calling this script install-sh is preferred over install.sh, to prevent
--# 'make' implicit rules from creating a file called install from it
--# when there is no Makefile.
--#
--# This script is compatible with the BSD install script, but was written
--# from scratch.
--
--nl='
--'
--IFS=" ""	$nl"
--
--# set DOITPROG to echo to test this script
--
--# Don't use :- since 4.3BSD and earlier shells don't like it.
--doit=${DOITPROG-}
--if test -z "$doit"; then
--  doit_exec=exec
--else
--  doit_exec=$doit
--fi
--
--# Put in absolute file names if you don't have them in your path;
--# or use environment vars.
--
--chgrpprog=${CHGRPPROG-chgrp}
--chmodprog=${CHMODPROG-chmod}
--chownprog=${CHOWNPROG-chown}
--cmpprog=${CMPPROG-cmp}
--cpprog=${CPPROG-cp}
--mkdirprog=${MKDIRPROG-mkdir}
--mvprog=${MVPROG-mv}
--rmprog=${RMPROG-rm}
--stripprog=${STRIPPROG-strip}
--
--posix_glob='?'
--initialize_posix_glob='
--  test "$posix_glob" != "?" || {
--    if (set -f) 2>/dev/null; then
--      posix_glob=
--    else
--      posix_glob=:
--    fi
--  }
--'
--
--posix_mkdir=
--
--# Desired mode of installed file.
--mode=0755
--
--chgrpcmd=
--chmodcmd=$chmodprog
--chowncmd=
--mvcmd=$mvprog
--rmcmd="$rmprog -f"
--stripcmd=
--
--src=
--dst=
--dir_arg=
--dst_arg=
--
--copy_on_change=false
--no_target_directory=
--
--usage="\
--Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
--   or: $0 [OPTION]... SRCFILES... DIRECTORY
--   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
--   or: $0 [OPTION]... -d DIRECTORIES...
--
--In the 1st form, copy SRCFILE to DSTFILE.
--In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
--In the 4th, create DIRECTORIES.
--
--Options:
--     --help     display this help and exit.
--     --version  display version info and exit.
--
--  -c            (ignored)
--  -C            install only if different (preserve the last data modification time)
--  -d            create directories instead of installing files.
--  -g GROUP      $chgrpprog installed files to GROUP.
--  -m MODE       $chmodprog installed files to MODE.
--  -o USER       $chownprog installed files to USER.
--  -s            $stripprog installed files.
--  -t DIRECTORY  install into DIRECTORY.
--  -T            report an error if DSTFILE is a directory.
--
--Environment variables override the default commands:
--  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
--  RMPROG STRIPPROG
--"
--
--while test $# -ne 0; do
--  case $1 in
--    -c) ;;
--
--    -C) copy_on_change=true;;
--
--    -d) dir_arg=true;;
--
--    -g) chgrpcmd="$chgrpprog $2"
--	shift;;
--
--    --help) echo "$usage"; exit $?;;
--
--    -m) mode=$2
--	case $mode in
--	  *' '* | *'	'* | *'
--'*	  | *'*'* | *'?'* | *'['*)
--	    echo "$0: invalid mode: $mode" >&2
--	    exit 1;;
--	esac
--	shift;;
--
--    -o) chowncmd="$chownprog $2"
--	shift;;
--
--    -s) stripcmd=$stripprog;;
--
--    -t) dst_arg=$2
--	# Protect names problematic for 'test' and other utilities.
--	case $dst_arg in
--	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
--	esac
--	shift;;
--
--    -T) no_target_directory=true;;
--
--    --version) echo "$0 $scriptversion"; exit $?;;
--
--    --)	shift
--	break;;
--
--    -*)	echo "$0: invalid option: $1" >&2
--	exit 1;;
--
--    *)  break;;
--  esac
--  shift
--done
--
--if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
--  # When -d is used, all remaining arguments are directories to create.
--  # When -t is used, the destination is already specified.
--  # Otherwise, the last argument is the destination.  Remove it from $@.
--  for arg
--  do
--    if test -n "$dst_arg"; then
--      # $@ is not empty: it contains at least $arg.
--      set fnord "$@" "$dst_arg"
--      shift # fnord
--    fi
--    shift # arg
--    dst_arg=$arg
--    # Protect names problematic for 'test' and other utilities.
--    case $dst_arg in
--      -* | [=\(\)!]) dst_arg=./$dst_arg;;
--    esac
--  done
--fi
--
--if test $# -eq 0; then
--  if test -z "$dir_arg"; then
--    echo "$0: no input file specified." >&2
--    exit 1
--  fi
--  # It's OK to call 'install-sh -d' without argument.
--  # This can happen when creating conditional directories.
--  exit 0
--fi
--
--if test -z "$dir_arg"; then
--  do_exit='(exit $ret); exit $ret'
--  trap "ret=129; $do_exit" 1
--  trap "ret=130; $do_exit" 2
--  trap "ret=141; $do_exit" 13
--  trap "ret=143; $do_exit" 15
--
--  # Set umask so as not to create temps with too-generous modes.
--  # However, 'strip' requires both read and write access to temps.
--  case $mode in
--    # Optimize common cases.
--    *644) cp_umask=133;;
--    *755) cp_umask=22;;
--
--    *[0-7])
--      if test -z "$stripcmd"; then
--	u_plus_rw=
--      else
--	u_plus_rw='% 200'
--      fi
--      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
--    *)
--      if test -z "$stripcmd"; then
--	u_plus_rw=
--      else
--	u_plus_rw=,u+rw
--      fi
--      cp_umask=$mode$u_plus_rw;;
--  esac
--fi
--
--for src
--do
--  # Protect names problematic for 'test' and other utilities.
--  case $src in
--    -* | [=\(\)!]) src=./$src;;
--  esac
--
--  if test -n "$dir_arg"; then
--    dst=$src
--    dstdir=$dst
--    test -d "$dstdir"
--    dstdir_status=$?
--  else
--
--    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
--    # might cause directories to be created, which would be especially bad
--    # if $src (and thus $dsttmp) contains '*'.
--    if test ! -f "$src" && test ! -d "$src"; then
--      echo "$0: $src does not exist." >&2
--      exit 1
--    fi
--
--    if test -z "$dst_arg"; then
--      echo "$0: no destination specified." >&2
--      exit 1
--    fi
--    dst=$dst_arg
--
--    # If destination is a directory, append the input filename; won't work
--    # if double slashes aren't ignored.
--    if test -d "$dst"; then
--      if test -n "$no_target_directory"; then
--	echo "$0: $dst_arg: Is a directory" >&2
--	exit 1
--      fi
--      dstdir=$dst
--      dst=$dstdir/`basename "$src"`
--      dstdir_status=0
--    else
--      # Prefer dirname, but fall back on a substitute if dirname fails.
--      dstdir=`
--	(dirname "$dst") 2>/dev/null ||
--	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
--	     X"$dst" : 'X\(//\)[^/]' \| \
--	     X"$dst" : 'X\(//\)$' \| \
--	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
--	echo X"$dst" |
--	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
--		   s//\1/
--		   q
--		 }
--		 /^X\(\/\/\)[^/].*/{
--		   s//\1/
--		   q
--		 }
--		 /^X\(\/\/\)$/{
--		   s//\1/
--		   q
--		 }
--		 /^X\(\/\).*/{
--		   s//\1/
--		   q
--		 }
--		 s/.*/./; q'
--      `
--
--      test -d "$dstdir"
--      dstdir_status=$?
--    fi
--  fi
--
--  obsolete_mkdir_used=false
--
--  if test $dstdir_status != 0; then
--    case $posix_mkdir in
--      '')
--	# Create intermediate dirs using mode 755 as modified by the umask.
--	# This is like FreeBSD 'install' as of 1997-10-28.
--	umask=`umask`
--	case $stripcmd.$umask in
--	  # Optimize common cases.
--	  *[2367][2367]) mkdir_umask=$umask;;
--	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
--
--	  *[0-7])
--	    mkdir_umask=`expr $umask + 22 \
--	      - $umask % 100 % 40 + $umask % 20 \
--	      - $umask % 10 % 4 + $umask % 2
--	    `;;
--	  *) mkdir_umask=$umask,go-w;;
--	esac
--
--	# With -d, create the new directory with the user-specified mode.
--	# Otherwise, rely on $mkdir_umask.
--	if test -n "$dir_arg"; then
--	  mkdir_mode=-m$mode
--	else
--	  mkdir_mode=
--	fi
--
--	posix_mkdir=false
--	case $umask in
--	  *[123567][0-7][0-7])
--	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
--	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
--	    ;;
--	  *)
--	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
--	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
--
--	    if (umask $mkdir_umask &&
--		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
--	    then
--	      if test -z "$dir_arg" || {
--		   # Check for POSIX incompatibilities with -m.
--		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
--		   # other-writable bit of parent directory when it shouldn't.
--		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
--		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
--		   case $ls_ld_tmpdir in
--		     d????-?r-*) different_mode=700;;
--		     d????-?--*) different_mode=755;;
--		     *) false;;
--		   esac &&
--		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
--		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
--		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
--		   }
--		 }
--	      then posix_mkdir=:
--	      fi
--	      rmdir "$tmpdir/d" "$tmpdir"
--	    else
--	      # Remove any dirs left behind by ancient mkdir implementations.
--	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
--	    fi
--	    trap '' 0;;
--	esac;;
--    esac
--
--    if
--      $posix_mkdir && (
--	umask $mkdir_umask &&
--	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
--      )
--    then :
--    else
--
--      # The umask is ridiculous, or mkdir does not conform to POSIX,
--      # or it failed possibly due to a race condition.  Create the
--      # directory the slow way, step by step, checking for races as we go.
--
--      case $dstdir in
--	/*) prefix='/';;
--	[-=\(\)!]*) prefix='./';;
--	*)  prefix='';;
--      esac
--
--      eval "$initialize_posix_glob"
--
--      oIFS=$IFS
--      IFS=/
--      $posix_glob set -f
--      set fnord $dstdir
--      shift
--      $posix_glob set +f
--      IFS=$oIFS
--
--      prefixes=
--
--      for d
--      do
--	test X"$d" = X && continue
--
--	prefix=$prefix$d
--	if test -d "$prefix"; then
--	  prefixes=
--	else
--	  if $posix_mkdir; then
--	    (umask=$mkdir_umask &&
--	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
--	    # Don't fail if two instances are running concurrently.
--	    test -d "$prefix" || exit 1
--	  else
--	    case $prefix in
--	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
--	      *) qprefix=$prefix;;
--	    esac
--	    prefixes="$prefixes '$qprefix'"
--	  fi
--	fi
--	prefix=$prefix/
--      done
--
--      if test -n "$prefixes"; then
--	# Don't fail if two instances are running concurrently.
--	(umask $mkdir_umask &&
--	 eval "\$doit_exec \$mkdirprog $prefixes") ||
--	  test -d "$dstdir" || exit 1
--	obsolete_mkdir_used=true
--      fi
--    fi
--  fi
--
--  if test -n "$dir_arg"; then
--    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
--    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
--    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
--      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
--  else
--
--    # Make a couple of temp file names in the proper directory.
--    dsttmp=$dstdir/_inst.$$_
--    rmtmp=$dstdir/_rm.$$_
--
--    # Trap to clean up those temp files at exit.
--    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
--
--    # Copy the file name to the temp name.
--    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
--
--    # and set any options; do chmod last to preserve setuid bits.
--    #
--    # If any of these fail, we abort the whole thing.  If we want to
--    # ignore errors from any of these, just make sure not to ignore
--    # errors from the above "$doit $cpprog $src $dsttmp" command.
--    #
--    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
--    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
--    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
--    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
--
--    # If -C, don't bother to copy if it wouldn't change the file.
--    if $copy_on_change &&
--       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
--       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
--
--       eval "$initialize_posix_glob" &&
--       $posix_glob set -f &&
--       set X $old && old=:$2:$4:$5:$6 &&
--       set X $new && new=:$2:$4:$5:$6 &&
--       $posix_glob set +f &&
--
--       test "$old" = "$new" &&
--       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
--    then
--      rm -f "$dsttmp"
--    else
--      # Rename the file to the real destination.
--      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
--
--      # The rename failed, perhaps because mv can't rename something else
--      # to itself, or perhaps because mv is so ancient that it does not
--      # support -f.
--      {
--	# Now remove or move aside any old file at destination location.
--	# We try this two ways since rm can't unlink itself on some
--	# systems and the destination file might be busy for other
--	# reasons.  In this case, the final cleanup might fail but the new
--	# file should still install successfully.
--	{
--	  test ! -f "$dst" ||
--	  $doit $rmcmd -f "$dst" 2>/dev/null ||
--	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
--	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
--	  } ||
--	  { echo "$0: cannot unlink or rename $dst" >&2
--	    (exit 1); exit 1
--	  }
--	} &&
--
--	# Now rename the file to the real destination.
--	$doit $mvcmd "$dsttmp" "$dst"
--      }
--    fi || exit 1
--
--    trap '' 0
--  fi
--done
--
--# Local variables:
--# eval: (add-hook 'write-file-hooks 'time-stamp)
--# time-stamp-start: "scriptversion="
--# time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-time-zone: "UTC"
--# time-stamp-end: "; # UTC"
--# End:
diff --cc build-aux/ltmain.sh
index f8c3614,f8c3614..0000000
deleted file mode 100755,100755
--- a/build-aux/ltmain.sh
+++ /dev/null
@@@ -1,9677 -1,9677 +1,0 @@@
--
--# libtool (GNU libtool) 2.4.2
--# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
--
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
--# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
--# This is free software; see the source for copying conditions.  There is NO
--# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
--
--# GNU Libtool is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2 of the License, or
--# (at your option) any later version.
--#
--# As a special exception to the GNU General Public License,
--# if you distribute this file as part of a program or library that
--# is built using GNU Libtool, you may include this file under the
--# same distribution terms that you use for the rest of that program.
--#
--# GNU Libtool is distributed in the hope that it will be useful, but
--# WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--# General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with GNU Libtool; see the file COPYING.  If not, a copy
--# can be downloaded from http://www.gnu.org/licenses/gpl.html,
--# or obtained by writing to the Free Software Foundation, Inc.,
--# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--
--# Usage: $progname [OPTION]... [MODE-ARG]...
--#
--# Provide generalized library-building support services.
--#
--#       --config             show all configuration variables
--#       --debug              enable verbose shell tracing
--#   -n, --dry-run            display commands without modifying any files
--#       --features           display basic configuration information and exit
--#       --mode=MODE          use operation mode MODE
--#       --preserve-dup-deps  don't remove duplicate dependency libraries
--#       --quiet, --silent    don't print informational messages
--#       --no-quiet, --no-silent
--#                            print informational messages (default)
--#       --no-warn            don't display warning messages
--#       --tag=TAG            use configuration variables from tag TAG
--#   -v, --verbose            print more informational messages than default
--#       --no-verbose         don't print the extra informational messages
--#       --version            print version information
--#   -h, --help, --help-all   print short, long, or detailed help message
--#
--# MODE must be one of the following:
--#
--#         clean              remove files from the build directory
--#         compile            compile a source file into a libtool object
--#         execute            automatically set library path, then run a program
--#         finish             complete the installation of libtool libraries
--#         install            install libraries or executables
--#         link               create a library or an executable
--#         uninstall          remove libraries from an installed directory
--#
--# MODE-ARGS vary depending on the MODE.  When passed as first option,
--# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
--# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
--#
--# When reporting a bug, please describe a test case to reproduce it and
--# include the following information:
--#
--#         host-triplet:	$host
--#         shell:		$SHELL
--#         compiler:		$LTCC
--#         compiler flags:		$LTCFLAGS
--#         linker:		$LD (gnu? $with_gnu_ld)
--#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1
--#         automake:	$automake_version
--#         autoconf:	$autoconf_version
--#
--# Report bugs to <bug-libtool at gnu.org>.
--# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
--# General help using GNU software: <http://www.gnu.org/gethelp/>.
--
--PROGRAM=libtool
--PACKAGE=libtool
--VERSION="2.4.2 Debian-2.4.2-1"
--TIMESTAMP=""
--package_revision=1.3337
--
--# Be Bourne compatible
--if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
--  emulate sh
--  NULLCMD=:
--  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
--  # is contrary to our usage.  Disable this feature.
--  alias -g '${1+"$@"}'='"$@"'
--  setopt NO_GLOB_SUBST
--else
--  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
--fi
--BIN_SH=xpg4; export BIN_SH # for Tru64
--DUALCASE=1; export DUALCASE # for MKS sh
--
--# A function that is used when there is no print builtin or printf.
--func_fallback_echo ()
--{
--  eval 'cat <<_LTECHO_EOF
--$1
--_LTECHO_EOF'
--}
--
--# NLS nuisances: We save the old values to restore during execute mode.
--lt_user_locale=
--lt_safe_locale=
--for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
--do
--  eval "if test \"\${$lt_var+set}\" = set; then
--          save_$lt_var=\$$lt_var
--          $lt_var=C
--	  export $lt_var
--	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
--	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
--	fi"
--done
--LC_ALL=C
--LANGUAGE=C
--export LANGUAGE LC_ALL
--
--$lt_unset CDPATH
--
--
--# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
--# is ksh but when the shell is invoked as "sh" and the current value of
--# the _XPG environment variable is not equal to 1 (one), the special
--# positional parameter $0, within a function call, is the name of the
--# function.
--progpath="$0"
--
--
--
--: ${CP="cp -f"}
--test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
--: ${MAKE="make"}
--: ${MKDIR="mkdir"}
--: ${MV="mv -f"}
--: ${RM="rm -f"}
--: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
--: ${Xsed="$SED -e 1s/^X//"}
--
--# Global variables:
--EXIT_SUCCESS=0
--EXIT_FAILURE=1
--EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
--EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
--
--exit_status=$EXIT_SUCCESS
--
--# Make sure IFS has a sensible default
--lt_nl='
--'
--IFS=" 	$lt_nl"
--
--dirname="s,/[^/]*$,,"
--basename="s,^.*/,,"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
--    if test "X$func_dirname_result" = "X${1}"; then
--      func_dirname_result="${3}"
--    else
--      func_dirname_result="$func_dirname_result${2}"
--    fi
--} # func_dirname may be replaced by extended shell implementation
--
--
--# func_basename file
--func_basename ()
--{
--    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--} # func_basename may be replaced by extended shell implementation
--
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--#   dirname:  Compute the dirname of FILE.  If nonempty,
--#             add APPEND to the result, otherwise set result
--#             to NONDIR_REPLACEMENT.
--#             value returned in "$func_dirname_result"
--#   basename: Compute filename of FILE.
--#             value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
--    # Extract subdirectory from the argument.
--    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
--    if test "X$func_dirname_result" = "X${1}"; then
--      func_dirname_result="${3}"
--    else
--      func_dirname_result="$func_dirname_result${2}"
--    fi
--    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
--} # func_dirname_and_basename may be replaced by extended shell implementation
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
--    case ${2} in
--      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
--      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
--    esac
--} # func_stripname may be replaced by extended shell implementation
--
--
--# These SED scripts presuppose an absolute path with a trailing slash.
--pathcar='s,^/\([^/]*\).*$,\1,'
--pathcdr='s,^/[^/]*,,'
--removedotparts=':dotsl
--		s@/\./@/@g
--		t dotsl
--		s,/\.$,/,'
--collapseslashes='s@/\{1,\}@/@g'
--finalslash='s,/*$,/,'
--
--# func_normal_abspath PATH
--# Remove doubled-up and trailing slashes, "." path components,
--# and cancel out any ".." path components in PATH after making
--# it an absolute path.
--#             value returned in "$func_normal_abspath_result"
--func_normal_abspath ()
--{
--  # Start from root dir and reassemble the path.
--  func_normal_abspath_result=
--  func_normal_abspath_tpath=$1
--  func_normal_abspath_altnamespace=
--  case $func_normal_abspath_tpath in
--    "")
--      # Empty path, that just means $cwd.
--      func_stripname '' '/' "`pwd`"
--      func_normal_abspath_result=$func_stripname_result
--      return
--    ;;
--    # The next three entries are used to spot a run of precisely
--    # two leading slashes without using negated character classes;
--    # we take advantage of case's first-match behaviour.
--    ///*)
--      # Unusual form of absolute path, do nothing.
--    ;;
--    //*)
--      # Not necessarily an ordinary path; POSIX reserves leading '//'
--      # and for example Cygwin uses it to access remote file shares
--      # over CIFS/SMB, so we conserve a leading double slash if found.
--      func_normal_abspath_altnamespace=/
--    ;;
--    /*)
--      # Absolute path, do nothing.
--    ;;
--    *)
--      # Relative path, prepend $cwd.
--      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
--    ;;
--  esac
--  # Cancel out all the simple stuff to save iterations.  We also want
--  # the path to end with a slash for ease of parsing, so make sure
--  # there is one (and only one) here.
--  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
--        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
--  while :; do
--    # Processed it all yet?
--    if test "$func_normal_abspath_tpath" = / ; then
--      # If we ascended to the root using ".." the result may be empty now.
--      if test -z "$func_normal_abspath_result" ; then
--        func_normal_abspath_result=/
--      fi
--      break
--    fi
--    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
--        -e "$pathcar"`
--    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
--        -e "$pathcdr"`
--    # Figure out what to do with it
--    case $func_normal_abspath_tcomponent in
--      "")
--        # Trailing empty path component, ignore it.
--      ;;
--      ..)
--        # Parent dir; strip last assembled component from result.
--        func_dirname "$func_normal_abspath_result"
--        func_normal_abspath_result=$func_dirname_result
--      ;;
--      *)
--        # Actual path component, append it.
--        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
--      ;;
--    esac
--  done
--  # Restore leading double-slash if one was found on entry.
--  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
--}
--
--# func_relative_path SRCDIR DSTDIR
--# generates a relative path from SRCDIR to DSTDIR, with a trailing
--# slash if non-empty, suitable for immediately appending a filename
--# without needing to append a separator.
--#             value returned in "$func_relative_path_result"
--func_relative_path ()
--{
--  func_relative_path_result=
--  func_normal_abspath "$1"
--  func_relative_path_tlibdir=$func_normal_abspath_result
--  func_normal_abspath "$2"
--  func_relative_path_tbindir=$func_normal_abspath_result
--
--  # Ascend the tree starting from libdir
--  while :; do
--    # check if we have found a prefix of bindir
--    case $func_relative_path_tbindir in
--      $func_relative_path_tlibdir)
--        # found an exact match
--        func_relative_path_tcancelled=
--        break
--        ;;
--      $func_relative_path_tlibdir*)
--        # found a matching prefix
--        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
--        func_relative_path_tcancelled=$func_stripname_result
--        if test -z "$func_relative_path_result"; then
--          func_relative_path_result=.
--        fi
--        break
--        ;;
--      *)
--        func_dirname $func_relative_path_tlibdir
--        func_relative_path_tlibdir=${func_dirname_result}
--        if test "x$func_relative_path_tlibdir" = x ; then
--          # Have to descend all the way to the root!
--          func_relative_path_result=../$func_relative_path_result
--          func_relative_path_tcancelled=$func_relative_path_tbindir
--          break
--        fi
--        func_relative_path_result=../$func_relative_path_result
--        ;;
--    esac
--  done
--
--  # Now calculate path; take care to avoid doubling-up slashes.
--  func_stripname '' '/' "$func_relative_path_result"
--  func_relative_path_result=$func_stripname_result
--  func_stripname '/' '/' "$func_relative_path_tcancelled"
--  if test "x$func_stripname_result" != x ; then
--    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
--  fi
--
--  # Normalisation. If bindir is libdir, return empty string,
--  # else relative path ending with a slash; either way, target
--  # file name can be directly appended.
--  if test ! -z "$func_relative_path_result"; then
--    func_stripname './' '' "$func_relative_path_result/"
--    func_relative_path_result=$func_stripname_result
--  fi
--}
--
--# The name of this program:
--func_dirname_and_basename "$progpath"
--progname=$func_basename_result
--
--# Make sure we have an absolute path for reexecution:
--case $progpath in
--  [\\/]*|[A-Za-z]:\\*) ;;
--  *[\\/]*)
--     progdir=$func_dirname_result
--     progdir=`cd "$progdir" && pwd`
--     progpath="$progdir/$progname"
--     ;;
--  *)
--     save_IFS="$IFS"
--     IFS=${PATH_SEPARATOR-:}
--     for progdir in $PATH; do
--       IFS="$save_IFS"
--       test -x "$progdir/$progname" && break
--     done
--     IFS="$save_IFS"
--     test -n "$progdir" || progdir=`pwd`
--     progpath="$progdir/$progname"
--     ;;
--esac
--
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed="${SED}"' -e 1s/^X//'
--sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\(["`\\]\)/\\\1/g'
--
--# Sed substitution that turns a string into a regex matching for the
--# string literally.
--sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
--
--# Sed substitution that converts a w32 file name or path
--# which contains forward slashes, into one that contains
--# (escaped) backslashes.  A very naive implementation.
--lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
--
--# Sed substitution to remove simple comments and empty
--# lines from a Windows .def file.
--sed_uncomment_deffile='/^;/d; /^[ ]*$/d'
--
--# Re-`\' parameter expansions in output of double_quote_subst that were
--# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
--# in input to double_quote_subst, that '$' was protected from expansion.
--# Since each input `\' is now two `\'s, look for any number of runs of
--# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
--bs='\\'
--bs2='\\\\'
--bs4='\\\\\\\\'
--dollar='\$'
--sed_double_backslash="\
--  s/$bs4/&\\
--/g
--  s/^$bs2$dollar/$bs&/
--  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
--  s/\n//g"
--
--# Standard options:
--opt_dry_run=false
--opt_help=false
--opt_quiet=false
--opt_verbose=false
--opt_warning=:
--
--# func_echo arg...
--# Echo program name prefixed message, along with the current mode
--# name if it has been set yet.
--func_echo ()
--{
--    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
--}
--
--# func_verbose arg...
--# Echo program name prefixed message in verbose mode only.
--func_verbose ()
--{
--    $opt_verbose && func_echo ${1+"$@"}
--
--    # A bug in bash halts the script if the last line of a function
--    # fails when set -e is in force, so we need another command to
--    # work around that:
--    :
--}
--
--# func_echo_all arg...
--# Invoke $ECHO with all args, space-separated.
--func_echo_all ()
--{
--    $ECHO "$*"
--}
--
--# func_error arg...
--# Echo program name prefixed message to standard error.
--func_error ()
--{
--    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
--}
--
--# func_warning arg...
--# Echo program name prefixed warning message to standard error.
--func_warning ()
--{
--    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
--
--    # bash bug again:
--    :
--}
--
--# func_fatal_error arg...
--# Echo program name prefixed message to standard error, and exit.
--func_fatal_error ()
--{
--    func_error ${1+"$@"}
--    exit $EXIT_FAILURE
--}
--
--# func_fatal_help arg...
--# Echo program name prefixed message to standard error, followed by
--# a help hint, and exit.
--func_fatal_help ()
--{
--    func_error ${1+"$@"}
--    func_fatal_error "$help"
--}
--help="Try \`$progname --help' for more information."  ## default
--
--
--# func_grep expression filename
--# Check whether EXPRESSION matches any line of FILENAME, without output.
--func_grep ()
--{
--    $GREP "$1" "$2" >/dev/null 2>&1
--}
--
--
--# func_mkdir_p directory-path
--# Make sure the entire path to DIRECTORY-PATH is available.
--func_mkdir_p ()
--{
--    my_directory_path="$1"
--    my_dir_list=
--
--    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
--
--      # Protect directory names starting with `-'
--      case $my_directory_path in
--        -*) my_directory_path="./$my_directory_path" ;;
--      esac
--
--      # While some portion of DIR does not yet exist...
--      while test ! -d "$my_directory_path"; do
--        # ...make a list in topmost first order.  Use a colon delimited
--	# list incase some portion of path contains whitespace.
--        my_dir_list="$my_directory_path:$my_dir_list"
--
--        # If the last portion added has no slash in it, the list is done
--        case $my_directory_path in */*) ;; *) break ;; esac
--
--        # ...otherwise throw away the child directory and loop
--        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
--      done
--      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
--
--      save_mkdir_p_IFS="$IFS"; IFS=':'
--      for my_dir in $my_dir_list; do
--	IFS="$save_mkdir_p_IFS"
--        # mkdir can fail with a `File exist' error if two processes
--        # try to create one of the directories concurrently.  Don't
--        # stop in that case!
--        $MKDIR "$my_dir" 2>/dev/null || :
--      done
--      IFS="$save_mkdir_p_IFS"
--
--      # Bail out if we (or some other process) failed to create a directory.
--      test -d "$my_directory_path" || \
--        func_fatal_error "Failed to create \`$1'"
--    fi
--}
--
--
--# func_mktempdir [string]
--# Make a temporary directory that won't clash with other running
--# libtool processes, and avoids race conditions if possible.  If
--# given, STRING is the basename for that directory.
--func_mktempdir ()
--{
--    my_template="${TMPDIR-/tmp}/${1-$progname}"
--
--    if test "$opt_dry_run" = ":"; then
--      # Return a directory name, but don't create it in dry-run mode
--      my_tmpdir="${my_template}-$$"
--    else
--
--      # If mktemp works, use that first and foremost
--      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
--
--      if test ! -d "$my_tmpdir"; then
--        # Failing that, at least try and use $RANDOM to avoid a race
--        my_tmpdir="${my_template}-${RANDOM-0}$$"
--
--        save_mktempdir_umask=`umask`
--        umask 0077
--        $MKDIR "$my_tmpdir"
--        umask $save_mktempdir_umask
--      fi
--
--      # If we're not in dry-run mode, bomb out on failure
--      test -d "$my_tmpdir" || \
--        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
--    fi
--
--    $ECHO "$my_tmpdir"
--}
--
--
--# func_quote_for_eval arg
--# Aesthetically quote ARG to be evaled later.
--# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
--# is double-quoted, suitable for a subsequent eval, whereas
--# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
--# which are still active within double quotes backslashified.
--func_quote_for_eval ()
--{
--    case $1 in
--      *[\\\`\"\$]*)
--	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
--      *)
--        func_quote_for_eval_unquoted_result="$1" ;;
--    esac
--
--    case $func_quote_for_eval_unquoted_result in
--      # Double-quote args containing shell metacharacters to delay
--      # word splitting, command substitution and and variable
--      # expansion for a subsequent eval.
--      # Many Bourne shells cannot handle close brackets correctly
--      # in scan sets, so we specify it separately.
--      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
--        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
--        ;;
--      *)
--        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
--    esac
--}
--
--
--# func_quote_for_expand arg
--# Aesthetically quote ARG to be evaled later; same as above,
--# but do not quote variable references.
--func_quote_for_expand ()
--{
--    case $1 in
--      *[\\\`\"]*)
--	my_arg=`$ECHO "$1" | $SED \
--	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
--      *)
--        my_arg="$1" ;;
--    esac
--
--    case $my_arg in
--      # Double-quote args containing shell metacharacters to delay
--      # word splitting and command substitution for a subsequent eval.
--      # Many Bourne shells cannot handle close brackets correctly
--      # in scan sets, so we specify it separately.
--      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
--        my_arg="\"$my_arg\""
--        ;;
--    esac
--
--    func_quote_for_expand_result="$my_arg"
--}
--
--
--# func_show_eval cmd [fail_exp]
--# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
--# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
--# is given, then evaluate it.
--func_show_eval ()
--{
--    my_cmd="$1"
--    my_fail_exp="${2-:}"
--
--    ${opt_silent-false} || {
--      func_quote_for_expand "$my_cmd"
--      eval "func_echo $func_quote_for_expand_result"
--    }
--
--    if ${opt_dry_run-false}; then :; else
--      eval "$my_cmd"
--      my_status=$?
--      if test "$my_status" -eq 0; then :; else
--	eval "(exit $my_status); $my_fail_exp"
--      fi
--    fi
--}
--
--
--# func_show_eval_locale cmd [fail_exp]
--# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
--# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
--# is given, then evaluate it.  Use the saved locale for evaluation.
--func_show_eval_locale ()
--{
--    my_cmd="$1"
--    my_fail_exp="${2-:}"
--
--    ${opt_silent-false} || {
--      func_quote_for_expand "$my_cmd"
--      eval "func_echo $func_quote_for_expand_result"
--    }
--
--    if ${opt_dry_run-false}; then :; else
--      eval "$lt_user_locale
--	    $my_cmd"
--      my_status=$?
--      eval "$lt_safe_locale"
--      if test "$my_status" -eq 0; then :; else
--	eval "(exit $my_status); $my_fail_exp"
--      fi
--    fi
--}
--
--# func_tr_sh
--# Turn $1 into a string suitable for a shell variable name.
--# Result is stored in $func_tr_sh_result.  All characters
--# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
--# if $1 begins with a digit, a '_' is prepended as well.
--func_tr_sh ()
--{
--  case $1 in
--  [0-9]* | *[!a-zA-Z0-9_]*)
--    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
--    ;;
--  * )
--    func_tr_sh_result=$1
--    ;;
--  esac
--}
--
--
--# func_version
--# Echo version message to standard output and exit.
--func_version ()
--{
--    $opt_debug
--
--    $SED -n '/(C)/!b go
--	:more
--	/\./!{
--	  N
--	  s/\n# / /
--	  b more
--	}
--	:go
--	/^# '$PROGRAM' (GNU /,/# warranty; / {
--        s/^# //
--	s/^# *$//
--        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
--        p
--     }' < "$progpath"
--     exit $?
--}
--
--# func_usage
--# Echo short help message to standard output and exit.
--func_usage ()
--{
--    $opt_debug
--
--    $SED -n '/^# Usage:/,/^#  *.*--help/ {
--        s/^# //
--	s/^# *$//
--	s/\$progname/'$progname'/
--	p
--    }' < "$progpath"
--    echo
--    $ECHO "run \`$progname --help | more' for full usage"
--    exit $?
--}
--
--# func_help [NOEXIT]
--# Echo long help message to standard output and exit,
--# unless 'noexit' is passed as argument.
--func_help ()
--{
--    $opt_debug
--
--    $SED -n '/^# Usage:/,/# Report bugs to/ {
--	:print
--        s/^# //
--	s/^# *$//
--	s*\$progname*'$progname'*
--	s*\$host*'"$host"'*
--	s*\$SHELL*'"$SHELL"'*
--	s*\$LTCC*'"$LTCC"'*
--	s*\$LTCFLAGS*'"$LTCFLAGS"'*
--	s*\$LD*'"$LD"'*
--	s/\$with_gnu_ld/'"$with_gnu_ld"'/
--	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
--	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
--	p
--	d
--     }
--     /^# .* home page:/b print
--     /^# General help using/b print
--     ' < "$progpath"
--    ret=$?
--    if test -z "$1"; then
--      exit $ret
--    fi
--}
--
--# func_missing_arg argname
--# Echo program name prefixed message to standard error and set global
--# exit_cmd.
--func_missing_arg ()
--{
--    $opt_debug
--
--    func_error "missing argument for $1."
--    exit_cmd=exit
--}
--
--
--# func_split_short_opt shortopt
--# Set func_split_short_opt_name and func_split_short_opt_arg shell
--# variables after splitting SHORTOPT after the 2nd character.
--func_split_short_opt ()
--{
--    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
--    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
--
--    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
--    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
--} # func_split_short_opt may be replaced by extended shell implementation
--
--
--# func_split_long_opt longopt
--# Set func_split_long_opt_name and func_split_long_opt_arg shell
--# variables after splitting LONGOPT at the `=' sign.
--func_split_long_opt ()
--{
--    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
--    my_sed_long_arg='1s/^--[^=]*=//'
--
--    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
--    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
--} # func_split_long_opt may be replaced by extended shell implementation
--
--exit_cmd=:
--
--
--
--
--
--magic="%%%MAGIC variable%%%"
--magic_exe="%%%MAGIC EXE variable%%%"
--
--# Global variables.
--nonopt=
--preserve_args=
--lo2o="s/\\.lo\$/.${objext}/"
--o2lo="s/\\.${objext}\$/.lo/"
--extracted_archives=
--extracted_serial=0
--
--# If this variable is set in any of the actions, the command in it
--# will be execed at the end.  This prevents here-documents from being
--# left over by shells.
--exec_cmd=
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--    eval "${1}=\$${1}\${2}"
--} # func_append may be replaced by extended shell implementation
--
--# func_append_quoted var value
--# Quote VALUE and append to the end of shell variable VAR, separated
--# by a space.
--func_append_quoted ()
--{
--    func_quote_for_eval "${2}"
--    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
--} # func_append_quoted may be replaced by extended shell implementation
--
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--    func_arith_result=`expr "${@}"`
--} # func_arith may be replaced by extended shell implementation
--
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
--} # func_len may be replaced by extended shell implementation
--
--
--# func_lo2o object
--func_lo2o ()
--{
--    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
--} # func_lo2o may be replaced by extended shell implementation
--
--
--# func_xform libobj-or-source
--func_xform ()
--{
--    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
--} # func_xform may be replaced by extended shell implementation
--
--
--# func_fatal_configuration arg...
--# Echo program name prefixed message to standard error, followed by
--# a configuration failure hint, and exit.
--func_fatal_configuration ()
--{
--    func_error ${1+"$@"}
--    func_error "See the $PACKAGE documentation for more information."
--    func_fatal_error "Fatal configuration error."
--}
--
--
--# func_config
--# Display the configuration for all the tags in this script.
--func_config ()
--{
--    re_begincf='^# ### BEGIN LIBTOOL'
--    re_endcf='^# ### END LIBTOOL'
--
--    # Default configuration.
--    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
--
--    # Now print the configurations for the tags.
--    for tagname in $taglist; do
--      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
--    done
--
--    exit $?
--}
--
--# func_features
--# Display the features supported by this script.
--func_features ()
--{
--    echo "host: $host"
--    if test "$build_libtool_libs" = yes; then
--      echo "enable shared libraries"
--    else
--      echo "disable shared libraries"
--    fi
--    if test "$build_old_libs" = yes; then
--      echo "enable static libraries"
--    else
--      echo "disable static libraries"
--    fi
--
--    exit $?
--}
--
--# func_enable_tag tagname
--# Verify that TAGNAME is valid, and either flag an error and exit, or
--# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
--# variable here.
--func_enable_tag ()
--{
--  # Global variable:
--  tagname="$1"
--
--  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
--  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
--  sed_extractcf="/$re_begincf/,/$re_endcf/p"
--
--  # Validate tagname.
--  case $tagname in
--    *[!-_A-Za-z0-9,/]*)
--      func_fatal_error "invalid tag name: $tagname"
--      ;;
--  esac
--
--  # Don't test for the "default" C tag, as we know it's
--  # there but not specially marked.
--  case $tagname in
--    CC) ;;
--    *)
--      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
--	taglist="$taglist $tagname"
--
--	# Evaluate the configuration.  Be careful to quote the path
--	# and the sed script, to avoid splitting on whitespace, but
--	# also don't use non-portable quotes within backquotes within
--	# quotes we have to do it in 2 steps:
--	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
--	eval "$extractedcf"
--      else
--	func_error "ignoring unknown tag $tagname"
--      fi
--      ;;
--  esac
--}
--
--# func_check_version_match
--# Ensure that we are using m4 macros, and libtool script from the same
--# release of libtool.
--func_check_version_match ()
--{
--  if test "$package_revision" != "$macro_revision"; then
--    if test "$VERSION" != "$macro_version"; then
--      if test -z "$macro_version"; then
--        cat >&2 <<_LT_EOF
--$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
--$progname: definition of this LT_INIT comes from an older release.
--$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
--$progname: and run autoconf again.
--_LT_EOF
--      else
--        cat >&2 <<_LT_EOF
--$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
--$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
--$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
--$progname: and run autoconf again.
--_LT_EOF
--      fi
--    else
--      cat >&2 <<_LT_EOF
--$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
--$progname: but the definition of this LT_INIT comes from revision $macro_revision.
--$progname: You should recreate aclocal.m4 with macros from revision $package_revision
--$progname: of $PACKAGE $VERSION and run autoconf again.
--_LT_EOF
--    fi
--
--    exit $EXIT_MISMATCH
--  fi
--}
--
--
--# Shorthand for --mode=foo, only valid as the first argument
--case $1 in
--clean|clea|cle|cl)
--  shift; set dummy --mode clean ${1+"$@"}; shift
--  ;;
--compile|compil|compi|comp|com|co|c)
--  shift; set dummy --mode compile ${1+"$@"}; shift
--  ;;
--execute|execut|execu|exec|exe|ex|e)
--  shift; set dummy --mode execute ${1+"$@"}; shift
--  ;;
--finish|finis|fini|fin|fi|f)
--  shift; set dummy --mode finish ${1+"$@"}; shift
--  ;;
--install|instal|insta|inst|ins|in|i)
--  shift; set dummy --mode install ${1+"$@"}; shift
--  ;;
--link|lin|li|l)
--  shift; set dummy --mode link ${1+"$@"}; shift
--  ;;
--uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
--  shift; set dummy --mode uninstall ${1+"$@"}; shift
--  ;;
--esac
--
--
--
--# Option defaults:
--opt_debug=:
--opt_dry_run=false
--opt_config=false
--opt_preserve_dup_deps=false
--opt_features=false
--opt_finish=false
--opt_help=false
--opt_help_all=false
--opt_silent=:
--opt_warning=:
--opt_verbose=:
--opt_silent=false
--opt_verbose=false
--
--
--# Parse options once, thoroughly.  This comes as soon as possible in the
--# script to make things like `--version' happen as quickly as we can.
--{
--  # this just eases exit handling
--  while test $# -gt 0; do
--    opt="$1"
--    shift
--    case $opt in
--      --debug|-x)	opt_debug='set -x'
--			func_echo "enabling shell trace mode"
--			$opt_debug
--			;;
--      --dry-run|--dryrun|-n)
--			opt_dry_run=:
--			;;
--      --config)
--			opt_config=:
--func_config
--			;;
--      --dlopen|-dlopen)
--			optarg="$1"
--			opt_dlopen="${opt_dlopen+$opt_dlopen
--}$optarg"
--			shift
--			;;
--      --preserve-dup-deps)
--			opt_preserve_dup_deps=:
--			;;
--      --features)
--			opt_features=:
--func_features
--			;;
--      --finish)
--			opt_finish=:
--set dummy --mode finish ${1+"$@"}; shift
--			;;
--      --help)
--			opt_help=:
--			;;
--      --help-all)
--			opt_help_all=:
--opt_help=': help-all'
--			;;
--      --mode)
--			test $# = 0 && func_missing_arg $opt && break
--			optarg="$1"
--			opt_mode="$optarg"
--case $optarg in
--  # Valid mode arguments:
--  clean|compile|execute|finish|install|link|relink|uninstall) ;;
--
--  # Catch anything else as an error
--  *) func_error "invalid argument for $opt"
--     exit_cmd=exit
--     break
--     ;;
--esac
--			shift
--			;;
--      --no-silent|--no-quiet)
--			opt_silent=false
--func_append preserve_args " $opt"
--			;;
--      --no-warning|--no-warn)
--			opt_warning=false
--func_append preserve_args " $opt"
--			;;
--      --no-verbose)
--			opt_verbose=false
--func_append preserve_args " $opt"
--			;;
--      --silent|--quiet)
--			opt_silent=:
--func_append preserve_args " $opt"
--        opt_verbose=false
--			;;
--      --verbose|-v)
--			opt_verbose=:
--func_append preserve_args " $opt"
--opt_silent=false
--			;;
--      --tag)
--			test $# = 0 && func_missing_arg $opt && break
--			optarg="$1"
--			opt_tag="$optarg"
--func_append preserve_args " $opt $optarg"
--func_enable_tag "$optarg"
--			shift
--			;;
--
--      -\?|-h)		func_usage				;;
--      --help)		func_help				;;
--      --version)	func_version				;;
--
--      # Separate optargs to long options:
--      --*=*)
--			func_split_long_opt "$opt"
--			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
--			shift
--			;;
--
--      # Separate non-argument short options:
--      -\?*|-h*|-n*|-v*)
--			func_split_short_opt "$opt"
--			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
--			shift
--			;;
--
--      --)		break					;;
--      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
--      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
--    esac
--  done
--
--  # Validate options:
--
--  # save first non-option argument
--  if test "$#" -gt 0; then
--    nonopt="$opt"
--    shift
--  fi
--
--  # preserve --debug
--  test "$opt_debug" = : || func_append preserve_args " --debug"
--
--  case $host in
--    *cygwin* | *mingw* | *pw32* | *cegcc*)
--      # don't eliminate duplications in $postdeps and $predeps
--      opt_duplicate_compiler_generated_deps=:
--      ;;
--    *)
--      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
--      ;;
--  esac
--
--  $opt_help || {
--    # Sanity checks first:
--    func_check_version_match
--
--    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
--      func_fatal_configuration "not configured to build any kind of library"
--    fi
--
--    # Darwin sucks
--    eval std_shrext=\"$shrext_cmds\"
--
--    # Only execute mode is allowed to have -dlopen flags.
--    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
--      func_error "unrecognized option \`-dlopen'"
--      $ECHO "$help" 1>&2
--      exit $EXIT_FAILURE
--    fi
--
--    # Change the help message to a mode-specific one.
--    generic_help="$help"
--    help="Try \`$progname --help --mode=$opt_mode' for more information."
--  }
--
--
--  # Bail if the options were screwed
--  $exit_cmd $EXIT_FAILURE
--}
--
--
--
--
--## ----------- ##
--##    Main.    ##
--## ----------- ##
--
--# func_lalib_p file
--# True iff FILE is a libtool `.la' library or `.lo' object file.
--# This function is only a basic sanity check; it will hardly flush out
--# determined imposters.
--func_lalib_p ()
--{
--    test -f "$1" &&
--      $SED -e 4q "$1" 2>/dev/null \
--        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
--}
--
--# func_lalib_unsafe_p file
--# True iff FILE is a libtool `.la' library or `.lo' object file.
--# This function implements the same check as func_lalib_p without
--# resorting to external programs.  To this end, it redirects stdin and
--# closes it afterwards, without saving the original file descriptor.
--# As a safety measure, use it only where a negative result would be
--# fatal anyway.  Works if `file' does not exist.
--func_lalib_unsafe_p ()
--{
--    lalib_p=no
--    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
--	for lalib_p_l in 1 2 3 4
--	do
--	    read lalib_p_line
--	    case "$lalib_p_line" in
--		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
--	    esac
--	done
--	exec 0<&5 5<&-
--    fi
--    test "$lalib_p" = yes
--}
--
--# func_ltwrapper_script_p file
--# True iff FILE is a libtool wrapper script
--# This function is only a basic sanity check; it will hardly flush out
--# determined imposters.
--func_ltwrapper_script_p ()
--{
--    func_lalib_p "$1"
--}
--
--# func_ltwrapper_executable_p file
--# True iff FILE is a libtool wrapper executable
--# This function is only a basic sanity check; it will hardly flush out
--# determined imposters.
--func_ltwrapper_executable_p ()
--{
--    func_ltwrapper_exec_suffix=
--    case $1 in
--    *.exe) ;;
--    *) func_ltwrapper_exec_suffix=.exe ;;
--    esac
--    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
--}
--
--# func_ltwrapper_scriptname file
--# Assumes file is an ltwrapper_executable
--# uses $file to determine the appropriate filename for a
--# temporary ltwrapper_script.
--func_ltwrapper_scriptname ()
--{
--    func_dirname_and_basename "$1" "" "."
--    func_stripname '' '.exe' "$func_basename_result"
--    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
--}
--
--# func_ltwrapper_p file
--# True iff FILE is a libtool wrapper script or wrapper executable
--# This function is only a basic sanity check; it will hardly flush out
--# determined imposters.
--func_ltwrapper_p ()
--{
--    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
--}
--
--
--# func_execute_cmds commands fail_cmd
--# Execute tilde-delimited COMMANDS.
--# If FAIL_CMD is given, eval that upon failure.
--# FAIL_CMD may read-access the current command in variable CMD!
--func_execute_cmds ()
--{
--    $opt_debug
--    save_ifs=$IFS; IFS='~'
--    for cmd in $1; do
--      IFS=$save_ifs
--      eval cmd=\"$cmd\"
--      func_show_eval "$cmd" "${2-:}"
--    done
--    IFS=$save_ifs
--}
--
--
--# func_source file
--# Source FILE, adding directory component if necessary.
--# Note that it is not necessary on cygwin/mingw to append a dot to
--# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
--# behavior happens only for exec(3), not for open(2)!  Also, sourcing
--# `FILE.' does not work on cygwin managed mounts.
--func_source ()
--{
--    $opt_debug
--    case $1 in
--    */* | *\\*)	. "$1" ;;
--    *)		. "./$1" ;;
--    esac
--}
--
--
--# func_resolve_sysroot PATH
--# Replace a leading = in PATH with a sysroot.  Store the result into
--# func_resolve_sysroot_result
--func_resolve_sysroot ()
--{
--  func_resolve_sysroot_result=$1
--  case $func_resolve_sysroot_result in
--  =*)
--    func_stripname '=' '' "$func_resolve_sysroot_result"
--    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
--    ;;
--  esac
--}
--
--# func_replace_sysroot PATH
--# If PATH begins with the sysroot, replace it with = and
--# store the result into func_replace_sysroot_result.
--func_replace_sysroot ()
--{
--  case "$lt_sysroot:$1" in
--  ?*:"$lt_sysroot"*)
--    func_stripname "$lt_sysroot" '' "$1"
--    func_replace_sysroot_result="=$func_stripname_result"
--    ;;
--  *)
--    # Including no sysroot.
--    func_replace_sysroot_result=$1
--    ;;
--  esac
--}
--
--# func_infer_tag arg
--# Infer tagged configuration to use if any are available and
--# if one wasn't chosen via the "--tag" command line option.
--# Only attempt this if the compiler in the base compile
--# command doesn't match the default compiler.
--# arg is usually of the form 'gcc ...'
--func_infer_tag ()
--{
--    $opt_debug
--    if test -n "$available_tags" && test -z "$tagname"; then
--      CC_quoted=
--      for arg in $CC; do
--	func_append_quoted CC_quoted "$arg"
--      done
--      CC_expanded=`func_echo_all $CC`
--      CC_quoted_expanded=`func_echo_all $CC_quoted`
--      case $@ in
--      # Blanks in the command may have been stripped by the calling shell,
--      # but not from the CC environment variable when configure was run.
--      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
--      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
--      # Blanks at the start of $base_compile will cause this to fail
--      # if we don't check for them as well.
--      *)
--	for z in $available_tags; do
--	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
--	    # Evaluate the configuration.
--	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
--	    CC_quoted=
--	    for arg in $CC; do
--	      # Double-quote args containing other shell metacharacters.
--	      func_append_quoted CC_quoted "$arg"
--	    done
--	    CC_expanded=`func_echo_all $CC`
--	    CC_quoted_expanded=`func_echo_all $CC_quoted`
--	    case "$@ " in
--	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
--	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
--	      # The compiler in the base compile command matches
--	      # the one in the tagged configuration.
--	      # Assume this is the tagged configuration we want.
--	      tagname=$z
--	      break
--	      ;;
--	    esac
--	  fi
--	done
--	# If $tagname still isn't set, then no tagged configuration
--	# was found and let the user know that the "--tag" command
--	# line option must be used.
--	if test -z "$tagname"; then
--	  func_echo "unable to infer tagged configuration"
--	  func_fatal_error "specify a tag with \`--tag'"
--#	else
--#	  func_verbose "using $tagname tagged configuration"
--	fi
--	;;
--      esac
--    fi
--}
--
--
--
--# func_write_libtool_object output_name pic_name nonpic_name
--# Create a libtool object file (analogous to a ".la" file),
--# but don't create it if we're doing a dry run.
--func_write_libtool_object ()
--{
--    write_libobj=${1}
--    if test "$build_libtool_libs" = yes; then
--      write_lobj=\'${2}\'
--    else
--      write_lobj=none
--    fi
--
--    if test "$build_old_libs" = yes; then
--      write_oldobj=\'${3}\'
--    else
--      write_oldobj=none
--    fi
--
--    $opt_dry_run || {
--      cat >${write_libobj}T <<EOF
--# $write_libobj - a libtool object file
--# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
--#
--# Please DO NOT delete this file!
--# It is necessary for linking the library.
--
--# Name of the PIC object.
--pic_object=$write_lobj
--
--# Name of the non-PIC object
--non_pic_object=$write_oldobj
--
--EOF
--      $MV "${write_libobj}T" "${write_libobj}"
--    }
--}
--
--
--##################################################
--# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
--##################################################
--
--# func_convert_core_file_wine_to_w32 ARG
--# Helper function used by file name conversion functions when $build is *nix,
--# and $host is mingw, cygwin, or some other w32 environment. Relies on a
--# correctly configured wine environment available, with the winepath program
--# in $build's $PATH.
--#
--# ARG is the $build file name to be converted to w32 format.
--# Result is available in $func_convert_core_file_wine_to_w32_result, and will
--# be empty on error (or when ARG is empty)
--func_convert_core_file_wine_to_w32 ()
--{
--  $opt_debug
--  func_convert_core_file_wine_to_w32_result="$1"
--  if test -n "$1"; then
--    # Unfortunately, winepath does not exit with a non-zero error code, so we
--    # are forced to check the contents of stdout. On the other hand, if the
--    # command is not found, the shell will set an exit code of 127 and print
--    # *an error message* to stdout. So we must check for both error code of
--    # zero AND non-empty stdout, which explains the odd construction:
--    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
--    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
--      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
--        $SED -e "$lt_sed_naive_backslashify"`
--    else
--      func_convert_core_file_wine_to_w32_result=
--    fi
--  fi
--}
--# end: func_convert_core_file_wine_to_w32
--
--
--# func_convert_core_path_wine_to_w32 ARG
--# Helper function used by path conversion functions when $build is *nix, and
--# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
--# configured wine environment available, with the winepath program in $build's
--# $PATH. Assumes ARG has no leading or trailing path separator characters.
--#
--# ARG is path to be converted from $build format to win32.
--# Result is available in $func_convert_core_path_wine_to_w32_result.
--# Unconvertible file (directory) names in ARG are skipped; if no directory names
--# are convertible, then the result may be empty.
--func_convert_core_path_wine_to_w32 ()
--{
--  $opt_debug
--  # unfortunately, winepath doesn't convert paths, only file names
--  func_convert_core_path_wine_to_w32_result=""
--  if test -n "$1"; then
--    oldIFS=$IFS
--    IFS=:
--    for func_convert_core_path_wine_to_w32_f in $1; do
--      IFS=$oldIFS
--      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
--      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
--        if test -z "$func_convert_core_path_wine_to_w32_result"; then
--          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
--        else
--          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
--        fi
--      fi
--    done
--    IFS=$oldIFS
--  fi
--}
--# end: func_convert_core_path_wine_to_w32
--
--
--# func_cygpath ARGS...
--# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
--# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
--# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
--# (2), returns the Cygwin file name or path in func_cygpath_result (input
--# file name or path is assumed to be in w32 format, as previously converted
--# from $build's *nix or MSYS format). In case (3), returns the w32 file name
--# or path in func_cygpath_result (input file name or path is assumed to be in
--# Cygwin format). Returns an empty string on error.
--#
--# ARGS are passed to cygpath, with the last one being the file name or path to
--# be converted.
--#
--# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
--# environment variable; do not put it in $PATH.
--func_cygpath ()
--{
--  $opt_debug
--  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
--    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
--    if test "$?" -ne 0; then
--      # on failure, ensure result is empty
--      func_cygpath_result=
--    fi
--  else
--    func_cygpath_result=
--    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
--  fi
--}
--#end: func_cygpath
--
--
--# func_convert_core_msys_to_w32 ARG
--# Convert file name or path ARG from MSYS format to w32 format.  Return
--# result in func_convert_core_msys_to_w32_result.
--func_convert_core_msys_to_w32 ()
--{
--  $opt_debug
--  # awkward: cmd appends spaces to result
--  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
--    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
--}
--#end: func_convert_core_msys_to_w32
--
--
--# func_convert_file_check ARG1 ARG2
--# Verify that ARG1 (a file name in $build format) was converted to $host
--# format in ARG2. Otherwise, emit an error message, but continue (resetting
--# func_to_host_file_result to ARG1).
--func_convert_file_check ()
--{
--  $opt_debug
--  if test -z "$2" && test -n "$1" ; then
--    func_error "Could not determine host file name corresponding to"
--    func_error "  \`$1'"
--    func_error "Continuing, but uninstalled executables may not work."
--    # Fallback:
--    func_to_host_file_result="$1"
--  fi
--}
--# end func_convert_file_check
--
--
--# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
--# Verify that FROM_PATH (a path in $build format) was converted to $host
--# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
--# func_to_host_file_result to a simplistic fallback value (see below).
--func_convert_path_check ()
--{
--  $opt_debug
--  if test -z "$4" && test -n "$3"; then
--    func_error "Could not determine the host path corresponding to"
--    func_error "  \`$3'"
--    func_error "Continuing, but uninstalled executables may not work."
--    # Fallback.  This is a deliberately simplistic "conversion" and
--    # should not be "improved".  See libtool.info.
--    if test "x$1" != "x$2"; then
--      lt_replace_pathsep_chars="s|$1|$2|g"
--      func_to_host_path_result=`echo "$3" |
--        $SED -e "$lt_replace_pathsep_chars"`
--    else
--      func_to_host_path_result="$3"
--    fi
--  fi
--}
--# end func_convert_path_check
--
--
--# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
--# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
--# and appending REPL if ORIG matches BACKPAT.
--func_convert_path_front_back_pathsep ()
--{
--  $opt_debug
--  case $4 in
--  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
--    ;;
--  esac
--  case $4 in
--  $2 ) func_append func_to_host_path_result "$3"
--    ;;
--  esac
--}
--# end func_convert_path_front_back_pathsep
--
--
--##################################################
--# $build to $host FILE NAME CONVERSION FUNCTIONS #
--##################################################
--# invoked via `$to_host_file_cmd ARG'
--#
--# In each case, ARG is the path to be converted from $build to $host format.
--# Result will be available in $func_to_host_file_result.
--
--
--# func_to_host_file ARG
--# Converts the file name ARG from $build format to $host format. Return result
--# in func_to_host_file_result.
--func_to_host_file ()
--{
--  $opt_debug
--  $to_host_file_cmd "$1"
--}
--# end func_to_host_file
--
--
--# func_to_tool_file ARG LAZY
--# converts the file name ARG from $build format to toolchain format. Return
--# result in func_to_tool_file_result.  If the conversion in use is listed
--# in (the comma separated) LAZY, no conversion takes place.
--func_to_tool_file ()
--{
--  $opt_debug
--  case ,$2, in
--    *,"$to_tool_file_cmd",*)
--      func_to_tool_file_result=$1
--      ;;
--    *)
--      $to_tool_file_cmd "$1"
--      func_to_tool_file_result=$func_to_host_file_result
--      ;;
--  esac
--}
--# end func_to_tool_file
--
--
--# func_convert_file_noop ARG
--# Copy ARG to func_to_host_file_result.
--func_convert_file_noop ()
--{
--  func_to_host_file_result="$1"
--}
--# end func_convert_file_noop
--
--
--# func_convert_file_msys_to_w32 ARG
--# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
--# conversion to w32 is not available inside the cwrapper.  Returns result in
--# func_to_host_file_result.
--func_convert_file_msys_to_w32 ()
--{
--  $opt_debug
--  func_to_host_file_result="$1"
--  if test -n "$1"; then
--    func_convert_core_msys_to_w32 "$1"
--    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
--  fi
--  func_convert_file_check "$1" "$func_to_host_file_result"
--}
--# end func_convert_file_msys_to_w32
--
--
--# func_convert_file_cygwin_to_w32 ARG
--# Convert file name ARG from Cygwin to w32 format.  Returns result in
--# func_to_host_file_result.
--func_convert_file_cygwin_to_w32 ()
--{
--  $opt_debug
--  func_to_host_file_result="$1"
--  if test -n "$1"; then
--    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
--    # LT_CYGPATH in this case.
--    func_to_host_file_result=`cygpath -m "$1"`
--  fi
--  func_convert_file_check "$1" "$func_to_host_file_result"
--}
--# end func_convert_file_cygwin_to_w32
--
--
--# func_convert_file_nix_to_w32 ARG
--# Convert file name ARG from *nix to w32 format.  Requires a wine environment
--# and a working winepath. Returns result in func_to_host_file_result.
--func_convert_file_nix_to_w32 ()
--{
--  $opt_debug
--  func_to_host_file_result="$1"
--  if test -n "$1"; then
--    func_convert_core_file_wine_to_w32 "$1"
--    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
--  fi
--  func_convert_file_check "$1" "$func_to_host_file_result"
--}
--# end func_convert_file_nix_to_w32
--
--
--# func_convert_file_msys_to_cygwin ARG
--# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
--# Returns result in func_to_host_file_result.
--func_convert_file_msys_to_cygwin ()
--{
--  $opt_debug
--  func_to_host_file_result="$1"
--  if test -n "$1"; then
--    func_convert_core_msys_to_w32 "$1"
--    func_cygpath -u "$func_convert_core_msys_to_w32_result"
--    func_to_host_file_result="$func_cygpath_result"
--  fi
--  func_convert_file_check "$1" "$func_to_host_file_result"
--}
--# end func_convert_file_msys_to_cygwin
--
--
--# func_convert_file_nix_to_cygwin ARG
--# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
--# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
--# in func_to_host_file_result.
--func_convert_file_nix_to_cygwin ()
--{
--  $opt_debug
--  func_to_host_file_result="$1"
--  if test -n "$1"; then
--    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
--    func_convert_core_file_wine_to_w32 "$1"
--    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
--    func_to_host_file_result="$func_cygpath_result"
--  fi
--  func_convert_file_check "$1" "$func_to_host_file_result"
--}
--# end func_convert_file_nix_to_cygwin
--
--
--#############################################
--# $build to $host PATH CONVERSION FUNCTIONS #
--#############################################
--# invoked via `$to_host_path_cmd ARG'
--#
--# In each case, ARG is the path to be converted from $build to $host format.
--# The result will be available in $func_to_host_path_result.
--#
--# Path separators are also converted from $build format to $host format.  If
--# ARG begins or ends with a path separator character, it is preserved (but
--# converted to $host format) on output.
--#
--# All path conversion functions are named using the following convention:
--#   file name conversion function    : func_convert_file_X_to_Y ()
--#   path conversion function         : func_convert_path_X_to_Y ()
--# where, for any given $build/$host combination the 'X_to_Y' value is the
--# same.  If conversion functions are added for new $build/$host combinations,
--# the two new functions must follow this pattern, or func_init_to_host_path_cmd
--# will break.
--
--
--# func_init_to_host_path_cmd
--# Ensures that function "pointer" variable $to_host_path_cmd is set to the
--# appropriate value, based on the value of $to_host_file_cmd.
--to_host_path_cmd=
--func_init_to_host_path_cmd ()
--{
--  $opt_debug
--  if test -z "$to_host_path_cmd"; then
--    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
--    to_host_path_cmd="func_convert_path_${func_stripname_result}"
--  fi
--}
--
--
--# func_to_host_path ARG
--# Converts the path ARG from $build format to $host format. Return result
--# in func_to_host_path_result.
--func_to_host_path ()
--{
--  $opt_debug
--  func_init_to_host_path_cmd
--  $to_host_path_cmd "$1"
--}
--# end func_to_host_path
--
--
--# func_convert_path_noop ARG
--# Copy ARG to func_to_host_path_result.
--func_convert_path_noop ()
--{
--  func_to_host_path_result="$1"
--}
--# end func_convert_path_noop
--
--
--# func_convert_path_msys_to_w32 ARG
--# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
--# conversion to w32 is not available inside the cwrapper.  Returns result in
--# func_to_host_path_result.
--func_convert_path_msys_to_w32 ()
--{
--  $opt_debug
--  func_to_host_path_result="$1"
--  if test -n "$1"; then
--    # Remove leading and trailing path separator characters from ARG.  MSYS
--    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
--    # and winepath ignores them completely.
--    func_stripname : : "$1"
--    func_to_host_path_tmp1=$func_stripname_result
--    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
--    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
--    func_convert_path_check : ";" \
--      "$func_to_host_path_tmp1" "$func_to_host_path_result"
--    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
--  fi
--}
--# end func_convert_path_msys_to_w32
--
--
--# func_convert_path_cygwin_to_w32 ARG
--# Convert path ARG from Cygwin to w32 format.  Returns result in
--# func_to_host_file_result.
--func_convert_path_cygwin_to_w32 ()
--{
--  $opt_debug
--  func_to_host_path_result="$1"
--  if test -n "$1"; then
--    # See func_convert_path_msys_to_w32:
--    func_stripname : : "$1"
--    func_to_host_path_tmp1=$func_stripname_result
--    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
--    func_convert_path_check : ";" \
--      "$func_to_host_path_tmp1" "$func_to_host_path_result"
--    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
--  fi
--}
--# end func_convert_path_cygwin_to_w32
--
--
--# func_convert_path_nix_to_w32 ARG
--# Convert path ARG from *nix to w32 format.  Requires a wine environment and
--# a working winepath.  Returns result in func_to_host_file_result.
--func_convert_path_nix_to_w32 ()
--{
--  $opt_debug
--  func_to_host_path_result="$1"
--  if test -n "$1"; then
--    # See func_convert_path_msys_to_w32:
--    func_stripname : : "$1"
--    func_to_host_path_tmp1=$func_stripname_result
--    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
--    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
--    func_convert_path_check : ";" \
--      "$func_to_host_path_tmp1" "$func_to_host_path_result"
--    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
--  fi
--}
--# end func_convert_path_nix_to_w32
--
--
--# func_convert_path_msys_to_cygwin ARG
--# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
--# Returns result in func_to_host_file_result.
--func_convert_path_msys_to_cygwin ()
--{
--  $opt_debug
--  func_to_host_path_result="$1"
--  if test -n "$1"; then
--    # See func_convert_path_msys_to_w32:
--    func_stripname : : "$1"
--    func_to_host_path_tmp1=$func_stripname_result
--    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
--    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
--    func_to_host_path_result="$func_cygpath_result"
--    func_convert_path_check : : \
--      "$func_to_host_path_tmp1" "$func_to_host_path_result"
--    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
--  fi
--}
--# end func_convert_path_msys_to_cygwin
--
--
--# func_convert_path_nix_to_cygwin ARG
--# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
--# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
--# func_to_host_file_result.
--func_convert_path_nix_to_cygwin ()
--{
--  $opt_debug
--  func_to_host_path_result="$1"
--  if test -n "$1"; then
--    # Remove leading and trailing path separator characters from
--    # ARG. msys behavior is inconsistent here, cygpath turns them
--    # into '.;' and ';.', and winepath ignores them completely.
--    func_stripname : : "$1"
--    func_to_host_path_tmp1=$func_stripname_result
--    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
--    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
--    func_to_host_path_result="$func_cygpath_result"
--    func_convert_path_check : : \
--      "$func_to_host_path_tmp1" "$func_to_host_path_result"
--    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
--  fi
--}
--# end func_convert_path_nix_to_cygwin
--
--
--# func_mode_compile arg...
--func_mode_compile ()
--{
--    $opt_debug
--    # Get the compilation command and the source file.
--    base_compile=
--    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
--    suppress_opt=yes
--    suppress_output=
--    arg_mode=normal
--    libobj=
--    later=
--    pie_flag=
--
--    for arg
--    do
--      case $arg_mode in
--      arg  )
--	# do not "continue".  Instead, add this to base_compile
--	lastarg="$arg"
--	arg_mode=normal
--	;;
--
--      target )
--	libobj="$arg"
--	arg_mode=normal
--	continue
--	;;
--
--      normal )
--	# Accept any command-line options.
--	case $arg in
--	-o)
--	  test -n "$libobj" && \
--	    func_fatal_error "you cannot specify \`-o' more than once"
--	  arg_mode=target
--	  continue
--	  ;;
--
--	-pie | -fpie | -fPIE)
--          func_append pie_flag " $arg"
--	  continue
--	  ;;
--
--	-shared | -static | -prefer-pic | -prefer-non-pic)
--	  func_append later " $arg"
--	  continue
--	  ;;
--
--	-no-suppress)
--	  suppress_opt=no
--	  continue
--	  ;;
--
--	-Xcompiler)
--	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
--	  continue      #  The current "srcfile" will either be retained or
--	  ;;            #  replaced later.  I would guess that would be a bug.
--
--	-Wc,*)
--	  func_stripname '-Wc,' '' "$arg"
--	  args=$func_stripname_result
--	  lastarg=
--	  save_ifs="$IFS"; IFS=','
--	  for arg in $args; do
--	    IFS="$save_ifs"
--	    func_append_quoted lastarg "$arg"
--	  done
--	  IFS="$save_ifs"
--	  func_stripname ' ' '' "$lastarg"
--	  lastarg=$func_stripname_result
--
--	  # Add the arguments to base_compile.
--	  func_append base_compile " $lastarg"
--	  continue
--	  ;;
--
--	*)
--	  # Accept the current argument as the source file.
--	  # The previous "srcfile" becomes the current argument.
--	  #
--	  lastarg="$srcfile"
--	  srcfile="$arg"
--	  ;;
--	esac  #  case $arg
--	;;
--      esac    #  case $arg_mode
--
--      # Aesthetically quote the previous argument.
--      func_append_quoted base_compile "$lastarg"
--    done # for arg
--
--    case $arg_mode in
--    arg)
--      func_fatal_error "you must specify an argument for -Xcompile"
--      ;;
--    target)
--      func_fatal_error "you must specify a target with \`-o'"
--      ;;
--    *)
--      # Get the name of the library object.
--      test -z "$libobj" && {
--	func_basename "$srcfile"
--	libobj="$func_basename_result"
--      }
--      ;;
--    esac
--
--    # Recognize several different file suffixes.
--    # If the user specifies -o file.o, it is replaced with file.lo
--    case $libobj in
--    *.[cCFSifmso] | \
--    *.ada | *.adb | *.ads | *.asm | \
--    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
--    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
--      func_xform "$libobj"
--      libobj=$func_xform_result
--      ;;
--    esac
--
--    case $libobj in
--    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
--    *)
--      func_fatal_error "cannot determine name of library object from \`$libobj'"
--      ;;
--    esac
--
--    func_infer_tag $base_compile
--
--    for arg in $later; do
--      case $arg in
--      -shared)
--	test "$build_libtool_libs" != yes && \
--	  func_fatal_configuration "can not build a shared library"
--	build_old_libs=no
--	continue
--	;;
--
--      -static)
--	build_libtool_libs=no
--	build_old_libs=yes
--	continue
--	;;
--
--      -prefer-pic)
--	pic_mode=yes
--	continue
--	;;
--
--      -prefer-non-pic)
--	pic_mode=no
--	continue
--	;;
--      esac
--    done
--
--    func_quote_for_eval "$libobj"
--    test "X$libobj" != "X$func_quote_for_eval_result" \
--      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
--      && func_warning "libobj name \`$libobj' may not contain shell special characters."
--    func_dirname_and_basename "$obj" "/" ""
--    objname="$func_basename_result"
--    xdir="$func_dirname_result"
--    lobj=${xdir}$objdir/$objname
--
--    test -z "$base_compile" && \
--      func_fatal_help "you must specify a compilation command"
--
--    # Delete any leftover library objects.
--    if test "$build_old_libs" = yes; then
--      removelist="$obj $lobj $libobj ${libobj}T"
--    else
--      removelist="$lobj $libobj ${libobj}T"
--    fi
--
--    # On Cygwin there's no "real" PIC flag so we must build both object types
--    case $host_os in
--    cygwin* | mingw* | pw32* | os2* | cegcc*)
--      pic_mode=default
--      ;;
--    esac
--    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
--      # non-PIC code in shared libraries is not supported
--      pic_mode=default
--    fi
--
--    # Calculate the filename of the output object if compiler does
--    # not support -o with -c
--    if test "$compiler_c_o" = no; then
--      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
--      lockfile="$output_obj.lock"
--    else
--      output_obj=
--      need_locks=no
--      lockfile=
--    fi
--
--    # Lock this critical section if it is needed
--    # We use this script file to make the link, it avoids creating a new file
--    if test "$need_locks" = yes; then
--      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
--	func_echo "Waiting for $lockfile to be removed"
--	sleep 2
--      done
--    elif test "$need_locks" = warn; then
--      if test -f "$lockfile"; then
--	$ECHO "\
--*** ERROR, $lockfile exists and contains:
--`cat $lockfile 2>/dev/null`
--
--This indicates that another process is trying to use the same
--temporary object file, and libtool could not work around it because
--your compiler does not support \`-c' and \`-o' together.  If you
--repeat this compilation, it may succeed, by chance, but you had better
--avoid parallel builds (make -j) in this platform, or get a better
--compiler."
--
--	$opt_dry_run || $RM $removelist
--	exit $EXIT_FAILURE
--      fi
--      func_append removelist " $output_obj"
--      $ECHO "$srcfile" > "$lockfile"
--    fi
--
--    $opt_dry_run || $RM $removelist
--    func_append removelist " $lockfile"
--    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
--
--    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
--    srcfile=$func_to_tool_file_result
--    func_quote_for_eval "$srcfile"
--    qsrcfile=$func_quote_for_eval_result
--
--    # Only build a PIC object if we are building libtool libraries.
--    if test "$build_libtool_libs" = yes; then
--      # Without this assignment, base_compile gets emptied.
--      fbsd_hideous_sh_bug=$base_compile
--
--      if test "$pic_mode" != no; then
--	command="$base_compile $qsrcfile $pic_flag"
--      else
--	# Don't build PIC code
--	command="$base_compile $qsrcfile"
--      fi
--
--      func_mkdir_p "$xdir$objdir"
--
--      if test -z "$output_obj"; then
--	# Place PIC objects in $objdir
--	func_append command " -o $lobj"
--      fi
--
--      func_show_eval_locale "$command"	\
--          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
--
--      if test "$need_locks" = warn &&
--	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
--	$ECHO "\
--*** ERROR, $lockfile contains:
--`cat $lockfile 2>/dev/null`
--
--but it should contain:
--$srcfile
--
--This indicates that another process is trying to use the same
--temporary object file, and libtool could not work around it because
--your compiler does not support \`-c' and \`-o' together.  If you
--repeat this compilation, it may succeed, by chance, but you had better
--avoid parallel builds (make -j) in this platform, or get a better
--compiler."
--
--	$opt_dry_run || $RM $removelist
--	exit $EXIT_FAILURE
--      fi
--
--      # Just move the object if needed, then go on to compile the next one
--      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
--	func_show_eval '$MV "$output_obj" "$lobj"' \
--	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
--      fi
--
--      # Allow error messages only from the first compilation.
--      if test "$suppress_opt" = yes; then
--	suppress_output=' >/dev/null 2>&1'
--      fi
--    fi
--
--    # Only build a position-dependent object if we build old libraries.
--    if test "$build_old_libs" = yes; then
--      if test "$pic_mode" != yes; then
--	# Don't build PIC code
--	command="$base_compile $qsrcfile$pie_flag"
--      else
--	command="$base_compile $qsrcfile $pic_flag"
--      fi
--      if test "$compiler_c_o" = yes; then
--	func_append command " -o $obj"
--      fi
--
--      # Suppress compiler output if we already did a PIC compilation.
--      func_append command "$suppress_output"
--      func_show_eval_locale "$command" \
--        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
--
--      if test "$need_locks" = warn &&
--	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
--	$ECHO "\
--*** ERROR, $lockfile contains:
--`cat $lockfile 2>/dev/null`
--
--but it should contain:
--$srcfile
--
--This indicates that another process is trying to use the same
--temporary object file, and libtool could not work around it because
--your compiler does not support \`-c' and \`-o' together.  If you
--repeat this compilation, it may succeed, by chance, but you had better
--avoid parallel builds (make -j) in this platform, or get a better
--compiler."
--
--	$opt_dry_run || $RM $removelist
--	exit $EXIT_FAILURE
--      fi
--
--      # Just move the object if needed
--      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
--	func_show_eval '$MV "$output_obj" "$obj"' \
--	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
--      fi
--    fi
--
--    $opt_dry_run || {
--      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
--
--      # Unlock the critical section if it was locked
--      if test "$need_locks" != no; then
--	removelist=$lockfile
--        $RM "$lockfile"
--      fi
--    }
--
--    exit $EXIT_SUCCESS
--}
--
--$opt_help || {
--  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
--}
--
--func_mode_help ()
--{
--    # We need to display help for each of the modes.
--    case $opt_mode in
--      "")
--        # Generic help is extracted from the usage comments
--        # at the start of this file.
--        func_help
--        ;;
--
--      clean)
--        $ECHO \
--"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
--
--Remove files from the build directory.
--
--RM is the name of the program to use to delete files associated with each FILE
--(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
--to RM.
--
--If FILE is a libtool library, object or program, all the files associated
--with it are deleted. Otherwise, only FILE itself is deleted using RM."
--        ;;
--
--      compile)
--      $ECHO \
--"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
--
--Compile a source file into a libtool library object.
--
--This mode accepts the following additional options:
--
--  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
--  -no-suppress      do not suppress compiler output for multiple passes
--  -prefer-pic       try to build PIC objects only
--  -prefer-non-pic   try to build non-PIC objects only
--  -shared           do not build a \`.o' file suitable for static linking
--  -static           only build a \`.o' file suitable for static linking
--  -Wc,FLAG          pass FLAG directly to the compiler
--
--COMPILE-COMMAND is a command to be used in creating a \`standard' object file
--from the given SOURCEFILE.
--
--The output file name is determined by removing the directory component from
--SOURCEFILE, then substituting the C source code suffix \`.c' with the
--library object suffix, \`.lo'."
--        ;;
--
--      execute)
--        $ECHO \
--"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
--
--Automatically set library path, then run a program.
--
--This mode accepts the following additional options:
--
--  -dlopen FILE      add the directory containing FILE to the library path
--
--This mode sets the library path environment variable according to \`-dlopen'
--flags.
--
--If any of the ARGS are libtool executable wrappers, then they are translated
--into their corresponding uninstalled binary, and any of their required library
--directories are added to the library path.
--
--Then, COMMAND is executed, with ARGS as arguments."
--        ;;
--
--      finish)
--        $ECHO \
--"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
--
--Complete the installation of libtool libraries.
--
--Each LIBDIR is a directory that contains libtool libraries.
--
--The commands that this mode executes may require superuser privileges.  Use
--the \`--dry-run' option if you just want to see what would be executed."
--        ;;
--
--      install)
--        $ECHO \
--"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
--
--Install executables or libraries.
--
--INSTALL-COMMAND is the installation command.  The first component should be
--either the \`install' or \`cp' program.
--
--The following components of INSTALL-COMMAND are treated specially:
--
--  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
--
--The rest of the components are interpreted as arguments to that command (only
--BSD-compatible install options are recognized)."
--        ;;
--
--      link)
--        $ECHO \
--"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
--
--Link object files or libraries together to form another library, or to
--create an executable program.
--
--LINK-COMMAND is a command using the C compiler that you would use to create
--a program from several object files.
--
--The following components of LINK-COMMAND are treated specially:
--
--  -all-static       do not do any dynamic linking at all
--  -avoid-version    do not add a version suffix if possible
--  -bindir BINDIR    specify path to binaries directory (for systems where
--                    libraries must be found in the PATH setting at runtime)
--  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
--  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
--  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
--  -export-symbols SYMFILE
--                    try to export only the symbols listed in SYMFILE
--  -export-symbols-regex REGEX
--                    try to export only the symbols matching REGEX
--  -LLIBDIR          search LIBDIR for required installed libraries
--  -lNAME            OUTPUT-FILE requires the installed library libNAME
--  -module           build a library that can dlopened
--  -no-fast-install  disable the fast-install mode
--  -no-install       link a not-installable executable
--  -no-undefined     declare that a library does not refer to external symbols
--  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
--  -objectlist FILE  Use a list of object files found in FILE to specify objects
--  -precious-files-regex REGEX
--                    don't remove output files matching REGEX
--  -release RELEASE  specify package release information
--  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
--  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
--  -shared           only do dynamic linking of libtool libraries
--  -shrext SUFFIX    override the standard shared library file extension
--  -static           do not do any dynamic linking of uninstalled libtool libraries
--  -static-libtool-libs
--                    do not do any dynamic linking of libtool libraries
--  -version-info CURRENT[:REVISION[:AGE]]
--                    specify library version info [each variable defaults to 0]
--  -weak LIBNAME     declare that the target provides the LIBNAME interface
--  -Wc,FLAG
--  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
--  -Wl,FLAG
--  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
--  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
--
--All other options (arguments beginning with \`-') are ignored.
--
--Every other argument is treated as a filename.  Files ending in \`.la' are
--treated as uninstalled libtool libraries, other files are standard or library
--object files.
--
--If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
--only library objects (\`.lo' files) may be specified, and \`-rpath' is
--required, except when creating a convenience library.
--
--If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
--using \`ar' and \`ranlib', or on Windows using \`lib'.
--
--If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
--is created, otherwise an executable program is created."
--        ;;
--
--      uninstall)
--        $ECHO \
--"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
--
--Remove libraries from an installation directory.
--
--RM is the name of the program to use to delete files associated with each FILE
--(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
--to RM.
--
--If FILE is a libtool library, all the files associated with it are deleted.
--Otherwise, only FILE itself is deleted using RM."
--        ;;
--
--      *)
--        func_fatal_help "invalid operation mode \`$opt_mode'"
--        ;;
--    esac
--
--    echo
--    $ECHO "Try \`$progname --help' for more information about other modes."
--}
--
--# Now that we've collected a possible --mode arg, show help if necessary
--if $opt_help; then
--  if test "$opt_help" = :; then
--    func_mode_help
--  else
--    {
--      func_help noexit
--      for opt_mode in compile link execute install finish uninstall clean; do
--	func_mode_help
--      done
--    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
--    {
--      func_help noexit
--      for opt_mode in compile link execute install finish uninstall clean; do
--	echo
--	func_mode_help
--      done
--    } |
--    sed '1d
--      /^When reporting/,/^Report/{
--	H
--	d
--      }
--      $x
--      /information about other modes/d
--      /more detailed .*MODE/d
--      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
--  fi
--  exit $?
--fi
--
--
--# func_mode_execute arg...
--func_mode_execute ()
--{
--    $opt_debug
--    # The first argument is the command name.
--    cmd="$nonopt"
--    test -z "$cmd" && \
--      func_fatal_help "you must specify a COMMAND"
--
--    # Handle -dlopen flags immediately.
--    for file in $opt_dlopen; do
--      test -f "$file" \
--	|| func_fatal_help "\`$file' is not a file"
--
--      dir=
--      case $file in
--      *.la)
--	func_resolve_sysroot "$file"
--	file=$func_resolve_sysroot_result
--
--	# Check to see that this really is a libtool archive.
--	func_lalib_unsafe_p "$file" \
--	  || func_fatal_help "\`$lib' is not a valid libtool archive"
--
--	# Read the libtool library.
--	dlname=
--	library_names=
--	func_source "$file"
--
--	# Skip this library if it cannot be dlopened.
--	if test -z "$dlname"; then
--	  # Warn if it was a shared library.
--	  test -n "$library_names" && \
--	    func_warning "\`$file' was not linked with \`-export-dynamic'"
--	  continue
--	fi
--
--	func_dirname "$file" "" "."
--	dir="$func_dirname_result"
--
--	if test -f "$dir/$objdir/$dlname"; then
--	  func_append dir "/$objdir"
--	else
--	  if test ! -f "$dir/$dlname"; then
--	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
--	  fi
--	fi
--	;;
--
--      *.lo)
--	# Just add the directory containing the .lo file.
--	func_dirname "$file" "" "."
--	dir="$func_dirname_result"
--	;;
--
--      *)
--	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
--	continue
--	;;
--      esac
--
--      # Get the absolute pathname.
--      absdir=`cd "$dir" && pwd`
--      test -n "$absdir" && dir="$absdir"
--
--      # Now add the directory to shlibpath_var.
--      if eval "test -z \"\$$shlibpath_var\""; then
--	eval "$shlibpath_var=\"\$dir\""
--      else
--	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
--      fi
--    done
--
--    # This variable tells wrapper scripts just to set shlibpath_var
--    # rather than running their programs.
--    libtool_execute_magic="$magic"
--
--    # Check if any of the arguments is a wrapper script.
--    args=
--    for file
--    do
--      case $file in
--      -* | *.la | *.lo ) ;;
--      *)
--	# Do a test to see if this is really a libtool program.
--	if func_ltwrapper_script_p "$file"; then
--	  func_source "$file"
--	  # Transform arg to wrapped name.
--	  file="$progdir/$program"
--	elif func_ltwrapper_executable_p "$file"; then
--	  func_ltwrapper_scriptname "$file"
--	  func_source "$func_ltwrapper_scriptname_result"
--	  # Transform arg to wrapped name.
--	  file="$progdir/$program"
--	fi
--	;;
--      esac
--      # Quote arguments (to preserve shell metacharacters).
--      func_append_quoted args "$file"
--    done
--
--    if test "X$opt_dry_run" = Xfalse; then
--      if test -n "$shlibpath_var"; then
--	# Export the shlibpath_var.
--	eval "export $shlibpath_var"
--      fi
--
--      # Restore saved environment variables
--      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
--      do
--	eval "if test \"\${save_$lt_var+set}\" = set; then
--                $lt_var=\$save_$lt_var; export $lt_var
--	      else
--		$lt_unset $lt_var
--	      fi"
--      done
--
--      # Now prepare to actually exec the command.
--      exec_cmd="\$cmd$args"
--    else
--      # Display what would be done.
--      if test -n "$shlibpath_var"; then
--	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
--	echo "export $shlibpath_var"
--      fi
--      $ECHO "$cmd$args"
--      exit $EXIT_SUCCESS
--    fi
--}
--
--test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
--
--
--# func_mode_finish arg...
--func_mode_finish ()
--{
--    $opt_debug
--    libs=
--    libdirs=
--    admincmds=
--
--    for opt in "$nonopt" ${1+"$@"}
--    do
--      if test -d "$opt"; then
--	func_append libdirs " $opt"
--
--      elif test -f "$opt"; then
--	if func_lalib_unsafe_p "$opt"; then
--	  func_append libs " $opt"
--	else
--	  func_warning "\`$opt' is not a valid libtool archive"
--	fi
--
--      else
--	func_fatal_error "invalid argument \`$opt'"
--      fi
--    done
--
--    if test -n "$libs"; then
--      if test -n "$lt_sysroot"; then
--        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
--        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
--      else
--        sysroot_cmd=
--      fi
--
--      # Remove sysroot references
--      if $opt_dry_run; then
--        for lib in $libs; do
--          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
--        done
--      else
--        tmpdir=`func_mktempdir`
--        for lib in $libs; do
--	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
--	    > $tmpdir/tmp-la
--	  mv -f $tmpdir/tmp-la $lib
--	done
--        ${RM}r "$tmpdir"
--      fi
--    fi
--
--    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
--      for libdir in $libdirs; do
--	if test -n "$finish_cmds"; then
--	  # Do each command in the finish commands.
--	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
--'"$cmd"'"'
--	fi
--	if test -n "$finish_eval"; then
--	  # Do the single finish_eval.
--	  eval cmds=\"$finish_eval\"
--	  $opt_dry_run || eval "$cmds" || func_append admincmds "
--       $cmds"
--	fi
--      done
--    fi
--
--    # Exit here if they wanted silent mode.
--    $opt_silent && exit $EXIT_SUCCESS
--
--    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
--      echo "----------------------------------------------------------------------"
--      echo "Libraries have been installed in:"
--      for libdir in $libdirs; do
--	$ECHO "   $libdir"
--      done
--      echo
--      echo "If you ever happen to want to link against installed libraries"
--      echo "in a given directory, LIBDIR, you must either use libtool, and"
--      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
--      echo "flag during linking and do at least one of the following:"
--      if test -n "$shlibpath_var"; then
--	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
--	echo "     during execution"
--      fi
--      if test -n "$runpath_var"; then
--	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
--	echo "     during linking"
--      fi
--      if test -n "$hardcode_libdir_flag_spec"; then
--	libdir=LIBDIR
--	eval flag=\"$hardcode_libdir_flag_spec\"
--
--	$ECHO "   - use the \`$flag' linker flag"
--      fi
--      if test -n "$admincmds"; then
--	$ECHO "   - have your system administrator run these commands:$admincmds"
--      fi
--      if test -f /etc/ld.so.conf; then
--	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
--      fi
--      echo
--
--      echo "See any operating system documentation about shared libraries for"
--      case $host in
--	solaris2.[6789]|solaris2.1[0-9])
--	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
--	  echo "pages."
--	  ;;
--	*)
--	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
--	  ;;
--      esac
--      echo "----------------------------------------------------------------------"
--    fi
--    exit $EXIT_SUCCESS
--}
--
--test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
--
--
--# func_mode_install arg...
--func_mode_install ()
--{
--    $opt_debug
--    # There may be an optional sh(1) argument at the beginning of
--    # install_prog (especially on Windows NT).
--    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
--       # Allow the use of GNU shtool's install command.
--       case $nonopt in *shtool*) :;; *) false;; esac; then
--      # Aesthetically quote it.
--      func_quote_for_eval "$nonopt"
--      install_prog="$func_quote_for_eval_result "
--      arg=$1
--      shift
--    else
--      install_prog=
--      arg=$nonopt
--    fi
--
--    # The real first argument should be the name of the installation program.
--    # Aesthetically quote it.
--    func_quote_for_eval "$arg"
--    func_append install_prog "$func_quote_for_eval_result"
--    install_shared_prog=$install_prog
--    case " $install_prog " in
--      *[\\\ /]cp\ *) install_cp=: ;;
--      *) install_cp=false ;;
--    esac
--
--    # We need to accept at least all the BSD install flags.
--    dest=
--    files=
--    opts=
--    prev=
--    install_type=
--    isdir=no
--    stripme=
--    no_mode=:
--    for arg
--    do
--      arg2=
--      if test -n "$dest"; then
--	func_append files " $dest"
--	dest=$arg
--	continue
--      fi
--
--      case $arg in
--      -d) isdir=yes ;;
--      -f)
--	if $install_cp; then :; else
--	  prev=$arg
--	fi
--	;;
--      -g | -m | -o)
--	prev=$arg
--	;;
--      -s)
--	stripme=" -s"
--	continue
--	;;
--      -*)
--	;;
--      *)
--	# If the previous option needed an argument, then skip it.
--	if test -n "$prev"; then
--	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
--	    arg2=$install_override_mode
--	    no_mode=false
--	  fi
--	  prev=
--	else
--	  dest=$arg
--	  continue
--	fi
--	;;
--      esac
--
--      # Aesthetically quote the argument.
--      func_quote_for_eval "$arg"
--      func_append install_prog " $func_quote_for_eval_result"
--      if test -n "$arg2"; then
--	func_quote_for_eval "$arg2"
--      fi
--      func_append install_shared_prog " $func_quote_for_eval_result"
--    done
--
--    test -z "$install_prog" && \
--      func_fatal_help "you must specify an install program"
--
--    test -n "$prev" && \
--      func_fatal_help "the \`$prev' option requires an argument"
--
--    if test -n "$install_override_mode" && $no_mode; then
--      if $install_cp; then :; else
--	func_quote_for_eval "$install_override_mode"
--	func_append install_shared_prog " -m $func_quote_for_eval_result"
--      fi
--    fi
--
--    if test -z "$files"; then
--      if test -z "$dest"; then
--	func_fatal_help "no file or destination specified"
--      else
--	func_fatal_help "you must specify a destination"
--      fi
--    fi
--
--    # Strip any trailing slash from the destination.
--    func_stripname '' '/' "$dest"
--    dest=$func_stripname_result
--
--    # Check to see that the destination is a directory.
--    test -d "$dest" && isdir=yes
--    if test "$isdir" = yes; then
--      destdir="$dest"
--      destname=
--    else
--      func_dirname_and_basename "$dest" "" "."
--      destdir="$func_dirname_result"
--      destname="$func_basename_result"
--
--      # Not a directory, so check to see that there is only one file specified.
--      set dummy $files; shift
--      test "$#" -gt 1 && \
--	func_fatal_help "\`$dest' is not a directory"
--    fi
--    case $destdir in
--    [\\/]* | [A-Za-z]:[\\/]*) ;;
--    *)
--      for file in $files; do
--	case $file in
--	*.lo) ;;
--	*)
--	  func_fatal_help "\`$destdir' must be an absolute directory name"
--	  ;;
--	esac
--      done
--      ;;
--    esac
--
--    # This variable tells wrapper scripts just to set variables rather
--    # than running their programs.
--    libtool_install_magic="$magic"
--
--    staticlibs=
--    future_libdirs=
--    current_libdirs=
--    for file in $files; do
--
--      # Do each installation.
--      case $file in
--      *.$libext)
--	# Do the static libraries later.
--	func_append staticlibs " $file"
--	;;
--
--      *.la)
--	func_resolve_sysroot "$file"
--	file=$func_resolve_sysroot_result
--
--	# Check to see that this really is a libtool archive.
--	func_lalib_unsafe_p "$file" \
--	  || func_fatal_help "\`$file' is not a valid libtool archive"
--
--	library_names=
--	old_library=
--	relink_command=
--	func_source "$file"
--
--	# Add the libdir to current_libdirs if it is the destination.
--	if test "X$destdir" = "X$libdir"; then
--	  case "$current_libdirs " in
--	  *" $libdir "*) ;;
--	  *) func_append current_libdirs " $libdir" ;;
--	  esac
--	else
--	  # Note the libdir as a future libdir.
--	  case "$future_libdirs " in
--	  *" $libdir "*) ;;
--	  *) func_append future_libdirs " $libdir" ;;
--	  esac
--	fi
--
--	func_dirname "$file" "/" ""
--	dir="$func_dirname_result"
--	func_append dir "$objdir"
--
--	if test -n "$relink_command"; then
--	  # Determine the prefix the user has applied to our future dir.
--	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
--
--	  # Don't allow the user to place us outside of our expected
--	  # location b/c this prevents finding dependent libraries that
--	  # are installed to the same prefix.
--	  # At present, this check doesn't affect windows .dll's that
--	  # are installed into $libdir/../bin (currently, that works fine)
--	  # but it's something to keep an eye on.
--	  test "$inst_prefix_dir" = "$destdir" && \
--	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
--
--	  if test -n "$inst_prefix_dir"; then
--	    # Stick the inst_prefix_dir data into the link command.
--	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
--	  else
--	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
--	  fi
--
--	  func_warning "relinking \`$file'"
--	  func_show_eval "$relink_command" \
--	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
--	fi
--
--	# See the names of the shared library.
--	set dummy $library_names; shift
--	if test -n "$1"; then
--	  realname="$1"
--	  shift
--
--	  srcname="$realname"
--	  test -n "$relink_command" && srcname="$realname"T
--
--	  # Install the shared library and build the symlinks.
--	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
--	      'exit $?'
--	  tstripme="$stripme"
--	  case $host_os in
--	  cygwin* | mingw* | pw32* | cegcc*)
--	    case $realname in
--	    *.dll.a)
--	      tstripme=""
--	      ;;
--	    esac
--	    ;;
--	  esac
--	  if test -n "$tstripme" && test -n "$striplib"; then
--	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
--	  fi
--
--	  if test "$#" -gt 0; then
--	    # Delete the old symlinks, and create new ones.
--	    # Try `ln -sf' first, because the `ln' binary might depend on
--	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
--	    # so we also need to try rm && ln -s.
--	    for linkname
--	    do
--	      test "$linkname" != "$realname" \
--		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
--	    done
--	  fi
--
--	  # Do each command in the postinstall commands.
--	  lib="$destdir/$realname"
--	  func_execute_cmds "$postinstall_cmds" 'exit $?'
--	fi
--
--	# Install the pseudo-library for information purposes.
--	func_basename "$file"
--	name="$func_basename_result"
--	instname="$dir/$name"i
--	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
--
--	# Maybe install the static library, too.
--	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
--	;;
--
--      *.lo)
--	# Install (i.e. copy) a libtool object.
--
--	# Figure out destination file name, if it wasn't already specified.
--	if test -n "$destname"; then
--	  destfile="$destdir/$destname"
--	else
--	  func_basename "$file"
--	  destfile="$func_basename_result"
--	  destfile="$destdir/$destfile"
--	fi
--
--	# Deduce the name of the destination old-style object file.
--	case $destfile in
--	*.lo)
--	  func_lo2o "$destfile"
--	  staticdest=$func_lo2o_result
--	  ;;
--	*.$objext)
--	  staticdest="$destfile"
--	  destfile=
--	  ;;
--	*)
--	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
--	  ;;
--	esac
--
--	# Install the libtool object if requested.
--	test -n "$destfile" && \
--	  func_show_eval "$install_prog $file $destfile" 'exit $?'
--
--	# Install the old object if enabled.
--	if test "$build_old_libs" = yes; then
--	  # Deduce the name of the old-style object file.
--	  func_lo2o "$file"
--	  staticobj=$func_lo2o_result
--	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
--	fi
--	exit $EXIT_SUCCESS
--	;;
--
--      *)
--	# Figure out destination file name, if it wasn't already specified.
--	if test -n "$destname"; then
--	  destfile="$destdir/$destname"
--	else
--	  func_basename "$file"
--	  destfile="$func_basename_result"
--	  destfile="$destdir/$destfile"
--	fi
--
--	# If the file is missing, and there is a .exe on the end, strip it
--	# because it is most likely a libtool script we actually want to
--	# install
--	stripped_ext=""
--	case $file in
--	  *.exe)
--	    if test ! -f "$file"; then
--	      func_stripname '' '.exe' "$file"
--	      file=$func_stripname_result
--	      stripped_ext=".exe"
--	    fi
--	    ;;
--	esac
--
--	# Do a test to see if this is really a libtool program.
--	case $host in
--	*cygwin* | *mingw*)
--	    if func_ltwrapper_executable_p "$file"; then
--	      func_ltwrapper_scriptname "$file"
--	      wrapper=$func_ltwrapper_scriptname_result
--	    else
--	      func_stripname '' '.exe' "$file"
--	      wrapper=$func_stripname_result
--	    fi
--	    ;;
--	*)
--	    wrapper=$file
--	    ;;
--	esac
--	if func_ltwrapper_script_p "$wrapper"; then
--	  notinst_deplibs=
--	  relink_command=
--
--	  func_source "$wrapper"
--
--	  # Check the variables that should have been set.
--	  test -z "$generated_by_libtool_version" && \
--	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
--
--	  finalize=yes
--	  for lib in $notinst_deplibs; do
--	    # Check to see that each library is installed.
--	    libdir=
--	    if test -f "$lib"; then
--	      func_source "$lib"
--	    fi
--	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
--	    if test -n "$libdir" && test ! -f "$libfile"; then
--	      func_warning "\`$lib' has not been installed in \`$libdir'"
--	      finalize=no
--	    fi
--	  done
--
--	  relink_command=
--	  func_source "$wrapper"
--
--	  outputname=
--	  if test "$fast_install" = no && test -n "$relink_command"; then
--	    $opt_dry_run || {
--	      if test "$finalize" = yes; then
--	        tmpdir=`func_mktempdir`
--		func_basename "$file$stripped_ext"
--		file="$func_basename_result"
--	        outputname="$tmpdir/$file"
--	        # Replace the output file specification.
--	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
--
--	        $opt_silent || {
--	          func_quote_for_expand "$relink_command"
--		  eval "func_echo $func_quote_for_expand_result"
--	        }
--	        if eval "$relink_command"; then :
--	          else
--		  func_error "error: relink \`$file' with the above command before installing it"
--		  $opt_dry_run || ${RM}r "$tmpdir"
--		  continue
--	        fi
--	        file="$outputname"
--	      else
--	        func_warning "cannot relink \`$file'"
--	      fi
--	    }
--	  else
--	    # Install the binary that we compiled earlier.
--	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
--	  fi
--	fi
--
--	# remove .exe since cygwin /usr/bin/install will append another
--	# one anyway
--	case $install_prog,$host in
--	*/usr/bin/install*,*cygwin*)
--	  case $file:$destfile in
--	  *.exe:*.exe)
--	    # this is ok
--	    ;;
--	  *.exe:*)
--	    destfile=$destfile.exe
--	    ;;
--	  *:*.exe)
--	    func_stripname '' '.exe' "$destfile"
--	    destfile=$func_stripname_result
--	    ;;
--	  esac
--	  ;;
--	esac
--	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
--	$opt_dry_run || if test -n "$outputname"; then
--	  ${RM}r "$tmpdir"
--	fi
--	;;
--      esac
--    done
--
--    for file in $staticlibs; do
--      func_basename "$file"
--      name="$func_basename_result"
--
--      # Set up the ranlib parameters.
--      oldlib="$destdir/$name"
--      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
--      tool_oldlib=$func_to_tool_file_result
--
--      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
--
--      if test -n "$stripme" && test -n "$old_striplib"; then
--	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
--      fi
--
--      # Do each command in the postinstall commands.
--      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
--    done
--
--    test -n "$future_libdirs" && \
--      func_warning "remember to run \`$progname --finish$future_libdirs'"
--
--    if test -n "$current_libdirs"; then
--      # Maybe just do a dry run.
--      $opt_dry_run && current_libdirs=" -n$current_libdirs"
--      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
--    else
--      exit $EXIT_SUCCESS
--    fi
--}
--
--test "$opt_mode" = install && func_mode_install ${1+"$@"}
--
--
--# func_generate_dlsyms outputname originator pic_p
--# Extract symbols from dlprefiles and create ${outputname}S.o with
--# a dlpreopen symbol table.
--func_generate_dlsyms ()
--{
--    $opt_debug
--    my_outputname="$1"
--    my_originator="$2"
--    my_pic_p="${3-no}"
--    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
--    my_dlsyms=
--
--    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
--      if test -n "$NM" && test -n "$global_symbol_pipe"; then
--	my_dlsyms="${my_outputname}S.c"
--      else
--	func_error "not configured to extract global symbols from dlpreopened files"
--      fi
--    fi
--
--    if test -n "$my_dlsyms"; then
--      case $my_dlsyms in
--      "") ;;
--      *.c)
--	# Discover the nlist of each of the dlfiles.
--	nlist="$output_objdir/${my_outputname}.nm"
--
--	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
--
--	# Parse the name list into a source file.
--	func_verbose "creating $output_objdir/$my_dlsyms"
--
--	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
--/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
--/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
--
--#ifdef __cplusplus
--extern \"C\" {
--#endif
--
--#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
--#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
--#endif
--
--/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
--#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
--/* DATA imports from DLLs on WIN32 con't be const, because runtime
--   relocations are performed -- see ld's documentation on pseudo-relocs.  */
--# define LT_DLSYM_CONST
--#elif defined(__osf__)
--/* This system does not cope well with relocations in const data.  */
--# define LT_DLSYM_CONST
--#else
--# define LT_DLSYM_CONST const
--#endif
--
--/* External symbol declarations for the compiler. */\
--"
--
--	if test "$dlself" = yes; then
--	  func_verbose "generating symbol list for \`$output'"
--
--	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
--
--	  # Add our own program objects to the symbol list.
--	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
--	  for progfile in $progfiles; do
--	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
--	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
--	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
--	  done
--
--	  if test -n "$exclude_expsyms"; then
--	    $opt_dry_run || {
--	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
--	      eval '$MV "$nlist"T "$nlist"'
--	    }
--	  fi
--
--	  if test -n "$export_symbols_regex"; then
--	    $opt_dry_run || {
--	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
--	      eval '$MV "$nlist"T "$nlist"'
--	    }
--	  fi
--
--	  # Prepare the list of exported symbols
--	  if test -z "$export_symbols"; then
--	    export_symbols="$output_objdir/$outputname.exp"
--	    $opt_dry_run || {
--	      $RM $export_symbols
--	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
--	      case $host in
--	      *cygwin* | *mingw* | *cegcc* )
--                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
--                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
--	        ;;
--	      esac
--	    }
--	  else
--	    $opt_dry_run || {
--	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
--	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
--	      eval '$MV "$nlist"T "$nlist"'
--	      case $host in
--	        *cygwin* | *mingw* | *cegcc* )
--	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
--	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
--	          ;;
--	      esac
--	    }
--	  fi
--	fi
--
--	for dlprefile in $dlprefiles; do
--	  func_verbose "extracting global C symbols from \`$dlprefile'"
--	  func_basename "$dlprefile"
--	  name="$func_basename_result"
--          case $host in
--	    *cygwin* | *mingw* | *cegcc* )
--	      # if an import library, we need to obtain dlname
--	      if func_win32_import_lib_p "$dlprefile"; then
--	        func_tr_sh "$dlprefile"
--	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
--	        dlprefile_dlbasename=""
--	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
--	          # Use subshell, to avoid clobbering current variable values
--	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
--	          if test -n "$dlprefile_dlname" ; then
--	            func_basename "$dlprefile_dlname"
--	            dlprefile_dlbasename="$func_basename_result"
--	          else
--	            # no lafile. user explicitly requested -dlpreopen <import library>.
--	            $sharedlib_from_linklib_cmd "$dlprefile"
--	            dlprefile_dlbasename=$sharedlib_from_linklib_result
--	          fi
--	        fi
--	        $opt_dry_run || {
--	          if test -n "$dlprefile_dlbasename" ; then
--	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
--	          else
--	            func_warning "Could not compute DLL name from $name"
--	            eval '$ECHO ": $name " >> "$nlist"'
--	          fi
--	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
--	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
--	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
--	        }
--	      else # not an import lib
--	        $opt_dry_run || {
--	          eval '$ECHO ": $name " >> "$nlist"'
--	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
--	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
--	        }
--	      fi
--	    ;;
--	    *)
--	      $opt_dry_run || {
--	        eval '$ECHO ": $name " >> "$nlist"'
--	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
--	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
--	      }
--	    ;;
--          esac
--	done
--
--	$opt_dry_run || {
--	  # Make sure we have at least an empty file.
--	  test -f "$nlist" || : > "$nlist"
--
--	  if test -n "$exclude_expsyms"; then
--	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
--	    $MV "$nlist"T "$nlist"
--	  fi
--
--	  # Try sorting and uniquifying the output.
--	  if $GREP -v "^: " < "$nlist" |
--	      if sort -k 3 </dev/null >/dev/null 2>&1; then
--		sort -k 3
--	      else
--		sort +2
--	      fi |
--	      uniq > "$nlist"S; then
--	    :
--	  else
--	    $GREP -v "^: " < "$nlist" > "$nlist"S
--	  fi
--
--	  if test -f "$nlist"S; then
--	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
--	  else
--	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
--	  fi
--
--	  echo >> "$output_objdir/$my_dlsyms" "\
--
--/* The mapping between symbol names and symbols.  */
--typedef struct {
--  const char *name;
--  void *address;
--} lt_dlsymlist;
--extern LT_DLSYM_CONST lt_dlsymlist
--lt_${my_prefix}_LTX_preloaded_symbols[];
--LT_DLSYM_CONST lt_dlsymlist
--lt_${my_prefix}_LTX_preloaded_symbols[] =
--{\
--  { \"$my_originator\", (void *) 0 },"
--
--	  case $need_lib_prefix in
--	  no)
--	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
--	    ;;
--	  *)
--	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
--	    ;;
--	  esac
--	  echo >> "$output_objdir/$my_dlsyms" "\
--  {0, (void *) 0}
--};
--
--/* This works around a problem in FreeBSD linker */
--#ifdef FREEBSD_WORKAROUND
--static const void *lt_preloaded_setup() {
--  return lt_${my_prefix}_LTX_preloaded_symbols;
--}
--#endif
--
--#ifdef __cplusplus
--}
--#endif\
--"
--	} # !$opt_dry_run
--
--	pic_flag_for_symtable=
--	case "$compile_command " in
--	*" -static "*) ;;
--	*)
--	  case $host in
--	  # compiling the symbol table file with pic_flag works around
--	  # a FreeBSD bug that causes programs to crash when -lm is
--	  # linked before any other PIC object.  But we must not use
--	  # pic_flag when linking with -static.  The problem exists in
--	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
--	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
--	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
--	  *-*-hpux*)
--	    pic_flag_for_symtable=" $pic_flag"  ;;
--	  *)
--	    if test "X$my_pic_p" != Xno; then
--	      pic_flag_for_symtable=" $pic_flag"
--	    fi
--	    ;;
--	  esac
--	  ;;
--	esac
--	symtab_cflags=
--	for arg in $LTCFLAGS; do
--	  case $arg in
--	  -pie | -fpie | -fPIE) ;;
--	  *) func_append symtab_cflags " $arg" ;;
--	  esac
--	done
--
--	# Now compile the dynamic symbol file.
--	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
--
--	# Clean up the generated files.
--	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
--
--	# Transform the symbol file into the correct name.
--	symfileobj="$output_objdir/${my_outputname}S.$objext"
--	case $host in
--	*cygwin* | *mingw* | *cegcc* )
--	  if test -f "$output_objdir/$my_outputname.def"; then
--	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
--	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
--	  else
--	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
--	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
--	  fi
--	  ;;
--	*)
--	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
--	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
--	  ;;
--	esac
--	;;
--      *)
--	func_fatal_error "unknown suffix for \`$my_dlsyms'"
--	;;
--      esac
--    else
--      # We keep going just in case the user didn't refer to
--      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
--      # really was required.
--
--      # Nullify the symbol file.
--      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
--      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
--    fi
--}
--
--# func_win32_libid arg
--# return the library type of file 'arg'
--#
--# Need a lot of goo to handle *both* DLLs and import libs
--# Has to be a shell function in order to 'eat' the argument
--# that is supplied when $file_magic_command is called.
--# Despite the name, also deal with 64 bit binaries.
--func_win32_libid ()
--{
--  $opt_debug
--  win32_libid_type="unknown"
--  win32_fileres=`file -L $1 2>/dev/null`
--  case $win32_fileres in
--  *ar\ archive\ import\ library*) # definitely import
--    win32_libid_type="x86 archive import"
--    ;;
--  *ar\ archive*) # could be an import, or static
--    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
--    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
--       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
--      func_to_tool_file "$1" func_convert_file_msys_to_w32
--      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
--	$SED -n -e '
--	    1,100{
--		/ I /{
--		    s,.*,import,
--		    p
--		    q
--		}
--	    }'`
--      case $win32_nmres in
--      import*)  win32_libid_type="x86 archive import";;
--      *)        win32_libid_type="x86 archive static";;
--      esac
--    fi
--    ;;
--  *DLL*)
--    win32_libid_type="x86 DLL"
--    ;;
--  *executable*) # but shell scripts are "executable" too...
--    case $win32_fileres in
--    *MS\ Windows\ PE\ Intel*)
--      win32_libid_type="x86 DLL"
--      ;;
--    esac
--    ;;
--  esac
--  $ECHO "$win32_libid_type"
--}
--
--# func_cygming_dll_for_implib ARG
--#
--# Platform-specific function to extract the
--# name of the DLL associated with the specified
--# import library ARG.
--# Invoked by eval'ing the libtool variable
--#    $sharedlib_from_linklib_cmd
--# Result is available in the variable
--#    $sharedlib_from_linklib_result
--func_cygming_dll_for_implib ()
--{
--  $opt_debug
--  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
--}
--
--# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
--#
--# The is the core of a fallback implementation of a
--# platform-specific function to extract the name of the
--# DLL associated with the specified import library LIBNAME.
--#
--# SECTION_NAME is either .idata$6 or .idata$7, depending
--# on the platform and compiler that created the implib.
--#
--# Echos the name of the DLL associated with the
--# specified import library.
--func_cygming_dll_for_implib_fallback_core ()
--{
--  $opt_debug
--  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
--  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
--    $SED '/^Contents of section '"$match_literal"':/{
--      # Place marker at beginning of archive member dllname section
--      s/.*/====MARK====/
--      p
--      d
--    }
--    # These lines can sometimes be longer than 43 characters, but
--    # are always uninteresting
--    /:[	 ]*file format pe[i]\{,1\}-/d
--    /^In archive [^:]*:/d
--    # Ensure marker is printed
--    /^====MARK====/p
--    # Remove all lines with less than 43 characters
--    /^.\{43\}/!d
--    # From remaining lines, remove first 43 characters
--    s/^.\{43\}//' |
--    $SED -n '
--      # Join marker and all lines until next marker into a single line
--      /^====MARK====/ b para
--      H
--      $ b para
--      b
--      :para
--      x
--      s/\n//g
--      # Remove the marker
--      s/^====MARK====//
--      # Remove trailing dots and whitespace
--      s/[\. \t]*$//
--      # Print
--      /./p' |
--    # we now have a list, one entry per line, of the stringified
--    # contents of the appropriate section of all members of the
--    # archive which possess that section. Heuristic: eliminate
--    # all those which have a first or second character that is
--    # a '.' (that is, objdump's representation of an unprintable
--    # character.) This should work for all archives with less than
--    # 0x302f exports -- but will fail for DLLs whose name actually
--    # begins with a literal '.' or a single character followed by
--    # a '.'.
--    #
--    # Of those that remain, print the first one.
--    $SED -e '/^\./d;/^.\./d;q'
--}
--
--# func_cygming_gnu_implib_p ARG
--# This predicate returns with zero status (TRUE) if
--# ARG is a GNU/binutils-style import library. Returns
--# with nonzero status (FALSE) otherwise.
--func_cygming_gnu_implib_p ()
--{
--  $opt_debug
--  func_to_tool_file "$1" func_convert_file_msys_to_w32
--  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
--  test -n "$func_cygming_gnu_implib_tmp"
--}
--
--# func_cygming_ms_implib_p ARG
--# This predicate returns with zero status (TRUE) if
--# ARG is an MS-style import library. Returns
--# with nonzero status (FALSE) otherwise.
--func_cygming_ms_implib_p ()
--{
--  $opt_debug
--  func_to_tool_file "$1" func_convert_file_msys_to_w32
--  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
--  test -n "$func_cygming_ms_implib_tmp"
--}
--
--# func_cygming_dll_for_implib_fallback ARG
--# Platform-specific function to extract the
--# name of the DLL associated with the specified
--# import library ARG.
--#
--# This fallback implementation is for use when $DLLTOOL
--# does not support the --identify-strict option.
--# Invoked by eval'ing the libtool variable
--#    $sharedlib_from_linklib_cmd
--# Result is available in the variable
--#    $sharedlib_from_linklib_result
--func_cygming_dll_for_implib_fallback ()
--{
--  $opt_debug
--  if func_cygming_gnu_implib_p "$1" ; then
--    # binutils import library
--    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
--  elif func_cygming_ms_implib_p "$1" ; then
--    # ms-generated import library
--    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
--  else
--    # unknown
--    sharedlib_from_linklib_result=""
--  fi
--}
--
--
--# func_extract_an_archive dir oldlib
--func_extract_an_archive ()
--{
--    $opt_debug
--    f_ex_an_ar_dir="$1"; shift
--    f_ex_an_ar_oldlib="$1"
--    if test "$lock_old_archive_extraction" = yes; then
--      lockfile=$f_ex_an_ar_oldlib.lock
--      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
--	func_echo "Waiting for $lockfile to be removed"
--	sleep 2
--      done
--    fi
--    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
--		   'stat=$?; rm -f "$lockfile"; exit $stat'
--    if test "$lock_old_archive_extraction" = yes; then
--      $opt_dry_run || rm -f "$lockfile"
--    fi
--    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
--     :
--    else
--      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
--    fi
--}
--
--
--# func_extract_archives gentop oldlib ...
--func_extract_archives ()
--{
--    $opt_debug
--    my_gentop="$1"; shift
--    my_oldlibs=${1+"$@"}
--    my_oldobjs=""
--    my_xlib=""
--    my_xabs=""
--    my_xdir=""
--
--    for my_xlib in $my_oldlibs; do
--      # Extract the objects.
--      case $my_xlib in
--	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
--	*) my_xabs=`pwd`"/$my_xlib" ;;
--      esac
--      func_basename "$my_xlib"
--      my_xlib="$func_basename_result"
--      my_xlib_u=$my_xlib
--      while :; do
--        case " $extracted_archives " in
--	*" $my_xlib_u "*)
--	  func_arith $extracted_serial + 1
--	  extracted_serial=$func_arith_result
--	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
--	*) break ;;
--	esac
--      done
--      extracted_archives="$extracted_archives $my_xlib_u"
--      my_xdir="$my_gentop/$my_xlib_u"
--
--      func_mkdir_p "$my_xdir"
--
--      case $host in
--      *-darwin*)
--	func_verbose "Extracting $my_xabs"
--	# Do not bother doing anything if just a dry run
--	$opt_dry_run || {
--	  darwin_orig_dir=`pwd`
--	  cd $my_xdir || exit $?
--	  darwin_archive=$my_xabs
--	  darwin_curdir=`pwd`
--	  darwin_base_archive=`basename "$darwin_archive"`
--	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
--	  if test -n "$darwin_arches"; then
--	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
--	    darwin_arch=
--	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
--	    for darwin_arch in  $darwin_arches ; do
--	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
--	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
--	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
--	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
--	      cd "$darwin_curdir"
--	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
--	    done # $darwin_arches
--            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
--	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
--	    darwin_file=
--	    darwin_files=
--	    for darwin_file in $darwin_filelist; do
--	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
--	      $LIPO -create -output "$darwin_file" $darwin_files
--	    done # $darwin_filelist
--	    $RM -rf unfat-$$
--	    cd "$darwin_orig_dir"
--	  else
--	    cd $darwin_orig_dir
--	    func_extract_an_archive "$my_xdir" "$my_xabs"
--	  fi # $darwin_arches
--	} # !$opt_dry_run
--	;;
--      *)
--        func_extract_an_archive "$my_xdir" "$my_xabs"
--	;;
--      esac
--      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
--    done
--
--    func_extract_archives_result="$my_oldobjs"
--}
--
--
--# func_emit_wrapper [arg=no]
--#
--# Emit a libtool wrapper script on stdout.
--# Don't directly open a file because we may want to
--# incorporate the script contents within a cygwin/mingw
--# wrapper executable.  Must ONLY be called from within
--# func_mode_link because it depends on a number of variables
--# set therein.
--#
--# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
--# variable will take.  If 'yes', then the emitted script
--# will assume that the directory in which it is stored is
--# the $objdir directory.  This is a cygwin/mingw-specific
--# behavior.
--func_emit_wrapper ()
--{
--	func_emit_wrapper_arg1=${1-no}
--
--	$ECHO "\
--#! $SHELL
--
--# $output - temporary wrapper script for $objdir/$outputname
--# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
--#
--# The $output program cannot be directly executed until all the libtool
--# libraries that it depends on are installed.
--#
--# This wrapper script should never be moved out of the build directory.
--# If it is, it will not operate correctly.
--
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--sed_quote_subst='$sed_quote_subst'
--
--# Be Bourne compatible
--if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
--  emulate sh
--  NULLCMD=:
--  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
--  # is contrary to our usage.  Disable this feature.
--  alias -g '\${1+\"\$@\"}'='\"\$@\"'
--  setopt NO_GLOB_SUBST
--else
--  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
--fi
--BIN_SH=xpg4; export BIN_SH # for Tru64
--DUALCASE=1; export DUALCASE # for MKS sh
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--relink_command=\"$relink_command\"
--
--# This environment variable determines our operation mode.
--if test \"\$libtool_install_magic\" = \"$magic\"; then
--  # install mode needs the following variables:
--  generated_by_libtool_version='$macro_version'
--  notinst_deplibs='$notinst_deplibs'
--else
--  # When we are sourced in execute mode, \$file and \$ECHO are already set.
--  if test \"\$libtool_execute_magic\" != \"$magic\"; then
--    file=\"\$0\""
--
--    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
--    $ECHO "\
--
--# A function that is used when there is no print builtin or printf.
--func_fallback_echo ()
--{
--  eval 'cat <<_LTECHO_EOF
--\$1
--_LTECHO_EOF'
--}
--    ECHO=\"$qECHO\"
--  fi
--
--# Very basic option parsing. These options are (a) specific to
--# the libtool wrapper, (b) are identical between the wrapper
--# /script/ and the wrapper /executable/ which is used only on
--# windows platforms, and (c) all begin with the string "--lt-"
--# (application programs are unlikely to have options which match
--# this pattern).
--#
--# There are only two supported options: --lt-debug and
--# --lt-dump-script. There is, deliberately, no --lt-help.
--#
--# The first argument to this parsing function should be the
--# script's $0 value, followed by "$@".
--lt_option_debug=
--func_parse_lt_options ()
--{
--  lt_script_arg0=\$0
--  shift
--  for lt_opt
--  do
--    case \"\$lt_opt\" in
--    --lt-debug) lt_option_debug=1 ;;
--    --lt-dump-script)
--        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
--        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
--        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
--        cat \"\$lt_dump_D/\$lt_dump_F\"
--        exit 0
--      ;;
--    --lt-*)
--        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
--        exit 1
--      ;;
--    esac
--  done
--
--  # Print the debug banner immediately:
--  if test -n \"\$lt_option_debug\"; then
--    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
--  fi
--}
--
--# Used when --lt-debug. Prints its arguments to stdout
--# (redirection is the responsibility of the caller)
--func_lt_dump_args ()
--{
--  lt_dump_args_N=1;
--  for lt_arg
--  do
--    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
--    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
--  done
--}
--
--# Core function for launching the target application
--func_exec_program_core ()
--{
--"
--  case $host in
--  # Backslashes separate directories on plain windows
--  *-*-mingw | *-*-os2* | *-cegcc*)
--    $ECHO "\
--      if test -n \"\$lt_option_debug\"; then
--        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
--        func_lt_dump_args \${1+\"\$@\"} 1>&2
--      fi
--      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
--"
--    ;;
--
--  *)
--    $ECHO "\
--      if test -n \"\$lt_option_debug\"; then
--        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
--        func_lt_dump_args \${1+\"\$@\"} 1>&2
--      fi
--      exec \"\$progdir/\$program\" \${1+\"\$@\"}
--"
--    ;;
--  esac
--  $ECHO "\
--      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
--      exit 1
--}
--
--# A function to encapsulate launching the target application
--# Strips options in the --lt-* namespace from \$@ and
--# launches target application with the remaining arguments.
--func_exec_program ()
--{
--  case \" \$* \" in
--  *\\ --lt-*)
--    for lt_wr_arg
--    do
--      case \$lt_wr_arg in
--      --lt-*) ;;
--      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
--      esac
--      shift
--    done ;;
--  esac
--  func_exec_program_core \${1+\"\$@\"}
--}
--
--  # Parse options
--  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
--
--  # Find the directory that this script lives in.
--  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
--  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
--
--  # Follow symbolic links until we get to the real thisdir.
--  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
--  while test -n \"\$file\"; do
--    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
--
--    # If there was a directory component, then change thisdir.
--    if test \"x\$destdir\" != \"x\$file\"; then
--      case \"\$destdir\" in
--      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
--      *) thisdir=\"\$thisdir/\$destdir\" ;;
--      esac
--    fi
--
--    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
--    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
--  done
--
--  # Usually 'no', except on cygwin/mingw when embedded into
--  # the cwrapper.
--  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
--  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
--    # special case for '.'
--    if test \"\$thisdir\" = \".\"; then
--      thisdir=\`pwd\`
--    fi
--    # remove .libs from thisdir
--    case \"\$thisdir\" in
--    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
--    $objdir )   thisdir=. ;;
--    esac
--  fi
--
--  # Try to get the absolute directory name.
--  absdir=\`cd \"\$thisdir\" && pwd\`
--  test -n \"\$absdir\" && thisdir=\"\$absdir\"
--"
--
--	if test "$fast_install" = yes; then
--	  $ECHO "\
--  program=lt-'$outputname'$exeext
--  progdir=\"\$thisdir/$objdir\"
--
--  if test ! -f \"\$progdir/\$program\" ||
--     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
--       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
--
--    file=\"\$\$-\$program\"
--
--    if test ! -d \"\$progdir\"; then
--      $MKDIR \"\$progdir\"
--    else
--      $RM \"\$progdir/\$file\"
--    fi"
--
--	  $ECHO "\
--
--    # relink executable if necessary
--    if test -n \"\$relink_command\"; then
--      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
--      else
--	$ECHO \"\$relink_command_output\" >&2
--	$RM \"\$progdir/\$file\"
--	exit 1
--      fi
--    fi
--
--    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
--    { $RM \"\$progdir/\$program\";
--      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
--    $RM \"\$progdir/\$file\"
--  fi"
--	else
--	  $ECHO "\
--  program='$outputname'
--  progdir=\"\$thisdir/$objdir\"
--"
--	fi
--
--	$ECHO "\
--
--  if test -f \"\$progdir/\$program\"; then"
--
--	# fixup the dll searchpath if we need to.
--	#
--	# Fix the DLL searchpath if we need to.  Do this before prepending
--	# to shlibpath, because on Windows, both are PATH and uninstalled
--	# libraries must come first.
--	if test -n "$dllsearchpath"; then
--	  $ECHO "\
--    # Add the dll search path components to the executable PATH
--    PATH=$dllsearchpath:\$PATH
--"
--	fi
--
--	# Export our shlibpath_var if we have one.
--	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
--	  $ECHO "\
--    # Add our own library path to $shlibpath_var
--    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
--
--    # Some systems cannot cope with colon-terminated $shlibpath_var
--    # The second colon is a workaround for a bug in BeOS R4 sed
--    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
--
--    export $shlibpath_var
--"
--	fi
--
--	$ECHO "\
--    if test \"\$libtool_execute_magic\" != \"$magic\"; then
--      # Run the actual program with our arguments.
--      func_exec_program \${1+\"\$@\"}
--    fi
--  else
--    # The program doesn't exist.
--    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
--    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
--    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
--    exit 1
--  fi
--fi\
--"
--}
--
--
--# func_emit_cwrapperexe_src
--# emit the source code for a wrapper executable on stdout
--# Must ONLY be called from within func_mode_link because
--# it depends on a number of variable set therein.
--func_emit_cwrapperexe_src ()
--{
--	cat <<EOF
--
--/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
--   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
--
--   The $output program cannot be directly executed until all the libtool
--   libraries that it depends on are installed.
--
--   This wrapper executable should never be moved out of the build directory.
--   If it is, it will not operate correctly.
--*/
--EOF
--	    cat <<"EOF"
--#ifdef _MSC_VER
--# define _CRT_SECURE_NO_DEPRECATE 1
--#endif
--#include <stdio.h>
--#include <stdlib.h>
--#ifdef _MSC_VER
--# include <direct.h>
--# include <process.h>
--# include <io.h>
--#else
--# include <unistd.h>
--# include <stdint.h>
--# ifdef __CYGWIN__
--#  include <io.h>
--# endif
--#endif
--#include <malloc.h>
--#include <stdarg.h>
--#include <assert.h>
--#include <string.h>
--#include <ctype.h>
--#include <errno.h>
--#include <fcntl.h>
--#include <sys/stat.h>
--
--/* declarations of non-ANSI functions */
--#if defined(__MINGW32__)
--# ifdef __STRICT_ANSI__
--int _putenv (const char *);
--# endif
--#elif defined(__CYGWIN__)
--# ifdef __STRICT_ANSI__
--char *realpath (const char *, char *);
--int putenv (char *);
--int setenv (const char *, const char *, int);
--# endif
--/* #elif defined (other platforms) ... */
--#endif
--
--/* portability defines, excluding path handling macros */
--#if defined(_MSC_VER)
--# define setmode _setmode
--# define stat    _stat
--# define chmod   _chmod
--# define getcwd  _getcwd
--# define putenv  _putenv
--# define S_IXUSR _S_IEXEC
--# ifndef _INTPTR_T_DEFINED
--#  define _INTPTR_T_DEFINED
--#  define intptr_t int
--# endif
--#elif defined(__MINGW32__)
--# define setmode _setmode
--# define stat    _stat
--# define chmod   _chmod
--# define getcwd  _getcwd
--# define putenv  _putenv
--#elif defined(__CYGWIN__)
--# define HAVE_SETENV
--# define FOPEN_WB "wb"
--/* #elif defined (other platforms) ... */
--#endif
--
--#if defined(PATH_MAX)
--# define LT_PATHMAX PATH_MAX
--#elif defined(MAXPATHLEN)
--# define LT_PATHMAX MAXPATHLEN
--#else
--# define LT_PATHMAX 1024
--#endif
--
--#ifndef S_IXOTH
--# define S_IXOTH 0
--#endif
--#ifndef S_IXGRP
--# define S_IXGRP 0
--#endif
--
--/* path handling portability macros */
--#ifndef DIR_SEPARATOR
--# define DIR_SEPARATOR '/'
--# define PATH_SEPARATOR ':'
--#endif
--
--#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
--  defined (__OS2__)
--# define HAVE_DOS_BASED_FILE_SYSTEM
--# define FOPEN_WB "wb"
--# ifndef DIR_SEPARATOR_2
--#  define DIR_SEPARATOR_2 '\\'
--# endif
--# ifndef PATH_SEPARATOR_2
--#  define PATH_SEPARATOR_2 ';'
--# endif
--#endif
--
--#ifndef DIR_SEPARATOR_2
--# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
--#else /* DIR_SEPARATOR_2 */
--# define IS_DIR_SEPARATOR(ch) \
--	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
--#endif /* DIR_SEPARATOR_2 */
--
--#ifndef PATH_SEPARATOR_2
--# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
--#else /* PATH_SEPARATOR_2 */
--# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
--#endif /* PATH_SEPARATOR_2 */
--
--#ifndef FOPEN_WB
--# define FOPEN_WB "w"
--#endif
--#ifndef _O_BINARY
--# define _O_BINARY 0
--#endif
--
--#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
--#define XFREE(stale) do { \
--  if (stale) { free ((void *) stale); stale = 0; } \
--} while (0)
--
--#if defined(LT_DEBUGWRAPPER)
--static int lt_debug = 1;
--#else
--static int lt_debug = 0;
--#endif
--
--const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
--
--void *xmalloc (size_t num);
--char *xstrdup (const char *string);
--const char *base_name (const char *name);
--char *find_executable (const char *wrapper);
--char *chase_symlinks (const char *pathspec);
--int make_executable (const char *path);
--int check_executable (const char *path);
--char *strendzap (char *str, const char *pat);
--void lt_debugprintf (const char *file, int line, const char *fmt, ...);
--void lt_fatal (const char *file, int line, const char *message, ...);
--static const char *nonnull (const char *s);
--static const char *nonempty (const char *s);
--void lt_setenv (const char *name, const char *value);
--char *lt_extend_str (const char *orig_value, const char *add, int to_end);
--void lt_update_exe_path (const char *name, const char *value);
--void lt_update_lib_path (const char *name, const char *value);
--char **prepare_spawn (char **argv);
--void lt_dump_script (FILE *f);
--EOF
--
--	    cat <<EOF
--volatile const char * MAGIC_EXE = "$magic_exe";
--const char * LIB_PATH_VARNAME = "$shlibpath_var";
--EOF
--
--	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
--              func_to_host_path "$temp_rpath"
--	      cat <<EOF
--const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
--EOF
--	    else
--	      cat <<"EOF"
--const char * LIB_PATH_VALUE   = "";
--EOF
--	    fi
--
--	    if test -n "$dllsearchpath"; then
--              func_to_host_path "$dllsearchpath:"
--	      cat <<EOF
--const char * EXE_PATH_VARNAME = "PATH";
--const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
--EOF
--	    else
--	      cat <<"EOF"
--const char * EXE_PATH_VARNAME = "";
--const char * EXE_PATH_VALUE   = "";
--EOF
--	    fi
--
--	    if test "$fast_install" = yes; then
--	      cat <<EOF
--const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
--EOF
--	    else
--	      cat <<EOF
--const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
--EOF
--	    fi
--
--
--	    cat <<"EOF"
--
--#define LTWRAPPER_OPTION_PREFIX         "--lt-"
--
--static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
--static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
--static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
--
--int
--main (int argc, char *argv[])
--{
--  char **newargz;
--  int  newargc;
--  char *tmp_pathspec;
--  char *actual_cwrapper_path;
--  char *actual_cwrapper_name;
--  char *target_name;
--  char *lt_argv_zero;
--  intptr_t rval = 127;
--
--  int i;
--
--  program_name = (char *) xstrdup (base_name (argv[0]));
--  newargz = XMALLOC (char *, argc + 1);
--
--  /* very simple arg parsing; don't want to rely on getopt
--   * also, copy all non cwrapper options to newargz, except
--   * argz[0], which is handled differently
--   */
--  newargc=0;
--  for (i = 1; i < argc; i++)
--    {
--      if (strcmp (argv[i], dumpscript_opt) == 0)
--	{
--EOF
--	    case "$host" in
--	      *mingw* | *cygwin* )
--		# make stdout use "unix" line endings
--		echo "          setmode(1,_O_BINARY);"
--		;;
--	      esac
--
--	    cat <<"EOF"
--	  lt_dump_script (stdout);
--	  return 0;
--	}
--      if (strcmp (argv[i], debug_opt) == 0)
--	{
--          lt_debug = 1;
--          continue;
--	}
--      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
--        {
--          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
--             namespace, but it is not one of the ones we know about and
--             have already dealt with, above (inluding dump-script), then
--             report an error. Otherwise, targets might begin to believe
--             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
--             namespace. The first time any user complains about this, we'll
--             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
--             or a configure.ac-settable value.
--           */
--          lt_fatal (__FILE__, __LINE__,
--		    "unrecognized %s option: '%s'",
--                    ltwrapper_option_prefix, argv[i]);
--        }
--      /* otherwise ... */
--      newargz[++newargc] = xstrdup (argv[i]);
--    }
--  newargz[++newargc] = NULL;
--
--EOF
--	    cat <<EOF
--  /* The GNU banner must be the first non-error debug message */
--  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
--EOF
--	    cat <<"EOF"
--  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
--  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
--
--  tmp_pathspec = find_executable (argv[0]);
--  if (tmp_pathspec == NULL)
--    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
--  lt_debugprintf (__FILE__, __LINE__,
--                  "(main) found exe (before symlink chase) at: %s\n",
--		  tmp_pathspec);
--
--  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
--  lt_debugprintf (__FILE__, __LINE__,
--                  "(main) found exe (after symlink chase) at: %s\n",
--		  actual_cwrapper_path);
--  XFREE (tmp_pathspec);
--
--  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
--  strendzap (actual_cwrapper_path, actual_cwrapper_name);
--
--  /* wrapper name transforms */
--  strendzap (actual_cwrapper_name, ".exe");
--  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
--  XFREE (actual_cwrapper_name);
--  actual_cwrapper_name = tmp_pathspec;
--  tmp_pathspec = 0;
--
--  /* target_name transforms -- use actual target program name; might have lt- prefix */
--  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
--  strendzap (target_name, ".exe");
--  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
--  XFREE (target_name);
--  target_name = tmp_pathspec;
--  tmp_pathspec = 0;
--
--  lt_debugprintf (__FILE__, __LINE__,
--		  "(main) libtool target name: %s\n",
--		  target_name);
--EOF
--
--	    cat <<EOF
--  newargz[0] =
--    XMALLOC (char, (strlen (actual_cwrapper_path) +
--		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
--  strcpy (newargz[0], actual_cwrapper_path);
--  strcat (newargz[0], "$objdir");
--  strcat (newargz[0], "/");
--EOF
--
--	    cat <<"EOF"
--  /* stop here, and copy so we don't have to do this twice */
--  tmp_pathspec = xstrdup (newargz[0]);
--
--  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
--  strcat (newargz[0], actual_cwrapper_name);
--
--  /* DO want the lt- prefix here if it exists, so use target_name */
--  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
--  XFREE (tmp_pathspec);
--  tmp_pathspec = NULL;
--EOF
--
--	    case $host_os in
--	      mingw*)
--	    cat <<"EOF"
--  {
--    char* p;
--    while ((p = strchr (newargz[0], '\\')) != NULL)
--      {
--	*p = '/';
--      }
--    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
--      {
--	*p = '/';
--      }
--  }
--EOF
--	    ;;
--	    esac
--
--	    cat <<"EOF"
--  XFREE (target_name);
--  XFREE (actual_cwrapper_path);
--  XFREE (actual_cwrapper_name);
--
--  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
--  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
--  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
--     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
--     because on Windows, both *_VARNAMEs are PATH but uninstalled
--     libraries must come first. */
--  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
--  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
--
--  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
--		  nonnull (lt_argv_zero));
--  for (i = 0; i < newargc; i++)
--    {
--      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
--		      i, nonnull (newargz[i]));
--    }
--
--EOF
--
--	    case $host_os in
--	      mingw*)
--		cat <<"EOF"
--  /* execv doesn't actually work on mingw as expected on unix */
--  newargz = prepare_spawn (newargz);
--  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
--  if (rval == -1)
--    {
--      /* failed to start process */
--      lt_debugprintf (__FILE__, __LINE__,
--		      "(main) failed to launch target \"%s\": %s\n",
--		      lt_argv_zero, nonnull (strerror (errno)));
--      return 127;
--    }
--  return rval;
--EOF
--		;;
--	      *)
--		cat <<"EOF"
--  execv (lt_argv_zero, newargz);
--  return rval; /* =127, but avoids unused variable warning */
--EOF
--		;;
--	    esac
--
--	    cat <<"EOF"
--}
--
--void *
--xmalloc (size_t num)
--{
--  void *p = (void *) malloc (num);
--  if (!p)
--    lt_fatal (__FILE__, __LINE__, "memory exhausted");
--
--  return p;
--}
--
--char *
--xstrdup (const char *string)
--{
--  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
--			  string) : NULL;
--}
--
--const char *
--base_name (const char *name)
--{
--  const char *base;
--
--#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
--  /* Skip over the disk name in MSDOS pathnames. */
--  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
--    name += 2;
--#endif
--
--  for (base = name; *name; name++)
--    if (IS_DIR_SEPARATOR (*name))
--      base = name + 1;
--  return base;
--}
--
--int
--check_executable (const char *path)
--{
--  struct stat st;
--
--  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
--                  nonempty (path));
--  if ((!path) || (!*path))
--    return 0;
--
--  if ((stat (path, &st) >= 0)
--      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
--    return 1;
--  else
--    return 0;
--}
--
--int
--make_executable (const char *path)
--{
--  int rval = 0;
--  struct stat st;
--
--  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
--                  nonempty (path));
--  if ((!path) || (!*path))
--    return 0;
--
--  if (stat (path, &st) >= 0)
--    {
--      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
--    }
--  return rval;
--}
--
--/* Searches for the full path of the wrapper.  Returns
--   newly allocated full path name if found, NULL otherwise
--   Does not chase symlinks, even on platforms that support them.
--*/
--char *
--find_executable (const char *wrapper)
--{
--  int has_slash = 0;
--  const char *p;
--  const char *p_next;
--  /* static buffer for getcwd */
--  char tmp[LT_PATHMAX + 1];
--  int tmp_len;
--  char *concat_name;
--
--  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
--                  nonempty (wrapper));
--
--  if ((wrapper == NULL) || (*wrapper == '\0'))
--    return NULL;
--
--  /* Absolute path? */
--#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
--  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
--    {
--      concat_name = xstrdup (wrapper);
--      if (check_executable (concat_name))
--	return concat_name;
--      XFREE (concat_name);
--    }
--  else
--    {
--#endif
--      if (IS_DIR_SEPARATOR (wrapper[0]))
--	{
--	  concat_name = xstrdup (wrapper);
--	  if (check_executable (concat_name))
--	    return concat_name;
--	  XFREE (concat_name);
--	}
--#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
--    }
--#endif
--
--  for (p = wrapper; *p; p++)
--    if (*p == '/')
--      {
--	has_slash = 1;
--	break;
--      }
--  if (!has_slash)
--    {
--      /* no slashes; search PATH */
--      const char *path = getenv ("PATH");
--      if (path != NULL)
--	{
--	  for (p = path; *p; p = p_next)
--	    {
--	      const char *q;
--	      size_t p_len;
--	      for (q = p; *q; q++)
--		if (IS_PATH_SEPARATOR (*q))
--		  break;
--	      p_len = q - p;
--	      p_next = (*q == '\0' ? q : q + 1);
--	      if (p_len == 0)
--		{
--		  /* empty path: current directory */
--		  if (getcwd (tmp, LT_PATHMAX) == NULL)
--		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
--                              nonnull (strerror (errno)));
--		  tmp_len = strlen (tmp);
--		  concat_name =
--		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
--		  memcpy (concat_name, tmp, tmp_len);
--		  concat_name[tmp_len] = '/';
--		  strcpy (concat_name + tmp_len + 1, wrapper);
--		}
--	      else
--		{
--		  concat_name =
--		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
--		  memcpy (concat_name, p, p_len);
--		  concat_name[p_len] = '/';
--		  strcpy (concat_name + p_len + 1, wrapper);
--		}
--	      if (check_executable (concat_name))
--		return concat_name;
--	      XFREE (concat_name);
--	    }
--	}
--      /* not found in PATH; assume curdir */
--    }
--  /* Relative path | not found in path: prepend cwd */
--  if (getcwd (tmp, LT_PATHMAX) == NULL)
--    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
--              nonnull (strerror (errno)));
--  tmp_len = strlen (tmp);
--  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
--  memcpy (concat_name, tmp, tmp_len);
--  concat_name[tmp_len] = '/';
--  strcpy (concat_name + tmp_len + 1, wrapper);
--
--  if (check_executable (concat_name))
--    return concat_name;
--  XFREE (concat_name);
--  return NULL;
--}
--
--char *
--chase_symlinks (const char *pathspec)
--{
--#ifndef S_ISLNK
--  return xstrdup (pathspec);
--#else
--  char buf[LT_PATHMAX];
--  struct stat s;
--  char *tmp_pathspec = xstrdup (pathspec);
--  char *p;
--  int has_symlinks = 0;
--  while (strlen (tmp_pathspec) && !has_symlinks)
--    {
--      lt_debugprintf (__FILE__, __LINE__,
--		      "checking path component for symlinks: %s\n",
--		      tmp_pathspec);
--      if (lstat (tmp_pathspec, &s) == 0)
--	{
--	  if (S_ISLNK (s.st_mode) != 0)
--	    {
--	      has_symlinks = 1;
--	      break;
--	    }
--
--	  /* search backwards for last DIR_SEPARATOR */
--	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
--	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
--	    p--;
--	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
--	    {
--	      /* no more DIR_SEPARATORS left */
--	      break;
--	    }
--	  *p = '\0';
--	}
--      else
--	{
--	  lt_fatal (__FILE__, __LINE__,
--		    "error accessing file \"%s\": %s",
--		    tmp_pathspec, nonnull (strerror (errno)));
--	}
--    }
--  XFREE (tmp_pathspec);
--
--  if (!has_symlinks)
--    {
--      return xstrdup (pathspec);
--    }
--
--  tmp_pathspec = realpath (pathspec, buf);
--  if (tmp_pathspec == 0)
--    {
--      lt_fatal (__FILE__, __LINE__,
--		"could not follow symlinks for %s", pathspec);
--    }
--  return xstrdup (tmp_pathspec);
--#endif
--}
--
--char *
--strendzap (char *str, const char *pat)
--{
--  size_t len, patlen;
--
--  assert (str != NULL);
--  assert (pat != NULL);
--
--  len = strlen (str);
--  patlen = strlen (pat);
--
--  if (patlen <= len)
--    {
--      str += len - patlen;
--      if (strcmp (str, pat) == 0)
--	*str = '\0';
--    }
--  return str;
--}
--
--void
--lt_debugprintf (const char *file, int line, const char *fmt, ...)
--{
--  va_list args;
--  if (lt_debug)
--    {
--      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
--      va_start (args, fmt);
--      (void) vfprintf (stderr, fmt, args);
--      va_end (args);
--    }
--}
--
--static void
--lt_error_core (int exit_status, const char *file,
--	       int line, const char *mode,
--	       const char *message, va_list ap)
--{
--  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
--  vfprintf (stderr, message, ap);
--  fprintf (stderr, ".\n");
--
--  if (exit_status >= 0)
--    exit (exit_status);
--}
--
--void
--lt_fatal (const char *file, int line, const char *message, ...)
--{
--  va_list ap;
--  va_start (ap, message);
--  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
--  va_end (ap);
--}
--
--static const char *
--nonnull (const char *s)
--{
--  return s ? s : "(null)";
--}
--
--static const char *
--nonempty (const char *s)
--{
--  return (s && !*s) ? "(empty)" : nonnull (s);
--}
--
--void
--lt_setenv (const char *name, const char *value)
--{
--  lt_debugprintf (__FILE__, __LINE__,
--		  "(lt_setenv) setting '%s' to '%s'\n",
--                  nonnull (name), nonnull (value));
--  {
--#ifdef HAVE_SETENV
--    /* always make a copy, for consistency with !HAVE_SETENV */
--    char *str = xstrdup (value);
--    setenv (name, str, 1);
--#else
--    int len = strlen (name) + 1 + strlen (value) + 1;
--    char *str = XMALLOC (char, len);
--    sprintf (str, "%s=%s", name, value);
--    if (putenv (str) != EXIT_SUCCESS)
--      {
--        XFREE (str);
--      }
--#endif
--  }
--}
--
--char *
--lt_extend_str (const char *orig_value, const char *add, int to_end)
--{
--  char *new_value;
--  if (orig_value && *orig_value)
--    {
--      int orig_value_len = strlen (orig_value);
--      int add_len = strlen (add);
--      new_value = XMALLOC (char, add_len + orig_value_len + 1);
--      if (to_end)
--        {
--          strcpy (new_value, orig_value);
--          strcpy (new_value + orig_value_len, add);
--        }
--      else
--        {
--          strcpy (new_value, add);
--          strcpy (new_value + add_len, orig_value);
--        }
--    }
--  else
--    {
--      new_value = xstrdup (add);
--    }
--  return new_value;
--}
--
--void
--lt_update_exe_path (const char *name, const char *value)
--{
--  lt_debugprintf (__FILE__, __LINE__,
--		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
--                  nonnull (name), nonnull (value));
--
--  if (name && *name && value && *value)
--    {
--      char *new_value = lt_extend_str (getenv (name), value, 0);
--      /* some systems can't cope with a ':'-terminated path #' */
--      int len = strlen (new_value);
--      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
--        {
--          new_value[len-1] = '\0';
--        }
--      lt_setenv (name, new_value);
--      XFREE (new_value);
--    }
--}
--
--void
--lt_update_lib_path (const char *name, const char *value)
--{
--  lt_debugprintf (__FILE__, __LINE__,
--		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
--                  nonnull (name), nonnull (value));
--
--  if (name && *name && value && *value)
--    {
--      char *new_value = lt_extend_str (getenv (name), value, 0);
--      lt_setenv (name, new_value);
--      XFREE (new_value);
--    }
--}
--
--EOF
--	    case $host_os in
--	      mingw*)
--		cat <<"EOF"
--
--/* Prepares an argument vector before calling spawn().
--   Note that spawn() does not by itself call the command interpreter
--     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
--      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
--         GetVersionEx(&v);
--         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
--      }) ? "cmd.exe" : "command.com").
--   Instead it simply concatenates the arguments, separated by ' ', and calls
--   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
--   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
--   special way:
--   - Space and tab are interpreted as delimiters. They are not treated as
--     delimiters if they are surrounded by double quotes: "...".
--   - Unescaped double quotes are removed from the input. Their only effect is
--     that within double quotes, space and tab are treated like normal
--     characters.
--   - Backslashes not followed by double quotes are not special.
--   - But 2*n+1 backslashes followed by a double quote become
--     n backslashes followed by a double quote (n >= 0):
--       \" -> "
--       \\\" -> \"
--       \\\\\" -> \\"
-- */
--#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
--#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
--char **
--prepare_spawn (char **argv)
--{
--  size_t argc;
--  char **new_argv;
--  size_t i;
--
--  /* Count number of arguments.  */
--  for (argc = 0; argv[argc] != NULL; argc++)
--    ;
--
--  /* Allocate new argument vector.  */
--  new_argv = XMALLOC (char *, argc + 1);
--
--  /* Put quoted arguments into the new argument vector.  */
--  for (i = 0; i < argc; i++)
--    {
--      const char *string = argv[i];
--
--      if (string[0] == '\0')
--	new_argv[i] = xstrdup ("\"\"");
--      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
--	{
--	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
--	  size_t length;
--	  unsigned int backslashes;
--	  const char *s;
--	  char *quoted_string;
--	  char *p;
--
--	  length = 0;
--	  backslashes = 0;
--	  if (quote_around)
--	    length++;
--	  for (s = string; *s != '\0'; s++)
--	    {
--	      char c = *s;
--	      if (c == '"')
--		length += backslashes + 1;
--	      length++;
--	      if (c == '\\')
--		backslashes++;
--	      else
--		backslashes = 0;
--	    }
--	  if (quote_around)
--	    length += backslashes + 1;
--
--	  quoted_string = XMALLOC (char, length + 1);
--
--	  p = quoted_string;
--	  backslashes = 0;
--	  if (quote_around)
--	    *p++ = '"';
--	  for (s = string; *s != '\0'; s++)
--	    {
--	      char c = *s;
--	      if (c == '"')
--		{
--		  unsigned int j;
--		  for (j = backslashes + 1; j > 0; j--)
--		    *p++ = '\\';
--		}
--	      *p++ = c;
--	      if (c == '\\')
--		backslashes++;
--	      else
--		backslashes = 0;
--	    }
--	  if (quote_around)
--	    {
--	      unsigned int j;
--	      for (j = backslashes; j > 0; j--)
--		*p++ = '\\';
--	      *p++ = '"';
--	    }
--	  *p = '\0';
--
--	  new_argv[i] = quoted_string;
--	}
--      else
--	new_argv[i] = (char *) string;
--    }
--  new_argv[argc] = NULL;
--
--  return new_argv;
--}
--EOF
--		;;
--	    esac
--
--            cat <<"EOF"
--void lt_dump_script (FILE* f)
--{
--EOF
--	    func_emit_wrapper yes |
--	      $SED -n -e '
--s/^\(.\{79\}\)\(..*\)/\1\
--\2/
--h
--s/\([\\"]\)/\\\1/g
--s/$/\\n/
--s/\([^\n]*\).*/  fputs ("\1", f);/p
--g
--D'
--            cat <<"EOF"
--}
--EOF
--}
--# end: func_emit_cwrapperexe_src
--
--# func_win32_import_lib_p ARG
--# True if ARG is an import lib, as indicated by $file_magic_cmd
--func_win32_import_lib_p ()
--{
--    $opt_debug
--    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
--    *import*) : ;;
--    *) false ;;
--    esac
--}
--
--# func_mode_link arg...
--func_mode_link ()
--{
--    $opt_debug
--    case $host in
--    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
--      # It is impossible to link a dll without this setting, and
--      # we shouldn't force the makefile maintainer to figure out
--      # which system we are compiling for in order to pass an extra
--      # flag for every libtool invocation.
--      # allow_undefined=no
--
--      # FIXME: Unfortunately, there are problems with the above when trying
--      # to make a dll which has undefined symbols, in which case not
--      # even a static library is built.  For now, we need to specify
--      # -no-undefined on the libtool link line when we can be certain
--      # that all symbols are satisfied, otherwise we get a static library.
--      allow_undefined=yes
--      ;;
--    *)
--      allow_undefined=yes
--      ;;
--    esac
--    libtool_args=$nonopt
--    base_compile="$nonopt $@"
--    compile_command=$nonopt
--    finalize_command=$nonopt
--
--    compile_rpath=
--    finalize_rpath=
--    compile_shlibpath=
--    finalize_shlibpath=
--    convenience=
--    old_convenience=
--    deplibs=
--    old_deplibs=
--    compiler_flags=
--    linker_flags=
--    dllsearchpath=
--    lib_search_path=`pwd`
--    inst_prefix_dir=
--    new_inherited_linker_flags=
--
--    avoid_version=no
--    bindir=
--    dlfiles=
--    dlprefiles=
--    dlself=no
--    export_dynamic=no
--    export_symbols=
--    export_symbols_regex=
--    generated=
--    libobjs=
--    ltlibs=
--    module=no
--    no_install=no
--    objs=
--    non_pic_objects=
--    precious_files_regex=
--    prefer_static_libs=no
--    preload=no
--    prev=
--    prevarg=
--    release=
--    rpath=
--    xrpath=
--    perm_rpath=
--    temp_rpath=
--    thread_safe=no
--    vinfo=
--    vinfo_number=no
--    weak_libs=
--    single_module="${wl}-single_module"
--    func_infer_tag $base_compile
--
--    # We need to know -static, to get the right output filenames.
--    for arg
--    do
--      case $arg in
--      -shared)
--	test "$build_libtool_libs" != yes && \
--	  func_fatal_configuration "can not build a shared library"
--	build_old_libs=no
--	break
--	;;
--      -all-static | -static | -static-libtool-libs)
--	case $arg in
--	-all-static)
--	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
--	    func_warning "complete static linking is impossible in this configuration"
--	  fi
--	  if test -n "$link_static_flag"; then
--	    dlopen_self=$dlopen_self_static
--	  fi
--	  prefer_static_libs=yes
--	  ;;
--	-static)
--	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
--	    dlopen_self=$dlopen_self_static
--	  fi
--	  prefer_static_libs=built
--	  ;;
--	-static-libtool-libs)
--	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
--	    dlopen_self=$dlopen_self_static
--	  fi
--	  prefer_static_libs=yes
--	  ;;
--	esac
--	build_libtool_libs=no
--	build_old_libs=yes
--	break
--	;;
--      esac
--    done
--
--    # See if our shared archives depend on static archives.
--    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
--
--    # Go through the arguments, transforming them on the way.
--    while test "$#" -gt 0; do
--      arg="$1"
--      shift
--      func_quote_for_eval "$arg"
--      qarg=$func_quote_for_eval_unquoted_result
--      func_append libtool_args " $func_quote_for_eval_result"
--
--      # If the previous option needs an argument, assign it.
--      if test -n "$prev"; then
--	case $prev in
--	output)
--	  func_append compile_command " @OUTPUT@"
--	  func_append finalize_command " @OUTPUT@"
--	  ;;
--	esac
--
--	case $prev in
--	bindir)
--	  bindir="$arg"
--	  prev=
--	  continue
--	  ;;
--	dlfiles|dlprefiles)
--	  if test "$preload" = no; then
--	    # Add the symbol object into the linking commands.
--	    func_append compile_command " @SYMFILE@"
--	    func_append finalize_command " @SYMFILE@"
--	    preload=yes
--	  fi
--	  case $arg in
--	  *.la | *.lo) ;;  # We handle these cases below.
--	  force)
--	    if test "$dlself" = no; then
--	      dlself=needless
--	      export_dynamic=yes
--	    fi
--	    prev=
--	    continue
--	    ;;
--	  self)
--	    if test "$prev" = dlprefiles; then
--	      dlself=yes
--	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
--	      dlself=yes
--	    else
--	      dlself=needless
--	      export_dynamic=yes
--	    fi
--	    prev=
--	    continue
--	    ;;
--	  *)
--	    if test "$prev" = dlfiles; then
--	      func_append dlfiles " $arg"
--	    else
--	      func_append dlprefiles " $arg"
--	    fi
--	    prev=
--	    continue
--	    ;;
--	  esac
--	  ;;
--	expsyms)
--	  export_symbols="$arg"
--	  test -f "$arg" \
--	    || func_fatal_error "symbol file \`$arg' does not exist"
--	  prev=
--	  continue
--	  ;;
--	expsyms_regex)
--	  export_symbols_regex="$arg"
--	  prev=
--	  continue
--	  ;;
--	framework)
--	  case $host in
--	    *-*-darwin*)
--	      case "$deplibs " in
--		*" $qarg.ltframework "*) ;;
--		*) func_append deplibs " $qarg.ltframework" # this is fixed later
--		   ;;
--	      esac
--	      ;;
--	  esac
--	  prev=
--	  continue
--	  ;;
--	inst_prefix)
--	  inst_prefix_dir="$arg"
--	  prev=
--	  continue
--	  ;;
--	objectlist)
--	  if test -f "$arg"; then
--	    save_arg=$arg
--	    moreargs=
--	    for fil in `cat "$save_arg"`
--	    do
--#	      func_append moreargs " $fil"
--	      arg=$fil
--	      # A libtool-controlled object.
--
--	      # Check to see that this really is a libtool object.
--	      if func_lalib_unsafe_p "$arg"; then
--		pic_object=
--		non_pic_object=
--
--		# Read the .lo file
--		func_source "$arg"
--
--		if test -z "$pic_object" ||
--		   test -z "$non_pic_object" ||
--		   test "$pic_object" = none &&
--		   test "$non_pic_object" = none; then
--		  func_fatal_error "cannot find name of object for \`$arg'"
--		fi
--
--		# Extract subdirectory from the argument.
--		func_dirname "$arg" "/" ""
--		xdir="$func_dirname_result"
--
--		if test "$pic_object" != none; then
--		  # Prepend the subdirectory the object is found in.
--		  pic_object="$xdir$pic_object"
--
--		  if test "$prev" = dlfiles; then
--		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
--		      func_append dlfiles " $pic_object"
--		      prev=
--		      continue
--		    else
--		      # If libtool objects are unsupported, then we need to preload.
--		      prev=dlprefiles
--		    fi
--		  fi
--
--		  # CHECK ME:  I think I busted this.  -Ossama
--		  if test "$prev" = dlprefiles; then
--		    # Preload the old-style object.
--		    func_append dlprefiles " $pic_object"
--		    prev=
--		  fi
--
--		  # A PIC object.
--		  func_append libobjs " $pic_object"
--		  arg="$pic_object"
--		fi
--
--		# Non-PIC object.
--		if test "$non_pic_object" != none; then
--		  # Prepend the subdirectory the object is found in.
--		  non_pic_object="$xdir$non_pic_object"
--
--		  # A standard non-PIC object
--		  func_append non_pic_objects " $non_pic_object"
--		  if test -z "$pic_object" || test "$pic_object" = none ; then
--		    arg="$non_pic_object"
--		  fi
--		else
--		  # If the PIC object exists, use it instead.
--		  # $xdir was prepended to $pic_object above.
--		  non_pic_object="$pic_object"
--		  func_append non_pic_objects " $non_pic_object"
--		fi
--	      else
--		# Only an error if not doing a dry-run.
--		if $opt_dry_run; then
--		  # Extract subdirectory from the argument.
--		  func_dirname "$arg" "/" ""
--		  xdir="$func_dirname_result"
--
--		  func_lo2o "$arg"
--		  pic_object=$xdir$objdir/$func_lo2o_result
--		  non_pic_object=$xdir$func_lo2o_result
--		  func_append libobjs " $pic_object"
--		  func_append non_pic_objects " $non_pic_object"
--	        else
--		  func_fatal_error "\`$arg' is not a valid libtool object"
--		fi
--	      fi
--	    done
--	  else
--	    func_fatal_error "link input file \`$arg' does not exist"
--	  fi
--	  arg=$save_arg
--	  prev=
--	  continue
--	  ;;
--	precious_regex)
--	  precious_files_regex="$arg"
--	  prev=
--	  continue
--	  ;;
--	release)
--	  release="-$arg"
--	  prev=
--	  continue
--	  ;;
--	rpath | xrpath)
--	  # We need an absolute path.
--	  case $arg in
--	  [\\/]* | [A-Za-z]:[\\/]*) ;;
--	  *)
--	    func_fatal_error "only absolute run-paths are allowed"
--	    ;;
--	  esac
--	  if test "$prev" = rpath; then
--	    case "$rpath " in
--	    *" $arg "*) ;;
--	    *) func_append rpath " $arg" ;;
--	    esac
--	  else
--	    case "$xrpath " in
--	    *" $arg "*) ;;
--	    *) func_append xrpath " $arg" ;;
--	    esac
--	  fi
--	  prev=
--	  continue
--	  ;;
--	shrext)
--	  shrext_cmds="$arg"
--	  prev=
--	  continue
--	  ;;
--	weak)
--	  func_append weak_libs " $arg"
--	  prev=
--	  continue
--	  ;;
--	xcclinker)
--	  func_append linker_flags " $qarg"
--	  func_append compiler_flags " $qarg"
--	  prev=
--	  func_append compile_command " $qarg"
--	  func_append finalize_command " $qarg"
--	  continue
--	  ;;
--	xcompiler)
--	  func_append compiler_flags " $qarg"
--	  prev=
--	  func_append compile_command " $qarg"
--	  func_append finalize_command " $qarg"
--	  continue
--	  ;;
--	xlinker)
--	  func_append linker_flags " $qarg"
--	  func_append compiler_flags " $wl$qarg"
--	  prev=
--	  func_append compile_command " $wl$qarg"
--	  func_append finalize_command " $wl$qarg"
--	  continue
--	  ;;
--	*)
--	  eval "$prev=\"\$arg\""
--	  prev=
--	  continue
--	  ;;
--	esac
--      fi # test -n "$prev"
--
--      prevarg="$arg"
--
--      case $arg in
--      -all-static)
--	if test -n "$link_static_flag"; then
--	  # See comment for -static flag below, for more details.
--	  func_append compile_command " $link_static_flag"
--	  func_append finalize_command " $link_static_flag"
--	fi
--	continue
--	;;
--
--      -allow-undefined)
--	# FIXME: remove this flag sometime in the future.
--	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
--	;;
--
--      -avoid-version)
--	avoid_version=yes
--	continue
--	;;
--
--      -bindir)
--	prev=bindir
--	continue
--	;;
--
--      -dlopen)
--	prev=dlfiles
--	continue
--	;;
--
--      -dlpreopen)
--	prev=dlprefiles
--	continue
--	;;
--
--      -export-dynamic)
--	export_dynamic=yes
--	continue
--	;;
--
--      -export-symbols | -export-symbols-regex)
--	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
--	  func_fatal_error "more than one -exported-symbols argument is not allowed"
--	fi
--	if test "X$arg" = "X-export-symbols"; then
--	  prev=expsyms
--	else
--	  prev=expsyms_regex
--	fi
--	continue
--	;;
--
--      -framework)
--	prev=framework
--	continue
--	;;
--
--      -inst-prefix-dir)
--	prev=inst_prefix
--	continue
--	;;
--
--      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
--      # so, if we see these flags be careful not to treat them like -L
--      -L[A-Z][A-Z]*:*)
--	case $with_gcc/$host in
--	no/*-*-irix* | /*-*-irix*)
--	  func_append compile_command " $arg"
--	  func_append finalize_command " $arg"
--	  ;;
--	esac
--	continue
--	;;
--
--      -L*)
--	func_stripname "-L" '' "$arg"
--	if test -z "$func_stripname_result"; then
--	  if test "$#" -gt 0; then
--	    func_fatal_error "require no space between \`-L' and \`$1'"
--	  else
--	    func_fatal_error "need path for \`-L' option"
--	  fi
--	fi
--	func_resolve_sysroot "$func_stripname_result"
--	dir=$func_resolve_sysroot_result
--	# We need an absolute path.
--	case $dir in
--	[\\/]* | [A-Za-z]:[\\/]*) ;;
--	*)
--	  absdir=`cd "$dir" && pwd`
--	  test -z "$absdir" && \
--	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
--	  dir="$absdir"
--	  ;;
--	esac
--	case "$deplibs " in
--	*" -L$dir "* | *" $arg "*)
--	  # Will only happen for absolute or sysroot arguments
--	  ;;
--	*)
--	  # Preserve sysroot, but never include relative directories
--	  case $dir in
--	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
--	    *) func_append deplibs " -L$dir" ;;
--	  esac
--	  func_append lib_search_path " $dir"
--	  ;;
--	esac
--	case $host in
--	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
--	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
--	  case :$dllsearchpath: in
--	  *":$dir:"*) ;;
--	  ::) dllsearchpath=$dir;;
--	  *) func_append dllsearchpath ":$dir";;
--	  esac
--	  case :$dllsearchpath: in
--	  *":$testbindir:"*) ;;
--	  ::) dllsearchpath=$testbindir;;
--	  *) func_append dllsearchpath ":$testbindir";;
--	  esac
--	  ;;
--	esac
--	continue
--	;;
--
--      -l*)
--	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
--	  case $host in
--	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
--	    # These systems don't actually have a C or math library (as such)
--	    continue
--	    ;;
--	  *-*-os2*)
--	    # These systems don't actually have a C library (as such)
--	    test "X$arg" = "X-lc" && continue
--	    ;;
--	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
--	    # Do not include libc due to us having libc/libc_r.
--	    test "X$arg" = "X-lc" && continue
--	    ;;
--	  *-*-rhapsody* | *-*-darwin1.[012])
--	    # Rhapsody C and math libraries are in the System framework
--	    func_append deplibs " System.ltframework"
--	    continue
--	    ;;
--	  *-*-sco3.2v5* | *-*-sco5v6*)
--	    # Causes problems with __ctype
--	    test "X$arg" = "X-lc" && continue
--	    ;;
--	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
--	    # Compiler inserts libc in the correct place for threads to work
--	    test "X$arg" = "X-lc" && continue
--	    ;;
--	  esac
--	elif test "X$arg" = "X-lc_r"; then
--	 case $host in
--	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
--	   # Do not include libc_r directly, use -pthread flag.
--	   continue
--	   ;;
--	 esac
--	fi
--	func_append deplibs " $arg"
--	continue
--	;;
--
--      -module)
--	module=yes
--	continue
--	;;
--
--      # Tru64 UNIX uses -model [arg] to determine the layout of C++
--      # classes, name mangling, and exception handling.
--      # Darwin uses the -arch flag to determine output architecture.
--      -model|-arch|-isysroot|--sysroot)
--	func_append compiler_flags " $arg"
--	func_append compile_command " $arg"
--	func_append finalize_command " $arg"
--	prev=xcompiler
--	continue
--	;;
--
--      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
--      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
--	func_append compiler_flags " $arg"
--	func_append compile_command " $arg"
--	func_append finalize_command " $arg"
--	case "$new_inherited_linker_flags " in
--	    *" $arg "*) ;;
--	    * ) func_append new_inherited_linker_flags " $arg" ;;
--	esac
--	continue
--	;;
--
--      -multi_module)
--	single_module="${wl}-multi_module"
--	continue
--	;;
--
--      -no-fast-install)
--	fast_install=no
--	continue
--	;;
--
--      -no-install)
--	case $host in
--	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
--	  # The PATH hackery in wrapper scripts is required on Windows
--	  # and Darwin in order for the loader to find any dlls it needs.
--	  func_warning "\`-no-install' is ignored for $host"
--	  func_warning "assuming \`-no-fast-install' instead"
--	  fast_install=no
--	  ;;
--	*) no_install=yes ;;
--	esac
--	continue
--	;;
--
--      -no-undefined)
--	allow_undefined=no
--	continue
--	;;
--
--      -objectlist)
--	prev=objectlist
--	continue
--	;;
--
--      -o) prev=output ;;
--
--      -precious-files-regex)
--	prev=precious_regex
--	continue
--	;;
--
--      -release)
--	prev=release
--	continue
--	;;
--
--      -rpath)
--	prev=rpath
--	continue
--	;;
--
--      -R)
--	prev=xrpath
--	continue
--	;;
--
--      -R*)
--	func_stripname '-R' '' "$arg"
--	dir=$func_stripname_result
--	# We need an absolute path.
--	case $dir in
--	[\\/]* | [A-Za-z]:[\\/]*) ;;
--	=*)
--	  func_stripname '=' '' "$dir"
--	  dir=$lt_sysroot$func_stripname_result
--	  ;;
--	*)
--	  func_fatal_error "only absolute run-paths are allowed"
--	  ;;
--	esac
--	case "$xrpath " in
--	*" $dir "*) ;;
--	*) func_append xrpath " $dir" ;;
--	esac
--	continue
--	;;
--
--      -shared)
--	# The effects of -shared are defined in a previous loop.
--	continue
--	;;
--
--      -shrext)
--	prev=shrext
--	continue
--	;;
--
--      -static | -static-libtool-libs)
--	# The effects of -static are defined in a previous loop.
--	# We used to do the same as -all-static on platforms that
--	# didn't have a PIC flag, but the assumption that the effects
--	# would be equivalent was wrong.  It would break on at least
--	# Digital Unix and AIX.
--	continue
--	;;
--
--      -thread-safe)
--	thread_safe=yes
--	continue
--	;;
--
--      -version-info)
--	prev=vinfo
--	continue
--	;;
--
--      -version-number)
--	prev=vinfo
--	vinfo_number=yes
--	continue
--	;;
--
--      -weak)
--        prev=weak
--	continue
--	;;
--
--      -Wc,*)
--	func_stripname '-Wc,' '' "$arg"
--	args=$func_stripname_result
--	arg=
--	save_ifs="$IFS"; IFS=','
--	for flag in $args; do
--	  IFS="$save_ifs"
--          func_quote_for_eval "$flag"
--	  func_append arg " $func_quote_for_eval_result"
--	  func_append compiler_flags " $func_quote_for_eval_result"
--	done
--	IFS="$save_ifs"
--	func_stripname ' ' '' "$arg"
--	arg=$func_stripname_result
--	;;
--
--      -Wl,*)
--	func_stripname '-Wl,' '' "$arg"
--	args=$func_stripname_result
--	arg=
--	save_ifs="$IFS"; IFS=','
--	for flag in $args; do
--	  IFS="$save_ifs"
--          func_quote_for_eval "$flag"
--	  func_append arg " $wl$func_quote_for_eval_result"
--	  func_append compiler_flags " $wl$func_quote_for_eval_result"
--	  func_append linker_flags " $func_quote_for_eval_result"
--	done
--	IFS="$save_ifs"
--	func_stripname ' ' '' "$arg"
--	arg=$func_stripname_result
--	;;
--
--      -Xcompiler)
--	prev=xcompiler
--	continue
--	;;
--
--      -Xlinker)
--	prev=xlinker
--	continue
--	;;
--
--      -XCClinker)
--	prev=xcclinker
--	continue
--	;;
--
--      # -msg_* for osf cc
--      -msg_*)
--	func_quote_for_eval "$arg"
--	arg="$func_quote_for_eval_result"
--	;;
--
--      # Flags to be passed through unchanged, with rationale:
--      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
--      # -r[0-9][0-9]*        specify processor for the SGI compiler
--      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
--      # +DA*, +DD*           enable 64-bit mode for the HP compiler
--      # -q*                  compiler args for the IBM compiler
--      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
--      # -F/path              path to uninstalled frameworks, gcc on darwin
--      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
--      # @file                GCC response files
--      # -tp=*                Portland pgcc target processor selection
--      # --sysroot=*          for sysroot support
--      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
--      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
--      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
--      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
--        func_quote_for_eval "$arg"
--	arg="$func_quote_for_eval_result"
--        func_append compile_command " $arg"
--        func_append finalize_command " $arg"
--        func_append compiler_flags " $arg"
--        continue
--        ;;
--
--      # Some other compiler flag.
--      -* | +*)
--        func_quote_for_eval "$arg"
--	arg="$func_quote_for_eval_result"
--	;;
--
--      *.$objext)
--	# A standard object.
--	func_append objs " $arg"
--	;;
--
--      *.lo)
--	# A libtool-controlled object.
--
--	# Check to see that this really is a libtool object.
--	if func_lalib_unsafe_p "$arg"; then
--	  pic_object=
--	  non_pic_object=
--
--	  # Read the .lo file
--	  func_source "$arg"
--
--	  if test -z "$pic_object" ||
--	     test -z "$non_pic_object" ||
--	     test "$pic_object" = none &&
--	     test "$non_pic_object" = none; then
--	    func_fatal_error "cannot find name of object for \`$arg'"
--	  fi
--
--	  # Extract subdirectory from the argument.
--	  func_dirname "$arg" "/" ""
--	  xdir="$func_dirname_result"
--
--	  if test "$pic_object" != none; then
--	    # Prepend the subdirectory the object is found in.
--	    pic_object="$xdir$pic_object"
--
--	    if test "$prev" = dlfiles; then
--	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
--		func_append dlfiles " $pic_object"
--		prev=
--		continue
--	      else
--		# If libtool objects are unsupported, then we need to preload.
--		prev=dlprefiles
--	      fi
--	    fi
--
--	    # CHECK ME:  I think I busted this.  -Ossama
--	    if test "$prev" = dlprefiles; then
--	      # Preload the old-style object.
--	      func_append dlprefiles " $pic_object"
--	      prev=
--	    fi
--
--	    # A PIC object.
--	    func_append libobjs " $pic_object"
--	    arg="$pic_object"
--	  fi
--
--	  # Non-PIC object.
--	  if test "$non_pic_object" != none; then
--	    # Prepend the subdirectory the object is found in.
--	    non_pic_object="$xdir$non_pic_object"
--
--	    # A standard non-PIC object
--	    func_append non_pic_objects " $non_pic_object"
--	    if test -z "$pic_object" || test "$pic_object" = none ; then
--	      arg="$non_pic_object"
--	    fi
--	  else
--	    # If the PIC object exists, use it instead.
--	    # $xdir was prepended to $pic_object above.
--	    non_pic_object="$pic_object"
--	    func_append non_pic_objects " $non_pic_object"
--	  fi
--	else
--	  # Only an error if not doing a dry-run.
--	  if $opt_dry_run; then
--	    # Extract subdirectory from the argument.
--	    func_dirname "$arg" "/" ""
--	    xdir="$func_dirname_result"
--
--	    func_lo2o "$arg"
--	    pic_object=$xdir$objdir/$func_lo2o_result
--	    non_pic_object=$xdir$func_lo2o_result
--	    func_append libobjs " $pic_object"
--	    func_append non_pic_objects " $non_pic_object"
--	  else
--	    func_fatal_error "\`$arg' is not a valid libtool object"
--	  fi
--	fi
--	;;
--
--      *.$libext)
--	# An archive.
--	func_append deplibs " $arg"
--	func_append old_deplibs " $arg"
--	continue
--	;;
--
--      *.la)
--	# A libtool-controlled library.
--
--	func_resolve_sysroot "$arg"
--	if test "$prev" = dlfiles; then
--	  # This library was specified with -dlopen.
--	  func_append dlfiles " $func_resolve_sysroot_result"
--	  prev=
--	elif test "$prev" = dlprefiles; then
--	  # The library was specified with -dlpreopen.
--	  func_append dlprefiles " $func_resolve_sysroot_result"
--	  prev=
--	else
--	  func_append deplibs " $func_resolve_sysroot_result"
--	fi
--	continue
--	;;
--
--      # Some other compiler argument.
--      *)
--	# Unknown arguments in both finalize_command and compile_command need
--	# to be aesthetically quoted because they are evaled later.
--	func_quote_for_eval "$arg"
--	arg="$func_quote_for_eval_result"
--	;;
--      esac # arg
--
--      # Now actually substitute the argument into the commands.
--      if test -n "$arg"; then
--	func_append compile_command " $arg"
--	func_append finalize_command " $arg"
--      fi
--    done # argument parsing loop
--
--    test -n "$prev" && \
--      func_fatal_help "the \`$prevarg' option requires an argument"
--
--    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
--      eval arg=\"$export_dynamic_flag_spec\"
--      func_append compile_command " $arg"
--      func_append finalize_command " $arg"
--    fi
--
--    oldlibs=
--    # calculate the name of the file, without its directory
--    func_basename "$output"
--    outputname="$func_basename_result"
--    libobjs_save="$libobjs"
--
--    if test -n "$shlibpath_var"; then
--      # get the directories listed in $shlibpath_var
--      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
--    else
--      shlib_search_path=
--    fi
--    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
--    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
--
--    func_dirname "$output" "/" ""
--    output_objdir="$func_dirname_result$objdir"
--    func_to_tool_file "$output_objdir/"
--    tool_output_objdir=$func_to_tool_file_result
--    # Create the object directory.
--    func_mkdir_p "$output_objdir"
--
--    # Determine the type of output
--    case $output in
--    "")
--      func_fatal_help "you must specify an output file"
--      ;;
--    *.$libext) linkmode=oldlib ;;
--    *.lo | *.$objext) linkmode=obj ;;
--    *.la) linkmode=lib ;;
--    *) linkmode=prog ;; # Anything else should be a program.
--    esac
--
--    specialdeplibs=
--
--    libs=
--    # Find all interdependent deplibs by searching for libraries
--    # that are linked more than once (e.g. -la -lb -la)
--    for deplib in $deplibs; do
--      if $opt_preserve_dup_deps ; then
--	case "$libs " in
--	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
--	esac
--      fi
--      func_append libs " $deplib"
--    done
--
--    if test "$linkmode" = lib; then
--      libs="$predeps $libs $compiler_lib_search_path $postdeps"
--
--      # Compute libraries that are listed more than once in $predeps
--      # $postdeps and mark them as special (i.e., whose duplicates are
--      # not to be eliminated).
--      pre_post_deps=
--      if $opt_duplicate_compiler_generated_deps; then
--	for pre_post_dep in $predeps $postdeps; do
--	  case "$pre_post_deps " in
--	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
--	  esac
--	  func_append pre_post_deps " $pre_post_dep"
--	done
--      fi
--      pre_post_deps=
--    fi
--
--    deplibs=
--    newdependency_libs=
--    newlib_search_path=
--    need_relink=no # whether we're linking any uninstalled libtool libraries
--    notinst_deplibs= # not-installed libtool libraries
--    notinst_path= # paths that contain not-installed libtool libraries
--
--    case $linkmode in
--    lib)
--	passes="conv dlpreopen link"
--	for file in $dlfiles $dlprefiles; do
--	  case $file in
--	  *.la) ;;
--	  *)
--	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
--	    ;;
--	  esac
--	done
--	;;
--    prog)
--	compile_deplibs=
--	finalize_deplibs=
--	alldeplibs=no
--	newdlfiles=
--	newdlprefiles=
--	passes="conv scan dlopen dlpreopen link"
--	;;
--    *)  passes="conv"
--	;;
--    esac
--
--    for pass in $passes; do
--      # The preopen pass in lib mode reverses $deplibs; put it back here
--      # so that -L comes before libs that need it for instance...
--      if test "$linkmode,$pass" = "lib,link"; then
--	## FIXME: Find the place where the list is rebuilt in the wrong
--	##        order, and fix it there properly
--        tmp_deplibs=
--	for deplib in $deplibs; do
--	  tmp_deplibs="$deplib $tmp_deplibs"
--	done
--	deplibs="$tmp_deplibs"
--      fi
--
--      if test "$linkmode,$pass" = "lib,link" ||
--	 test "$linkmode,$pass" = "prog,scan"; then
--	libs="$deplibs"
--	deplibs=
--      fi
--      if test "$linkmode" = prog; then
--	case $pass in
--	dlopen) libs="$dlfiles" ;;
--	dlpreopen) libs="$dlprefiles" ;;
--	link)
--	  libs="$deplibs %DEPLIBS%"
--	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
--	  ;;
--	esac
--      fi
--      if test "$linkmode,$pass" = "lib,dlpreopen"; then
--	# Collect and forward deplibs of preopened libtool libs
--	for lib in $dlprefiles; do
--	  # Ignore non-libtool-libs
--	  dependency_libs=
--	  func_resolve_sysroot "$lib"
--	  case $lib in
--	  *.la)	func_source "$func_resolve_sysroot_result" ;;
--	  esac
--
--	  # Collect preopened libtool deplibs, except any this library
--	  # has declared as weak libs
--	  for deplib in $dependency_libs; do
--	    func_basename "$deplib"
--            deplib_base=$func_basename_result
--	    case " $weak_libs " in
--	    *" $deplib_base "*) ;;
--	    *) func_append deplibs " $deplib" ;;
--	    esac
--	  done
--	done
--	libs="$dlprefiles"
--      fi
--      if test "$pass" = dlopen; then
--	# Collect dlpreopened libraries
--	save_deplibs="$deplibs"
--	deplibs=
--      fi
--
--      for deplib in $libs; do
--	lib=
--	found=no
--	case $deplib in
--	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
--        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
--	  if test "$linkmode,$pass" = "prog,link"; then
--	    compile_deplibs="$deplib $compile_deplibs"
--	    finalize_deplibs="$deplib $finalize_deplibs"
--	  else
--	    func_append compiler_flags " $deplib"
--	    if test "$linkmode" = lib ; then
--		case "$new_inherited_linker_flags " in
--		    *" $deplib "*) ;;
--		    * ) func_append new_inherited_linker_flags " $deplib" ;;
--		esac
--	    fi
--	  fi
--	  continue
--	  ;;
--	-l*)
--	  if test "$linkmode" != lib && test "$linkmode" != prog; then
--	    func_warning "\`-l' is ignored for archives/objects"
--	    continue
--	  fi
--	  func_stripname '-l' '' "$deplib"
--	  name=$func_stripname_result
--	  if test "$linkmode" = lib; then
--	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
--	  else
--	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
--	  fi
--	  for searchdir in $searchdirs; do
--	    for search_ext in .la $std_shrext .so .a; do
--	      # Search the libtool library
--	      lib="$searchdir/lib${name}${search_ext}"
--	      if test -f "$lib"; then
--		if test "$search_ext" = ".la"; then
--		  found=yes
--		else
--		  found=no
--		fi
--		break 2
--	      fi
--	    done
--	  done
--	  if test "$found" != yes; then
--	    # deplib doesn't seem to be a libtool library
--	    if test "$linkmode,$pass" = "prog,link"; then
--	      compile_deplibs="$deplib $compile_deplibs"
--	      finalize_deplibs="$deplib $finalize_deplibs"
--	    else
--	      deplibs="$deplib $deplibs"
--	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
--	    fi
--	    continue
--	  else # deplib is a libtool library
--	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
--	    # We need to do some special things here, and not later.
--	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
--	      case " $predeps $postdeps " in
--	      *" $deplib "*)
--		if func_lalib_p "$lib"; then
--		  library_names=
--		  old_library=
--		  func_source "$lib"
--		  for l in $old_library $library_names; do
--		    ll="$l"
--		  done
--		  if test "X$ll" = "X$old_library" ; then # only static version available
--		    found=no
--		    func_dirname "$lib" "" "."
--		    ladir="$func_dirname_result"
--		    lib=$ladir/$old_library
--		    if test "$linkmode,$pass" = "prog,link"; then
--		      compile_deplibs="$deplib $compile_deplibs"
--		      finalize_deplibs="$deplib $finalize_deplibs"
--		    else
--		      deplibs="$deplib $deplibs"
--		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
--		    fi
--		    continue
--		  fi
--		fi
--		;;
--	      *) ;;
--	      esac
--	    fi
--	  fi
--	  ;; # -l
--	*.ltframework)
--	  if test "$linkmode,$pass" = "prog,link"; then
--	    compile_deplibs="$deplib $compile_deplibs"
--	    finalize_deplibs="$deplib $finalize_deplibs"
--	  else
--	    deplibs="$deplib $deplibs"
--	    if test "$linkmode" = lib ; then
--		case "$new_inherited_linker_flags " in
--		    *" $deplib "*) ;;
--		    * ) func_append new_inherited_linker_flags " $deplib" ;;
--		esac
--	    fi
--	  fi
--	  continue
--	  ;;
--	-L*)
--	  case $linkmode in
--	  lib)
--	    deplibs="$deplib $deplibs"
--	    test "$pass" = conv && continue
--	    newdependency_libs="$deplib $newdependency_libs"
--	    func_stripname '-L' '' "$deplib"
--	    func_resolve_sysroot "$func_stripname_result"
--	    func_append newlib_search_path " $func_resolve_sysroot_result"
--	    ;;
--	  prog)
--	    if test "$pass" = conv; then
--	      deplibs="$deplib $deplibs"
--	      continue
--	    fi
--	    if test "$pass" = scan; then
--	      deplibs="$deplib $deplibs"
--	    else
--	      compile_deplibs="$deplib $compile_deplibs"
--	      finalize_deplibs="$deplib $finalize_deplibs"
--	    fi
--	    func_stripname '-L' '' "$deplib"
--	    func_resolve_sysroot "$func_stripname_result"
--	    func_append newlib_search_path " $func_resolve_sysroot_result"
--	    ;;
--	  *)
--	    func_warning "\`-L' is ignored for archives/objects"
--	    ;;
--	  esac # linkmode
--	  continue
--	  ;; # -L
--	-R*)
--	  if test "$pass" = link; then
--	    func_stripname '-R' '' "$deplib"
--	    func_resolve_sysroot "$func_stripname_result"
--	    dir=$func_resolve_sysroot_result
--	    # Make sure the xrpath contains only unique directories.
--	    case "$xrpath " in
--	    *" $dir "*) ;;
--	    *) func_append xrpath " $dir" ;;
--	    esac
--	  fi
--	  deplibs="$deplib $deplibs"
--	  continue
--	  ;;
--	*.la)
--	  func_resolve_sysroot "$deplib"
--	  lib=$func_resolve_sysroot_result
--	  ;;
--	*.$libext)
--	  if test "$pass" = conv; then
--	    deplibs="$deplib $deplibs"
--	    continue
--	  fi
--	  case $linkmode in
--	  lib)
--	    # Linking convenience modules into shared libraries is allowed,
--	    # but linking other static libraries is non-portable.
--	    case " $dlpreconveniencelibs " in
--	    *" $deplib "*) ;;
--	    *)
--	      valid_a_lib=no
--	      case $deplibs_check_method in
--		match_pattern*)
--		  set dummy $deplibs_check_method; shift
--		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
--		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
--		    | $EGREP "$match_pattern_regex" > /dev/null; then
--		    valid_a_lib=yes
--		  fi
--		;;
--		pass_all)
--		  valid_a_lib=yes
--		;;
--	      esac
--	      if test "$valid_a_lib" != yes; then
--		echo
--		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
--		echo "*** I have the capability to make that library automatically link in when"
--		echo "*** you link to this library.  But I can only do this if you have a"
--		echo "*** shared version of the library, which you do not appear to have"
--		echo "*** because the file extensions .$libext of this argument makes me believe"
--		echo "*** that it is just a static archive that I should not use here."
--	      else
--		echo
--		$ECHO "*** Warning: Linking the shared library $output against the"
--		$ECHO "*** static library $deplib is not portable!"
--		deplibs="$deplib $deplibs"
--	      fi
--	      ;;
--	    esac
--	    continue
--	    ;;
--	  prog)
--	    if test "$pass" != link; then
--	      deplibs="$deplib $deplibs"
--	    else
--	      compile_deplibs="$deplib $compile_deplibs"
--	      finalize_deplibs="$deplib $finalize_deplibs"
--	    fi
--	    continue
--	    ;;
--	  esac # linkmode
--	  ;; # *.$libext
--	*.lo | *.$objext)
--	  if test "$pass" = conv; then
--	    deplibs="$deplib $deplibs"
--	  elif test "$linkmode" = prog; then
--	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
--	      # If there is no dlopen support or we're linking statically,
--	      # we need to preload.
--	      func_append newdlprefiles " $deplib"
--	      compile_deplibs="$deplib $compile_deplibs"
--	      finalize_deplibs="$deplib $finalize_deplibs"
--	    else
--	      func_append newdlfiles " $deplib"
--	    fi
--	  fi
--	  continue
--	  ;;
--	%DEPLIBS%)
--	  alldeplibs=yes
--	  continue
--	  ;;
--	esac # case $deplib
--
--	if test "$found" = yes || test -f "$lib"; then :
--	else
--	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
--	fi
--
--	# Check to see that this really is a libtool archive.
--	func_lalib_unsafe_p "$lib" \
--	  || func_fatal_error "\`$lib' is not a valid libtool archive"
--
--	func_dirname "$lib" "" "."
--	ladir="$func_dirname_result"
--
--	dlname=
--	dlopen=
--	dlpreopen=
--	libdir=
--	library_names=
--	old_library=
--	inherited_linker_flags=
--	# If the library was installed with an old release of libtool,
--	# it will not redefine variables installed, or shouldnotlink
--	installed=yes
--	shouldnotlink=no
--	avoidtemprpath=
--
--
--	# Read the .la file
--	func_source "$lib"
--
--	# Convert "-framework foo" to "foo.ltframework"
--	if test -n "$inherited_linker_flags"; then
--	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
--	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
--	    case " $new_inherited_linker_flags " in
--	      *" $tmp_inherited_linker_flag "*) ;;
--	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
--	    esac
--	  done
--	fi
--	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	if test "$linkmode,$pass" = "lib,link" ||
--	   test "$linkmode,$pass" = "prog,scan" ||
--	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
--	  test -n "$dlopen" && func_append dlfiles " $dlopen"
--	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
--	fi
--
--	if test "$pass" = conv; then
--	  # Only check for convenience libraries
--	  deplibs="$lib $deplibs"
--	  if test -z "$libdir"; then
--	    if test -z "$old_library"; then
--	      func_fatal_error "cannot find name of link library for \`$lib'"
--	    fi
--	    # It is a libtool convenience library, so add in its objects.
--	    func_append convenience " $ladir/$objdir/$old_library"
--	    func_append old_convenience " $ladir/$objdir/$old_library"
--	    tmp_libs=
--	    for deplib in $dependency_libs; do
--	      deplibs="$deplib $deplibs"
--	      if $opt_preserve_dup_deps ; then
--		case "$tmp_libs " in
--		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
--		esac
--	      fi
--	      func_append tmp_libs " $deplib"
--	    done
--	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
--	    func_fatal_error "\`$lib' is not a convenience library"
--	  fi
--	  continue
--	fi # $pass = conv
--
--
--	# Get the name of the library we link against.
--	linklib=
--	if test -n "$old_library" &&
--	   { test "$prefer_static_libs" = yes ||
--	     test "$prefer_static_libs,$installed" = "built,no"; }; then
--	  linklib=$old_library
--	else
--	  for l in $old_library $library_names; do
--	    linklib="$l"
--	  done
--	fi
--	if test -z "$linklib"; then
--	  func_fatal_error "cannot find name of link library for \`$lib'"
--	fi
--
--	# This library was specified with -dlopen.
--	if test "$pass" = dlopen; then
--	  if test -z "$libdir"; then
--	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
--	  fi
--	  if test -z "$dlname" ||
--	     test "$dlopen_support" != yes ||
--	     test "$build_libtool_libs" = no; then
--	    # If there is no dlname, no dlopen support or we're linking
--	    # statically, we need to preload.  We also need to preload any
--	    # dependent libraries so libltdl's deplib preloader doesn't
--	    # bomb out in the load deplibs phase.
--	    func_append dlprefiles " $lib $dependency_libs"
--	  else
--	    func_append newdlfiles " $lib"
--	  fi
--	  continue
--	fi # $pass = dlopen
--
--	# We need an absolute path.
--	case $ladir in
--	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
--	*)
--	  abs_ladir=`cd "$ladir" && pwd`
--	  if test -z "$abs_ladir"; then
--	    func_warning "cannot determine absolute directory name of \`$ladir'"
--	    func_warning "passing it literally to the linker, although it might fail"
--	    abs_ladir="$ladir"
--	  fi
--	  ;;
--	esac
--	func_basename "$lib"
--	laname="$func_basename_result"
--
--	# Find the relevant object directory and library name.
--	if test "X$installed" = Xyes; then
--	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
--	    func_warning "library \`$lib' was moved."
--	    dir="$ladir"
--	    absdir="$abs_ladir"
--	    libdir="$abs_ladir"
--	  else
--	    dir="$lt_sysroot$libdir"
--	    absdir="$lt_sysroot$libdir"
--	  fi
--	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
--	else
--	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
--	    dir="$ladir"
--	    absdir="$abs_ladir"
--	    # Remove this search path later
--	    func_append notinst_path " $abs_ladir"
--	  else
--	    dir="$ladir/$objdir"
--	    absdir="$abs_ladir/$objdir"
--	    # Remove this search path later
--	    func_append notinst_path " $abs_ladir"
--	  fi
--	fi # $installed = yes
--	func_stripname 'lib' '.la' "$laname"
--	name=$func_stripname_result
--
--	# This library was specified with -dlpreopen.
--	if test "$pass" = dlpreopen; then
--	  if test -z "$libdir" && test "$linkmode" = prog; then
--	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
--	  fi
--	  case "$host" in
--	    # special handling for platforms with PE-DLLs.
--	    *cygwin* | *mingw* | *cegcc* )
--	      # Linker will automatically link against shared library if both
--	      # static and shared are present.  Therefore, ensure we extract
--	      # symbols from the import library if a shared library is present
--	      # (otherwise, the dlopen module name will be incorrect).  We do
--	      # this by putting the import library name into $newdlprefiles.
--	      # We recover the dlopen module name by 'saving' the la file
--	      # name in a special purpose variable, and (later) extracting the
--	      # dlname from the la file.
--	      if test -n "$dlname"; then
--	        func_tr_sh "$dir/$linklib"
--	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
--	        func_append newdlprefiles " $dir/$linklib"
--	      else
--	        func_append newdlprefiles " $dir/$old_library"
--	        # Keep a list of preopened convenience libraries to check
--	        # that they are being used correctly in the link pass.
--	        test -z "$libdir" && \
--	          func_append dlpreconveniencelibs " $dir/$old_library"
--	      fi
--	    ;;
--	    * )
--	      # Prefer using a static library (so that no silly _DYNAMIC symbols
--	      # are required to link).
--	      if test -n "$old_library"; then
--	        func_append newdlprefiles " $dir/$old_library"
--	        # Keep a list of preopened convenience libraries to check
--	        # that they are being used correctly in the link pass.
--	        test -z "$libdir" && \
--	          func_append dlpreconveniencelibs " $dir/$old_library"
--	      # Otherwise, use the dlname, so that lt_dlopen finds it.
--	      elif test -n "$dlname"; then
--	        func_append newdlprefiles " $dir/$dlname"
--	      else
--	        func_append newdlprefiles " $dir/$linklib"
--	      fi
--	    ;;
--	  esac
--	fi # $pass = dlpreopen
--
--	if test -z "$libdir"; then
--	  # Link the convenience library
--	  if test "$linkmode" = lib; then
--	    deplibs="$dir/$old_library $deplibs"
--	  elif test "$linkmode,$pass" = "prog,link"; then
--	    compile_deplibs="$dir/$old_library $compile_deplibs"
--	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
--	  else
--	    deplibs="$lib $deplibs" # used for prog,scan pass
--	  fi
--	  continue
--	fi
--
--
--	if test "$linkmode" = prog && test "$pass" != link; then
--	  func_append newlib_search_path " $ladir"
--	  deplibs="$lib $deplibs"
--
--	  linkalldeplibs=no
--	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
--	     test "$build_libtool_libs" = no; then
--	    linkalldeplibs=yes
--	  fi
--
--	  tmp_libs=
--	  for deplib in $dependency_libs; do
--	    case $deplib in
--	    -L*) func_stripname '-L' '' "$deplib"
--	         func_resolve_sysroot "$func_stripname_result"
--	         func_append newlib_search_path " $func_resolve_sysroot_result"
--		 ;;
--	    esac
--	    # Need to link against all dependency_libs?
--	    if test "$linkalldeplibs" = yes; then
--	      deplibs="$deplib $deplibs"
--	    else
--	      # Need to hardcode shared library paths
--	      # or/and link against static libraries
--	      newdependency_libs="$deplib $newdependency_libs"
--	    fi
--	    if $opt_preserve_dup_deps ; then
--	      case "$tmp_libs " in
--	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
--	      esac
--	    fi
--	    func_append tmp_libs " $deplib"
--	  done # for deplib
--	  continue
--	fi # $linkmode = prog...
--
--	if test "$linkmode,$pass" = "prog,link"; then
--	  if test -n "$library_names" &&
--	     { { test "$prefer_static_libs" = no ||
--	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
--	       test -z "$old_library"; }; then
--	    # We need to hardcode the library path
--	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
--	      # Make sure the rpath contains only unique directories.
--	      case "$temp_rpath:" in
--	      *"$absdir:"*) ;;
--	      *) func_append temp_rpath "$absdir:" ;;
--	      esac
--	    fi
--
--	    # Hardcode the library path.
--	    # Skip directories that are in the system default run-time
--	    # search path.
--	    case " $sys_lib_dlsearch_path " in
--	    *" $absdir "*) ;;
--	    *)
--	      case "$compile_rpath " in
--	      *" $absdir "*) ;;
--	      *) func_append compile_rpath " $absdir" ;;
--	      esac
--	      ;;
--	    esac
--	    case " $sys_lib_dlsearch_path " in
--	    *" $libdir "*) ;;
--	    *)
--	      case "$finalize_rpath " in
--	      *" $libdir "*) ;;
--	      *) func_append finalize_rpath " $libdir" ;;
--	      esac
--	      ;;
--	    esac
--	  fi # $linkmode,$pass = prog,link...
--
--	  if test "$alldeplibs" = yes &&
--	     { test "$deplibs_check_method" = pass_all ||
--	       { test "$build_libtool_libs" = yes &&
--		 test -n "$library_names"; }; }; then
--	    # We only need to search for static libraries
--	    continue
--	  fi
--	fi
--
--	link_static=no # Whether the deplib will be linked statically
--	use_static_libs=$prefer_static_libs
--	if test "$use_static_libs" = built && test "$installed" = yes; then
--	  use_static_libs=no
--	fi
--	if test -n "$library_names" &&
--	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
--	  case $host in
--	  *cygwin* | *mingw* | *cegcc*)
--	      # No point in relinking DLLs because paths are not encoded
--	      func_append notinst_deplibs " $lib"
--	      need_relink=no
--	    ;;
--	  *)
--	    if test "$installed" = no; then
--	      func_append notinst_deplibs " $lib"
--	      need_relink=yes
--	    fi
--	    ;;
--	  esac
--	  # This is a shared library
--
--	  # Warn about portability, can't link against -module's on some
--	  # systems (darwin).  Don't bleat about dlopened modules though!
--	  dlopenmodule=""
--	  for dlpremoduletest in $dlprefiles; do
--	    if test "X$dlpremoduletest" = "X$lib"; then
--	      dlopenmodule="$dlpremoduletest"
--	      break
--	    fi
--	  done
--	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
--	    echo
--	    if test "$linkmode" = prog; then
--	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
--	    else
--	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
--	    fi
--	    $ECHO "*** $linklib is not portable!"
--	  fi
--	  if test "$linkmode" = lib &&
--	     test "$hardcode_into_libs" = yes; then
--	    # Hardcode the library path.
--	    # Skip directories that are in the system default run-time
--	    # search path.
--	    case " $sys_lib_dlsearch_path " in
--	    *" $absdir "*) ;;
--	    *)
--	      case "$compile_rpath " in
--	      *" $absdir "*) ;;
--	      *) func_append compile_rpath " $absdir" ;;
--	      esac
--	      ;;
--	    esac
--	    case " $sys_lib_dlsearch_path " in
--	    *" $libdir "*) ;;
--	    *)
--	      case "$finalize_rpath " in
--	      *" $libdir "*) ;;
--	      *) func_append finalize_rpath " $libdir" ;;
--	      esac
--	      ;;
--	    esac
--	  fi
--
--	  if test -n "$old_archive_from_expsyms_cmds"; then
--	    # figure out the soname
--	    set dummy $library_names
--	    shift
--	    realname="$1"
--	    shift
--	    libname=`eval "\\$ECHO \"$libname_spec\""`
--	    # use dlname if we got it. it's perfectly good, no?
--	    if test -n "$dlname"; then
--	      soname="$dlname"
--	    elif test -n "$soname_spec"; then
--	      # bleh windows
--	      case $host in
--              x86_64-*mingw32*)
--                func_arith $current - $age
--		major=$func_arith_result
--		versuffix="6-$major"
--		;;
--	      *cygwin* | mingw* | *cegcc*)
--	        func_arith $current - $age
--		major=$func_arith_result
--		versuffix="-$major"
--		;;
--	      esac
--	      eval soname=\"$soname_spec\"
--	    else
--	      soname="$realname"
--	    fi
--
--	    # Make a new name for the extract_expsyms_cmds to use
--	    soroot="$soname"
--	    func_basename "$soroot"
--	    soname="$func_basename_result"
--	    func_stripname 'lib' '.dll' "$soname"
--	    newlib=libimp-$func_stripname_result.a
--
--	    # If the library has no export list, then create one now
--	    if test -f "$output_objdir/$soname-def"; then :
--	    else
--	      func_verbose "extracting exported symbol list from \`$soname'"
--	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
--	    fi
--
--	    # Create $newlib
--	    if test -f "$output_objdir/$newlib"; then :; else
--	      func_verbose "generating import library for \`$soname'"
--	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
--	    fi
--	    # make sure the library variables are pointing to the new library
--	    dir=$output_objdir
--	    linklib=$newlib
--	  fi # test -n "$old_archive_from_expsyms_cmds"
--
--	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
--	    add_shlibpath=
--	    add_dir=
--	    add=
--	    lib_linked=yes
--	    case $hardcode_action in
--	    immediate | unsupported)
--	      if test "$hardcode_direct" = no; then
--		add="$dir/$linklib"
--		case $host in
--		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
--		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
--		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
--		    *-*-unixware7*) add_dir="-L$dir" ;;
--		  *-*-darwin* )
--		    # if the lib is a (non-dlopened) module then we can not
--		    # link against it, someone is ignoring the earlier warnings
--		    if /usr/bin/file -L $add 2> /dev/null |
--			 $GREP ": [^:]* bundle" >/dev/null ; then
--		      if test "X$dlopenmodule" != "X$lib"; then
--			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
--			if test -z "$old_library" ; then
--			  echo
--			  echo "*** And there doesn't seem to be a static archive available"
--			  echo "*** The link will probably fail, sorry"
--			else
--			  add="$dir/$old_library"
--			fi
--		      elif test -n "$old_library"; then
--			add="$dir/$old_library"
--		      fi
--		    fi
--		esac
--	      elif test "$hardcode_minus_L" = no; then
--		case $host in
--		*-*-sunos*) add_shlibpath="$dir" ;;
--		esac
--		add_dir="-L$dir"
--		add="-l$name"
--	      elif test "$hardcode_shlibpath_var" = no; then
--		add_shlibpath="$dir"
--		add="-l$name"
--	      else
--		lib_linked=no
--	      fi
--	      ;;
--	    relink)
--	      if test "$hardcode_direct" = yes &&
--	         test "$hardcode_direct_absolute" = no; then
--		add="$dir/$linklib"
--	      elif test "$hardcode_minus_L" = yes; then
--		add_dir="-L$absdir"
--		# Try looking first in the location we're being installed to.
--		if test -n "$inst_prefix_dir"; then
--		  case $libdir in
--		    [\\/]*)
--		      func_append add_dir " -L$inst_prefix_dir$libdir"
--		      ;;
--		  esac
--		fi
--		add="-l$name"
--	      elif test "$hardcode_shlibpath_var" = yes; then
--		add_shlibpath="$dir"
--		add="-l$name"
--	      else
--		lib_linked=no
--	      fi
--	      ;;
--	    *) lib_linked=no ;;
--	    esac
--
--	    if test "$lib_linked" != yes; then
--	      func_fatal_configuration "unsupported hardcode properties"
--	    fi
--
--	    if test -n "$add_shlibpath"; then
--	      case :$compile_shlibpath: in
--	      *":$add_shlibpath:"*) ;;
--	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
--	      esac
--	    fi
--	    if test "$linkmode" = prog; then
--	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
--	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
--	    else
--	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
--	      test -n "$add" && deplibs="$add $deplibs"
--	      if test "$hardcode_direct" != yes &&
--		 test "$hardcode_minus_L" != yes &&
--		 test "$hardcode_shlibpath_var" = yes; then
--		case :$finalize_shlibpath: in
--		*":$libdir:"*) ;;
--		*) func_append finalize_shlibpath "$libdir:" ;;
--		esac
--	      fi
--	    fi
--	  fi
--
--	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
--	    add_shlibpath=
--	    add_dir=
--	    add=
--	    # Finalize command for both is simple: just hardcode it.
--	    if test "$hardcode_direct" = yes &&
--	       test "$hardcode_direct_absolute" = no; then
--	      add="$libdir/$linklib"
--	    elif test "$hardcode_minus_L" = yes; then
--	      add_dir="-L$libdir"
--	      add="-l$name"
--	    elif test "$hardcode_shlibpath_var" = yes; then
--	      case :$finalize_shlibpath: in
--	      *":$libdir:"*) ;;
--	      *) func_append finalize_shlibpath "$libdir:" ;;
--	      esac
--	      add="-l$name"
--	    elif test "$hardcode_automatic" = yes; then
--	      if test -n "$inst_prefix_dir" &&
--		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
--		add="$inst_prefix_dir$libdir/$linklib"
--	      else
--		add="$libdir/$linklib"
--	      fi
--	    else
--	      # We cannot seem to hardcode it, guess we'll fake it.
--	      add_dir="-L$libdir"
--	      # Try looking first in the location we're being installed to.
--	      if test -n "$inst_prefix_dir"; then
--		case $libdir in
--		  [\\/]*)
--		    func_append add_dir " -L$inst_prefix_dir$libdir"
--		    ;;
--		esac
--	      fi
--	      add="-l$name"
--	    fi
--
--	    if test "$linkmode" = prog; then
--	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
--	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
--	    else
--	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
--	      test -n "$add" && deplibs="$add $deplibs"
--	    fi
--	  fi
--	elif test "$linkmode" = prog; then
--	  # Here we assume that one of hardcode_direct or hardcode_minus_L
--	  # is not unsupported.  This is valid on all known static and
--	  # shared platforms.
--	  if test "$hardcode_direct" != unsupported; then
--	    test -n "$old_library" && linklib="$old_library"
--	    compile_deplibs="$dir/$linklib $compile_deplibs"
--	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
--	  else
--	    compile_deplibs="-l$name -L$dir $compile_deplibs"
--	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
--	  fi
--	elif test "$build_libtool_libs" = yes; then
--	  # Not a shared library
--	  if test "$deplibs_check_method" != pass_all; then
--	    # We're trying link a shared library against a static one
--	    # but the system doesn't support it.
--
--	    # Just print a warning and add the library to dependency_libs so
--	    # that the program can be linked against the static library.
--	    echo
--	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
--	    echo "*** I have the capability to make that library automatically link in when"
--	    echo "*** you link to this library.  But I can only do this if you have a"
--	    echo "*** shared version of the library, which you do not appear to have."
--	    if test "$module" = yes; then
--	      echo "*** But as you try to build a module library, libtool will still create "
--	      echo "*** a static module, that should work as long as the dlopening application"
--	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
--	      if test -z "$global_symbol_pipe"; then
--		echo
--		echo "*** However, this would only work if libtool was able to extract symbol"
--		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
--		echo "*** not find such a program.  So, this module is probably useless."
--		echo "*** \`nm' from GNU binutils and a full rebuild may help."
--	      fi
--	      if test "$build_old_libs" = no; then
--		build_libtool_libs=module
--		build_old_libs=yes
--	      else
--		build_libtool_libs=no
--	      fi
--	    fi
--	  else
--	    deplibs="$dir/$old_library $deplibs"
--	    link_static=yes
--	  fi
--	fi # link shared/static library?
--
--	if test "$linkmode" = lib; then
--	  if test -n "$dependency_libs" &&
--	     { test "$hardcode_into_libs" != yes ||
--	       test "$build_old_libs" = yes ||
--	       test "$link_static" = yes; }; then
--	    # Extract -R from dependency_libs
--	    temp_deplibs=
--	    for libdir in $dependency_libs; do
--	      case $libdir in
--	      -R*) func_stripname '-R' '' "$libdir"
--	           temp_xrpath=$func_stripname_result
--		   case " $xrpath " in
--		   *" $temp_xrpath "*) ;;
--		   *) func_append xrpath " $temp_xrpath";;
--		   esac;;
--	      *) func_append temp_deplibs " $libdir";;
--	      esac
--	    done
--	    dependency_libs="$temp_deplibs"
--	  fi
--
--	  func_append newlib_search_path " $absdir"
--	  # Link against this library
--	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
--	  # ... and its dependency_libs
--	  tmp_libs=
--	  for deplib in $dependency_libs; do
--	    newdependency_libs="$deplib $newdependency_libs"
--	    case $deplib in
--              -L*) func_stripname '-L' '' "$deplib"
--                   func_resolve_sysroot "$func_stripname_result";;
--              *) func_resolve_sysroot "$deplib" ;;
--            esac
--	    if $opt_preserve_dup_deps ; then
--	      case "$tmp_libs " in
--	      *" $func_resolve_sysroot_result "*)
--                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
--	      esac
--	    fi
--	    func_append tmp_libs " $func_resolve_sysroot_result"
--	  done
--
--	  if test "$link_all_deplibs" != no; then
--	    # Add the search paths of all dependency libraries
--	    for deplib in $dependency_libs; do
--	      path=
--	      case $deplib in
--	      -L*) path="$deplib" ;;
--	      *.la)
--	        func_resolve_sysroot "$deplib"
--	        deplib=$func_resolve_sysroot_result
--	        func_dirname "$deplib" "" "."
--		dir=$func_dirname_result
--		# We need an absolute path.
--		case $dir in
--		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
--		*)
--		  absdir=`cd "$dir" && pwd`
--		  if test -z "$absdir"; then
--		    func_warning "cannot determine absolute directory name of \`$dir'"
--		    absdir="$dir"
--		  fi
--		  ;;
--		esac
--		if $GREP "^installed=no" $deplib > /dev/null; then
--		case $host in
--		*-*-darwin*)
--		  depdepl=
--		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
--		  if test -n "$deplibrary_names" ; then
--		    for tmp in $deplibrary_names ; do
--		      depdepl=$tmp
--		    done
--		    if test -f "$absdir/$objdir/$depdepl" ; then
--		      depdepl="$absdir/$objdir/$depdepl"
--		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
--                      if test -z "$darwin_install_name"; then
--                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
--                      fi
--		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
--		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
--		      path=
--		    fi
--		  fi
--		  ;;
--		*)
--		  path="-L$absdir/$objdir"
--		  ;;
--		esac
--		else
--		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
--		  test -z "$libdir" && \
--		    func_fatal_error "\`$deplib' is not a valid libtool archive"
--		  test "$absdir" != "$libdir" && \
--		    func_warning "\`$deplib' seems to be moved"
--
--		  path="-L$absdir"
--		fi
--		;;
--	      esac
--	      case " $deplibs " in
--	      *" $path "*) ;;
--	      *) deplibs="$path $deplibs" ;;
--	      esac
--	    done
--	  fi # link_all_deplibs != no
--	fi # linkmode = lib
--      done # for deplib in $libs
--      if test "$pass" = link; then
--	if test "$linkmode" = "prog"; then
--	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
--	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
--	else
--	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	fi
--      fi
--      dependency_libs="$newdependency_libs"
--      if test "$pass" = dlpreopen; then
--	# Link the dlpreopened libraries before other libraries
--	for deplib in $save_deplibs; do
--	  deplibs="$deplib $deplibs"
--	done
--      fi
--      if test "$pass" != dlopen; then
--	if test "$pass" != conv; then
--	  # Make sure lib_search_path contains only unique directories.
--	  lib_search_path=
--	  for dir in $newlib_search_path; do
--	    case "$lib_search_path " in
--	    *" $dir "*) ;;
--	    *) func_append lib_search_path " $dir" ;;
--	    esac
--	  done
--	  newlib_search_path=
--	fi
--
--	if test "$linkmode,$pass" != "prog,link"; then
--	  vars="deplibs"
--	else
--	  vars="compile_deplibs finalize_deplibs"
--	fi
--	for var in $vars dependency_libs; do
--	  # Add libraries to $var in reverse order
--	  eval tmp_libs=\"\$$var\"
--	  new_libs=
--	  for deplib in $tmp_libs; do
--	    # FIXME: Pedantically, this is the right thing to do, so
--	    #        that some nasty dependency loop isn't accidentally
--	    #        broken:
--	    #new_libs="$deplib $new_libs"
--	    # Pragmatically, this seems to cause very few problems in
--	    # practice:
--	    case $deplib in
--	    -L*) new_libs="$deplib $new_libs" ;;
--	    -R*) ;;
--	    *)
--	      # And here is the reason: when a library appears more
--	      # than once as an explicit dependence of a library, or
--	      # is implicitly linked in more than once by the
--	      # compiler, it is considered special, and multiple
--	      # occurrences thereof are not removed.  Compare this
--	      # with having the same library being listed as a
--	      # dependency of multiple other libraries: in this case,
--	      # we know (pedantically, we assume) the library does not
--	      # need to be listed more than once, so we keep only the
--	      # last copy.  This is not always right, but it is rare
--	      # enough that we require users that really mean to play
--	      # such unportable linking tricks to link the library
--	      # using -Wl,-lname, so that libtool does not consider it
--	      # for duplicate removal.
--	      case " $specialdeplibs " in
--	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
--	      *)
--		case " $new_libs " in
--		*" $deplib "*) ;;
--		*) new_libs="$deplib $new_libs" ;;
--		esac
--		;;
--	      esac
--	      ;;
--	    esac
--	  done
--	  tmp_libs=
--	  for deplib in $new_libs; do
--	    case $deplib in
--	    -L*)
--	      case " $tmp_libs " in
--	      *" $deplib "*) ;;
--	      *) func_append tmp_libs " $deplib" ;;
--	      esac
--	      ;;
--	    *) func_append tmp_libs " $deplib" ;;
--	    esac
--	  done
--	  eval $var=\"$tmp_libs\"
--	done # for var
--      fi
--      # Last step: remove runtime libs from dependency_libs
--      # (they stay in deplibs)
--      tmp_libs=
--      for i in $dependency_libs ; do
--	case " $predeps $postdeps $compiler_lib_search_path " in
--	*" $i "*)
--	  i=""
--	  ;;
--	esac
--	if test -n "$i" ; then
--	  func_append tmp_libs " $i"
--	fi
--      done
--      dependency_libs=$tmp_libs
--    done # for pass
--    if test "$linkmode" = prog; then
--      dlfiles="$newdlfiles"
--    fi
--    if test "$linkmode" = prog || test "$linkmode" = lib; then
--      dlprefiles="$newdlprefiles"
--    fi
--
--    case $linkmode in
--    oldlib)
--      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
--	func_warning "\`-dlopen' is ignored for archives"
--      fi
--
--      case " $deplibs" in
--      *\ -l* | *\ -L*)
--	func_warning "\`-l' and \`-L' are ignored for archives" ;;
--      esac
--
--      test -n "$rpath" && \
--	func_warning "\`-rpath' is ignored for archives"
--
--      test -n "$xrpath" && \
--	func_warning "\`-R' is ignored for archives"
--
--      test -n "$vinfo" && \
--	func_warning "\`-version-info/-version-number' is ignored for archives"
--
--      test -n "$release" && \
--	func_warning "\`-release' is ignored for archives"
--
--      test -n "$export_symbols$export_symbols_regex" && \
--	func_warning "\`-export-symbols' is ignored for archives"
--
--      # Now set the variables for building old libraries.
--      build_libtool_libs=no
--      oldlibs="$output"
--      func_append objs "$old_deplibs"
--      ;;
--
--    lib)
--      # Make sure we only generate libraries of the form `libNAME.la'.
--      case $outputname in
--      lib*)
--	func_stripname 'lib' '.la' "$outputname"
--	name=$func_stripname_result
--	eval shared_ext=\"$shrext_cmds\"
--	eval libname=\"$libname_spec\"
--	;;
--      *)
--	test "$module" = no && \
--	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
--
--	if test "$need_lib_prefix" != no; then
--	  # Add the "lib" prefix for modules if required
--	  func_stripname '' '.la' "$outputname"
--	  name=$func_stripname_result
--	  eval shared_ext=\"$shrext_cmds\"
--	  eval libname=\"$libname_spec\"
--	else
--	  func_stripname '' '.la' "$outputname"
--	  libname=$func_stripname_result
--	fi
--	;;
--      esac
--
--      if test -n "$objs"; then
--	if test "$deplibs_check_method" != pass_all; then
--	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
--	else
--	  echo
--	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
--	  $ECHO "*** objects $objs is not portable!"
--	  func_append libobjs " $objs"
--	fi
--      fi
--
--      test "$dlself" != no && \
--	func_warning "\`-dlopen self' is ignored for libtool libraries"
--
--      set dummy $rpath
--      shift
--      test "$#" -gt 1 && \
--	func_warning "ignoring multiple \`-rpath's for a libtool library"
--
--      install_libdir="$1"
--
--      oldlibs=
--      if test -z "$rpath"; then
--	if test "$build_libtool_libs" = yes; then
--	  # Building a libtool convenience library.
--	  # Some compilers have problems with a `.al' extension so
--	  # convenience libraries should have the same extension an
--	  # archive normally would.
--	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
--	  build_libtool_libs=convenience
--	  build_old_libs=yes
--	fi
--
--	test -n "$vinfo" && \
--	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
--
--	test -n "$release" && \
--	  func_warning "\`-release' is ignored for convenience libraries"
--      else
--
--	# Parse the version information argument.
--	save_ifs="$IFS"; IFS=':'
--	set dummy $vinfo 0 0 0
--	shift
--	IFS="$save_ifs"
--
--	test -n "$7" && \
--	  func_fatal_help "too many parameters to \`-version-info'"
--
--	# convert absolute version numbers to libtool ages
--	# this retains compatibility with .la files and attempts
--	# to make the code below a bit more comprehensible
--
--	case $vinfo_number in
--	yes)
--	  number_major="$1"
--	  number_minor="$2"
--	  number_revision="$3"
--	  #
--	  # There are really only two kinds -- those that
--	  # use the current revision as the major version
--	  # and those that subtract age and use age as
--	  # a minor version.  But, then there is irix
--	  # which has an extra 1 added just for fun
--	  #
--	  case $version_type in
--	  # correct linux to gnu/linux during the next big refactor
--	  darwin|linux|osf|windows|none)
--	    func_arith $number_major + $number_minor
--	    current=$func_arith_result
--	    age="$number_minor"
--	    revision="$number_revision"
--	    ;;
--	  freebsd-aout|freebsd-elf|qnx|sunos)
--	    current="$number_major"
--	    revision="$number_minor"
--	    age="0"
--	    ;;
--	  irix|nonstopux)
--	    func_arith $number_major + $number_minor
--	    current=$func_arith_result
--	    age="$number_minor"
--	    revision="$number_minor"
--	    lt_irix_increment=no
--	    ;;
--	  *)
--	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
--	    ;;
--	  esac
--	  ;;
--	no)
--	  current="$1"
--	  revision="$2"
--	  age="$3"
--	  ;;
--	esac
--
--	# Check that each of the things are valid numbers.
--	case $current in
--	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
--	*)
--	  func_error "CURRENT \`$current' must be a nonnegative integer"
--	  func_fatal_error "\`$vinfo' is not valid version information"
--	  ;;
--	esac
--
--	case $revision in
--	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
--	*)
--	  func_error "REVISION \`$revision' must be a nonnegative integer"
--	  func_fatal_error "\`$vinfo' is not valid version information"
--	  ;;
--	esac
--
--	case $age in
--	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
--	*)
--	  func_error "AGE \`$age' must be a nonnegative integer"
--	  func_fatal_error "\`$vinfo' is not valid version information"
--	  ;;
--	esac
--
--	if test "$age" -gt "$current"; then
--	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
--	  func_fatal_error "\`$vinfo' is not valid version information"
--	fi
--
--	# Calculate the version variables.
--	major=
--	versuffix=
--	verstring=
--	case $version_type in
--	none) ;;
--
--	darwin)
--	  # Like Linux, but with the current version available in
--	  # verstring for coding it into the library header
--	  func_arith $current - $age
--	  major=.$func_arith_result
--	  versuffix="$major.$age.$revision"
--	  # Darwin ld doesn't like 0 for these options...
--	  func_arith $current + 1
--	  minor_current=$func_arith_result
--	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
--	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
--	  ;;
--
--	freebsd-aout)
--	  major=".$current"
--	  versuffix=".$current.$revision";
--	  ;;
--
--	freebsd-elf)
--	  major=".$current"
--	  versuffix=".$current"
--	  ;;
--
--	irix | nonstopux)
--	  if test "X$lt_irix_increment" = "Xno"; then
--	    func_arith $current - $age
--	  else
--	    func_arith $current - $age + 1
--	  fi
--	  major=$func_arith_result
--
--	  case $version_type in
--	    nonstopux) verstring_prefix=nonstopux ;;
--	    *)         verstring_prefix=sgi ;;
--	  esac
--	  verstring="$verstring_prefix$major.$revision"
--
--	  # Add in all the interfaces that we are compatible with.
--	  loop=$revision
--	  while test "$loop" -ne 0; do
--	    func_arith $revision - $loop
--	    iface=$func_arith_result
--	    func_arith $loop - 1
--	    loop=$func_arith_result
--	    verstring="$verstring_prefix$major.$iface:$verstring"
--	  done
--
--	  # Before this point, $major must not contain `.'.
--	  major=.$major
--	  versuffix="$major.$revision"
--	  ;;
--
--	linux) # correct to gnu/linux during the next big refactor
--	  func_arith $current - $age
--	  major=.$func_arith_result
--	  versuffix="$major.$age.$revision"
--	  ;;
--
--	osf)
--	  func_arith $current - $age
--	  major=.$func_arith_result
--	  versuffix=".$current.$age.$revision"
--	  verstring="$current.$age.$revision"
--
--	  # Add in all the interfaces that we are compatible with.
--	  loop=$age
--	  while test "$loop" -ne 0; do
--	    func_arith $current - $loop
--	    iface=$func_arith_result
--	    func_arith $loop - 1
--	    loop=$func_arith_result
--	    verstring="$verstring:${iface}.0"
--	  done
--
--	  # Make executables depend on our current version.
--	  func_append verstring ":${current}.0"
--	  ;;
--
--	qnx)
--	  major=".$current"
--	  versuffix=".$current"
--	  ;;
--
--	sunos)
--	  major=".$current"
--	  versuffix=".$current.$revision"
--	  ;;
--
--	windows)
--	  # Use '-' rather than '.', since we only want one
--	  # extension on DOS 8.3 filesystems.
--	  func_arith $current - $age
--	  major=$func_arith_result
--	  versuffix="-$major"
--          case $host in
--          x86_64-*mingw32*)
--             versuffix="6-$major"
--             ;;
--          *)
--             versuffix="-$major"
--             ;;
--          esac
--	  ;;
--
--	*)
--	  func_fatal_configuration "unknown library version type \`$version_type'"
--	  ;;
--	esac
--
--	# Clear the version info if we defaulted, and they specified a release.
--	if test -z "$vinfo" && test -n "$release"; then
--	  major=
--	  case $version_type in
--	  darwin)
--	    # we can't check for "0.0" in archive_cmds due to quoting
--	    # problems, so we reset it completely
--	    verstring=
--	    ;;
--	  *)
--	    verstring="0.0"
--	    ;;
--	  esac
--	  if test "$need_version" = no; then
--	    versuffix=
--	  else
--	    versuffix=".0.0"
--	  fi
--	fi
--
--	# Remove version info from name if versioning should be avoided
--	if test "$avoid_version" = yes && test "$need_version" = no; then
--	  major=
--	  versuffix=
--	  verstring=""
--	fi
--
--	# Check to see if the archive will have undefined symbols.
--	if test "$allow_undefined" = yes; then
--	  if test "$allow_undefined_flag" = unsupported; then
--	    func_warning "undefined symbols not allowed in $host shared libraries"
--	    build_libtool_libs=no
--	    build_old_libs=yes
--	  fi
--	else
--	  # Don't allow undefined symbols.
--	  allow_undefined_flag="$no_undefined_flag"
--	fi
--
--      fi
--
--      func_generate_dlsyms "$libname" "$libname" "yes"
--      func_append libobjs " $symfileobj"
--      test "X$libobjs" = "X " && libobjs=
--
--      if test "$opt_mode" != relink; then
--	# Remove our outputs, but don't remove object files since they
--	# may have been created when compiling PIC objects.
--	removelist=
--	tempremovelist=`$ECHO "$output_objdir/*"`
--	for p in $tempremovelist; do
--	  case $p in
--	    *.$objext | *.gcno)
--	       ;;
--	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
--	       if test "X$precious_files_regex" != "X"; then
--		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
--		 then
--		   continue
--		 fi
--	       fi
--	       func_append removelist " $p"
--	       ;;
--	    *) ;;
--	  esac
--	done
--	test -n "$removelist" && \
--	  func_show_eval "${RM}r \$removelist"
--      fi
--
--      # Now set the variables for building old libraries.
--      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
--	func_append oldlibs " $output_objdir/$libname.$libext"
--
--	# Transform .lo files to .o files.
--	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
--      fi
--
--      # Eliminate all temporary directories.
--      #for path in $notinst_path; do
--      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
--      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
--      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
--      #done
--
--      if test -n "$xrpath"; then
--	# If the user specified any rpath flags, then add them.
--	temp_xrpath=
--	for libdir in $xrpath; do
--	  func_replace_sysroot "$libdir"
--	  func_append temp_xrpath " -R$func_replace_sysroot_result"
--	  case "$finalize_rpath " in
--	  *" $libdir "*) ;;
--	  *) func_append finalize_rpath " $libdir" ;;
--	  esac
--	done
--	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
--	  dependency_libs="$temp_xrpath $dependency_libs"
--	fi
--      fi
--
--      # Make sure dlfiles contains only unique files that won't be dlpreopened
--      old_dlfiles="$dlfiles"
--      dlfiles=
--      for lib in $old_dlfiles; do
--	case " $dlprefiles $dlfiles " in
--	*" $lib "*) ;;
--	*) func_append dlfiles " $lib" ;;
--	esac
--      done
--
--      # Make sure dlprefiles contains only unique files
--      old_dlprefiles="$dlprefiles"
--      dlprefiles=
--      for lib in $old_dlprefiles; do
--	case "$dlprefiles " in
--	*" $lib "*) ;;
--	*) func_append dlprefiles " $lib" ;;
--	esac
--      done
--
--      if test "$build_libtool_libs" = yes; then
--	if test -n "$rpath"; then
--	  case $host in
--	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
--	    # these systems don't actually have a c library (as such)!
--	    ;;
--	  *-*-rhapsody* | *-*-darwin1.[012])
--	    # Rhapsody C library is in the System framework
--	    func_append deplibs " System.ltframework"
--	    ;;
--	  *-*-netbsd*)
--	    # Don't link with libc until the a.out ld.so is fixed.
--	    ;;
--	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
--	    # Do not include libc due to us having libc/libc_r.
--	    ;;
--	  *-*-sco3.2v5* | *-*-sco5v6*)
--	    # Causes problems with __ctype
--	    ;;
--	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
--	    # Compiler inserts libc in the correct place for threads to work
--	    ;;
--	  *)
--	    # Add libc to deplibs on all other systems if necessary.
--	    if test "$build_libtool_need_lc" = "yes"; then
--	      func_append deplibs " -lc"
--	    fi
--	    ;;
--	  esac
--	fi
--
--	# Transform deplibs into only deplibs that can be linked in shared.
--	name_save=$name
--	libname_save=$libname
--	release_save=$release
--	versuffix_save=$versuffix
--	major_save=$major
--	# I'm not sure if I'm treating the release correctly.  I think
--	# release should show up in the -l (ie -lgmp5) so we don't want to
--	# add it in twice.  Is that correct?
--	release=""
--	versuffix=""
--	major=""
--	newdeplibs=
--	droppeddeps=no
--	case $deplibs_check_method in
--	pass_all)
--	  # Don't check for shared/static.  Everything works.
--	  # This might be a little naive.  We might want to check
--	  # whether the library exists or not.  But this is on
--	  # osf3 & osf4 and I'm not really sure... Just
--	  # implementing what was already the behavior.
--	  newdeplibs=$deplibs
--	  ;;
--	test_compile)
--	  # This code stresses the "libraries are programs" paradigm to its
--	  # limits. Maybe even breaks it.  We compile a program, linking it
--	  # against the deplibs as a proxy for the library.  Then we can check
--	  # whether they linked in statically or dynamically with ldd.
--	  $opt_dry_run || $RM conftest.c
--	  cat > conftest.c <<EOF
--	  int main() { return 0; }
--EOF
--	  $opt_dry_run || $RM conftest
--	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
--	    ldd_output=`ldd conftest`
--	    for i in $deplibs; do
--	      case $i in
--	      -l*)
--		func_stripname -l '' "$i"
--		name=$func_stripname_result
--		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
--		  case " $predeps $postdeps " in
--		  *" $i "*)
--		    func_append newdeplibs " $i"
--		    i=""
--		    ;;
--		  esac
--		fi
--		if test -n "$i" ; then
--		  libname=`eval "\\$ECHO \"$libname_spec\""`
--		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
--		  set dummy $deplib_matches; shift
--		  deplib_match=$1
--		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
--		    func_append newdeplibs " $i"
--		  else
--		    droppeddeps=yes
--		    echo
--		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
--		    echo "*** I have the capability to make that library automatically link in when"
--		    echo "*** you link to this library.  But I can only do this if you have a"
--		    echo "*** shared version of the library, which I believe you do not have"
--		    echo "*** because a test_compile did reveal that the linker did not use it for"
--		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
--		  fi
--		fi
--		;;
--	      *)
--		func_append newdeplibs " $i"
--		;;
--	      esac
--	    done
--	  else
--	    # Error occurred in the first compile.  Let's try to salvage
--	    # the situation: Compile a separate program for each library.
--	    for i in $deplibs; do
--	      case $i in
--	      -l*)
--		func_stripname -l '' "$i"
--		name=$func_stripname_result
--		$opt_dry_run || $RM conftest
--		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
--		  ldd_output=`ldd conftest`
--		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
--		    case " $predeps $postdeps " in
--		    *" $i "*)
--		      func_append newdeplibs " $i"
--		      i=""
--		      ;;
--		    esac
--		  fi
--		  if test -n "$i" ; then
--		    libname=`eval "\\$ECHO \"$libname_spec\""`
--		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
--		    set dummy $deplib_matches; shift
--		    deplib_match=$1
--		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
--		      func_append newdeplibs " $i"
--		    else
--		      droppeddeps=yes
--		      echo
--		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
--		      echo "*** I have the capability to make that library automatically link in when"
--		      echo "*** you link to this library.  But I can only do this if you have a"
--		      echo "*** shared version of the library, which you do not appear to have"
--		      echo "*** because a test_compile did reveal that the linker did not use this one"
--		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
--		    fi
--		  fi
--		else
--		  droppeddeps=yes
--		  echo
--		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
--		  echo "*** make it link in!  You will probably need to install it or some"
--		  echo "*** library that it depends on before this library will be fully"
--		  echo "*** functional.  Installing it before continuing would be even better."
--		fi
--		;;
--	      *)
--		func_append newdeplibs " $i"
--		;;
--	      esac
--	    done
--	  fi
--	  ;;
--	file_magic*)
--	  set dummy $deplibs_check_method; shift
--	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
--	  for a_deplib in $deplibs; do
--	    case $a_deplib in
--	    -l*)
--	      func_stripname -l '' "$a_deplib"
--	      name=$func_stripname_result
--	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
--		case " $predeps $postdeps " in
--		*" $a_deplib "*)
--		  func_append newdeplibs " $a_deplib"
--		  a_deplib=""
--		  ;;
--		esac
--	      fi
--	      if test -n "$a_deplib" ; then
--		libname=`eval "\\$ECHO \"$libname_spec\""`
--		if test -n "$file_magic_glob"; then
--		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
--		else
--		  libnameglob=$libname
--		fi
--		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
--		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
--		  if test "$want_nocaseglob" = yes; then
--		    shopt -s nocaseglob
--		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
--		    $nocaseglob
--		  else
--		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
--		  fi
--		  for potent_lib in $potential_libs; do
--		      # Follow soft links.
--		      if ls -lLd "$potent_lib" 2>/dev/null |
--			 $GREP " -> " >/dev/null; then
--			continue
--		      fi
--		      # The statement above tries to avoid entering an
--		      # endless loop below, in case of cyclic links.
--		      # We might still enter an endless loop, since a link
--		      # loop can be closed while we follow links,
--		      # but so what?
--		      potlib="$potent_lib"
--		      while test -h "$potlib" 2>/dev/null; do
--			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
--			case $potliblink in
--			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
--			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
--			esac
--		      done
--		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
--			 $SED -e 10q |
--			 $EGREP "$file_magic_regex" > /dev/null; then
--			func_append newdeplibs " $a_deplib"
--			a_deplib=""
--			break 2
--		      fi
--		  done
--		done
--	      fi
--	      if test -n "$a_deplib" ; then
--		droppeddeps=yes
--		echo
--		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
--		echo "*** I have the capability to make that library automatically link in when"
--		echo "*** you link to this library.  But I can only do this if you have a"
--		echo "*** shared version of the library, which you do not appear to have"
--		echo "*** because I did check the linker path looking for a file starting"
--		if test -z "$potlib" ; then
--		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
--		else
--		  $ECHO "*** with $libname and none of the candidates passed a file format test"
--		  $ECHO "*** using a file magic. Last file checked: $potlib"
--		fi
--	      fi
--	      ;;
--	    *)
--	      # Add a -L argument.
--	      func_append newdeplibs " $a_deplib"
--	      ;;
--	    esac
--	  done # Gone through all deplibs.
--	  ;;
--	match_pattern*)
--	  set dummy $deplibs_check_method; shift
--	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
--	  for a_deplib in $deplibs; do
--	    case $a_deplib in
--	    -l*)
--	      func_stripname -l '' "$a_deplib"
--	      name=$func_stripname_result
--	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
--		case " $predeps $postdeps " in
--		*" $a_deplib "*)
--		  func_append newdeplibs " $a_deplib"
--		  a_deplib=""
--		  ;;
--		esac
--	      fi
--	      if test -n "$a_deplib" ; then
--		libname=`eval "\\$ECHO \"$libname_spec\""`
--		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
--		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
--		  for potent_lib in $potential_libs; do
--		    potlib="$potent_lib" # see symlink-check above in file_magic test
--		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
--		       $EGREP "$match_pattern_regex" > /dev/null; then
--		      func_append newdeplibs " $a_deplib"
--		      a_deplib=""
--		      break 2
--		    fi
--		  done
--		done
--	      fi
--	      if test -n "$a_deplib" ; then
--		droppeddeps=yes
--		echo
--		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
--		echo "*** I have the capability to make that library automatically link in when"
--		echo "*** you link to this library.  But I can only do this if you have a"
--		echo "*** shared version of the library, which you do not appear to have"
--		echo "*** because I did check the linker path looking for a file starting"
--		if test -z "$potlib" ; then
--		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
--		else
--		  $ECHO "*** with $libname and none of the candidates passed a file format test"
--		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
--		fi
--	      fi
--	      ;;
--	    *)
--	      # Add a -L argument.
--	      func_append newdeplibs " $a_deplib"
--	      ;;
--	    esac
--	  done # Gone through all deplibs.
--	  ;;
--	none | unknown | *)
--	  newdeplibs=""
--	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
--	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
--	    for i in $predeps $postdeps ; do
--	      # can't use Xsed below, because $i might contain '/'
--	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
--	    done
--	  fi
--	  case $tmp_deplibs in
--	  *[!\	\ ]*)
--	    echo
--	    if test "X$deplibs_check_method" = "Xnone"; then
--	      echo "*** Warning: inter-library dependencies are not supported in this platform."
--	    else
--	      echo "*** Warning: inter-library dependencies are not known to be supported."
--	    fi
--	    echo "*** All declared inter-library dependencies are being dropped."
--	    droppeddeps=yes
--	    ;;
--	  esac
--	  ;;
--	esac
--	versuffix=$versuffix_save
--	major=$major_save
--	release=$release_save
--	libname=$libname_save
--	name=$name_save
--
--	case $host in
--	*-*-rhapsody* | *-*-darwin1.[012])
--	  # On Rhapsody replace the C library with the System framework
--	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
--	  ;;
--	esac
--
--	if test "$droppeddeps" = yes; then
--	  if test "$module" = yes; then
--	    echo
--	    echo "*** Warning: libtool could not satisfy all declared inter-library"
--	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
--	    echo "*** a static module, that should work as long as the dlopening"
--	    echo "*** application is linked with the -dlopen flag."
--	    if test -z "$global_symbol_pipe"; then
--	      echo
--	      echo "*** However, this would only work if libtool was able to extract symbol"
--	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
--	      echo "*** not find such a program.  So, this module is probably useless."
--	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
--	    fi
--	    if test "$build_old_libs" = no; then
--	      oldlibs="$output_objdir/$libname.$libext"
--	      build_libtool_libs=module
--	      build_old_libs=yes
--	    else
--	      build_libtool_libs=no
--	    fi
--	  else
--	    echo "*** The inter-library dependencies that have been dropped here will be"
--	    echo "*** automatically added whenever a program is linked with this library"
--	    echo "*** or is declared to -dlopen it."
--
--	    if test "$allow_undefined" = no; then
--	      echo
--	      echo "*** Since this library must not contain undefined symbols,"
--	      echo "*** because either the platform does not support them or"
--	      echo "*** it was explicitly requested with -no-undefined,"
--	      echo "*** libtool will only create a static version of it."
--	      if test "$build_old_libs" = no; then
--		oldlibs="$output_objdir/$libname.$libext"
--		build_libtool_libs=module
--		build_old_libs=yes
--	      else
--		build_libtool_libs=no
--	      fi
--	    fi
--	  fi
--	fi
--	# Done checking deplibs!
--	deplibs=$newdeplibs
--      fi
--      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
--      case $host in
--	*-*-darwin*)
--	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	  ;;
--      esac
--
--      # move library search paths that coincide with paths to not yet
--      # installed libraries to the beginning of the library search list
--      new_libs=
--      for path in $notinst_path; do
--	case " $new_libs " in
--	*" -L$path/$objdir "*) ;;
--	*)
--	  case " $deplibs " in
--	  *" -L$path/$objdir "*)
--	    func_append new_libs " -L$path/$objdir" ;;
--	  esac
--	  ;;
--	esac
--      done
--      for deplib in $deplibs; do
--	case $deplib in
--	-L*)
--	  case " $new_libs " in
--	  *" $deplib "*) ;;
--	  *) func_append new_libs " $deplib" ;;
--	  esac
--	  ;;
--	*) func_append new_libs " $deplib" ;;
--	esac
--      done
--      deplibs="$new_libs"
--
--      # All the library-specific variables (install_libdir is set above).
--      library_names=
--      old_library=
--      dlname=
--
--      # Test again, we may have decided not to build it any more
--      if test "$build_libtool_libs" = yes; then
--	# Remove ${wl} instances when linking with ld.
--	# FIXME: should test the right _cmds variable.
--	case $archive_cmds in
--	  *\$LD\ *) wl= ;;
--        esac
--	if test "$hardcode_into_libs" = yes; then
--	  # Hardcode the library paths
--	  hardcode_libdirs=
--	  dep_rpath=
--	  rpath="$finalize_rpath"
--	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
--	  for libdir in $rpath; do
--	    if test -n "$hardcode_libdir_flag_spec"; then
--	      if test -n "$hardcode_libdir_separator"; then
--		func_replace_sysroot "$libdir"
--		libdir=$func_replace_sysroot_result
--		if test -z "$hardcode_libdirs"; then
--		  hardcode_libdirs="$libdir"
--		else
--		  # Just accumulate the unique libdirs.
--		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
--		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
--		    ;;
--		  *)
--		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
--		    ;;
--		  esac
--		fi
--	      else
--		eval flag=\"$hardcode_libdir_flag_spec\"
--		func_append dep_rpath " $flag"
--	      fi
--	    elif test -n "$runpath_var"; then
--	      case "$perm_rpath " in
--	      *" $libdir "*) ;;
--	      *) func_append perm_rpath " $libdir" ;;
--	      esac
--	    fi
--	  done
--	  # Substitute the hardcoded libdirs into the rpath.
--	  if test -n "$hardcode_libdir_separator" &&
--	     test -n "$hardcode_libdirs"; then
--	    libdir="$hardcode_libdirs"
--	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
--	  fi
--	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
--	    # We should set the runpath_var.
--	    rpath=
--	    for dir in $perm_rpath; do
--	      func_append rpath "$dir:"
--	    done
--	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
--	  fi
--	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
--	fi
--
--	shlibpath="$finalize_shlibpath"
--	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
--	if test -n "$shlibpath"; then
--	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
--	fi
--
--	# Get the real and link names of the library.
--	eval shared_ext=\"$shrext_cmds\"
--	eval library_names=\"$library_names_spec\"
--	set dummy $library_names
--	shift
--	realname="$1"
--	shift
--
--	if test -n "$soname_spec"; then
--	  eval soname=\"$soname_spec\"
--	else
--	  soname="$realname"
--	fi
--	if test -z "$dlname"; then
--	  dlname=$soname
--	fi
--
--	lib="$output_objdir/$realname"
--	linknames=
--	for link
--	do
--	  func_append linknames " $link"
--	done
--
--	# Use standard objects if they are pic
--	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
--	test "X$libobjs" = "X " && libobjs=
--
--	delfiles=
--	if test -n "$export_symbols" && test -n "$include_expsyms"; then
--	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
--	  export_symbols="$output_objdir/$libname.uexp"
--	  func_append delfiles " $export_symbols"
--	fi
--
--	orig_export_symbols=
--	case $host_os in
--	cygwin* | mingw* | cegcc*)
--	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
--	    # exporting using user supplied symfile
--	    if test "x`$SED "$sed_uncomment_deffile" $export_symbols | $SED 1q`" != xEXPORTS; then
--	      # and it's NOT already a .def file. Must figure out
--	      # which of the given symbols are data symbols and tag
--	      # them as such. So, trigger use of export_symbols_cmds.
--	      # export_symbols gets reassigned inside the "prepare
--	      # the list of exported symbols" if statement, so the
--	      # include_expsyms logic still works.
--	      orig_export_symbols="$export_symbols"
--	      export_symbols=
--	      always_export_symbols=yes
--	    fi
--	  fi
--	  ;;
--	esac
--
--	# Prepare the list of exported symbols
--	if test -z "$export_symbols"; then
--	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
--	    func_verbose "generating symbol list for \`$libname.la'"
--	    export_symbols="$output_objdir/$libname.exp"
--	    $opt_dry_run || $RM $export_symbols
--	    cmds=$export_symbols_cmds
--	    save_ifs="$IFS"; IFS='~'
--	    for cmd1 in $cmds; do
--	      IFS="$save_ifs"
--	      # Take the normal branch if the nm_file_list_spec branch
--	      # doesn't work or if tool conversion is not needed.
--	      case $nm_file_list_spec~$to_tool_file_cmd in
--		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
--		  try_normal_branch=yes
--		  eval cmd=\"$cmd1\"
--		  func_len " $cmd"
--		  len=$func_len_result
--		  ;;
--		*)
--		  try_normal_branch=no
--		  ;;
--	      esac
--	      if test "$try_normal_branch" = yes \
--		 && { test "$len" -lt "$max_cmd_len" \
--		      || test "$max_cmd_len" -le -1; }
--	      then
--		func_show_eval "$cmd" 'exit $?'
--		skipped_export=false
--	      elif test -n "$nm_file_list_spec"; then
--		func_basename "$output"
--		output_la=$func_basename_result
--		save_libobjs=$libobjs
--		save_output=$output
--		output=${output_objdir}/${output_la}.nm
--		func_to_tool_file "$output"
--		libobjs=$nm_file_list_spec$func_to_tool_file_result
--		func_append delfiles " $output"
--		func_verbose "creating $NM input file list: $output"
--		for obj in $save_libobjs; do
--		  func_to_tool_file "$obj"
--		  $ECHO "$func_to_tool_file_result"
--		done > "$output"
--		eval cmd=\"$cmd1\"
--		func_show_eval "$cmd" 'exit $?'
--		output=$save_output
--		libobjs=$save_libobjs
--		skipped_export=false
--	      else
--		# The command line is too long to execute in one step.
--		func_verbose "using reloadable object file for export list..."
--		skipped_export=:
--		# Break out early, otherwise skipped_export may be
--		# set to false by a later but shorter cmd.
--		break
--	      fi
--	    done
--	    IFS="$save_ifs"
--	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
--	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
--	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
--	    fi
--	  fi
--	fi
--
--	if test -n "$export_symbols" && test -n "$include_expsyms"; then
--	  tmp_export_symbols="$export_symbols"
--	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
--	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
--	fi
--
--	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
--	  # The given exports_symbols file has to be filtered, so filter it.
--	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
--	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
--	  # 's' commands which not all seds can handle. GNU sed should be fine
--	  # though. Also, the filter scales superlinearly with the number of
--	  # global variables. join(1) would be nice here, but unfortunately
--	  # isn't a blessed tool.
--	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
--	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
--	  export_symbols=$output_objdir/$libname.def
--	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
--	fi
--
--	tmp_deplibs=
--	for test_deplib in $deplibs; do
--	  case " $convenience " in
--	  *" $test_deplib "*) ;;
--	  *)
--	    func_append tmp_deplibs " $test_deplib"
--	    ;;
--	  esac
--	done
--	deplibs="$tmp_deplibs"
--
--	if test -n "$convenience"; then
--	  if test -n "$whole_archive_flag_spec" &&
--	    test "$compiler_needs_object" = yes &&
--	    test -z "$libobjs"; then
--	    # extract the archives, so we have objects to list.
--	    # TODO: could optimize this to just extract one archive.
--	    whole_archive_flag_spec=
--	  fi
--	  if test -n "$whole_archive_flag_spec"; then
--	    save_libobjs=$libobjs
--	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
--	    test "X$libobjs" = "X " && libobjs=
--	  else
--	    gentop="$output_objdir/${outputname}x"
--	    func_append generated " $gentop"
--
--	    func_extract_archives $gentop $convenience
--	    func_append libobjs " $func_extract_archives_result"
--	    test "X$libobjs" = "X " && libobjs=
--	  fi
--	fi
--
--	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
--	  eval flag=\"$thread_safe_flag_spec\"
--	  func_append linker_flags " $flag"
--	fi
--
--	# Make a backup of the uninstalled library when relinking
--	if test "$opt_mode" = relink; then
--	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
--	fi
--
--	# Do each of the archive commands.
--	if test "$module" = yes && test -n "$module_cmds" ; then
--	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
--	    eval test_cmds=\"$module_expsym_cmds\"
--	    cmds=$module_expsym_cmds
--	  else
--	    eval test_cmds=\"$module_cmds\"
--	    cmds=$module_cmds
--	  fi
--	else
--	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
--	    eval test_cmds=\"$archive_expsym_cmds\"
--	    cmds=$archive_expsym_cmds
--	  else
--	    eval test_cmds=\"$archive_cmds\"
--	    cmds=$archive_cmds
--	  fi
--	fi
--
--	if test "X$skipped_export" != "X:" &&
--	   func_len " $test_cmds" &&
--	   len=$func_len_result &&
--	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
--	  :
--	else
--	  # The command line is too long to link in one step, link piecewise
--	  # or, if using GNU ld and skipped_export is not :, use a linker
--	  # script.
--
--	  # Save the value of $output and $libobjs because we want to
--	  # use them later.  If we have whole_archive_flag_spec, we
--	  # want to use save_libobjs as it was before
--	  # whole_archive_flag_spec was expanded, because we can't
--	  # assume the linker understands whole_archive_flag_spec.
--	  # This may have to be revisited, in case too many
--	  # convenience libraries get linked in and end up exceeding
--	  # the spec.
--	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
--	    save_libobjs=$libobjs
--	  fi
--	  save_output=$output
--	  func_basename "$output"
--	  output_la=$func_basename_result
--
--	  # Clear the reloadable object creation command queue and
--	  # initialize k to one.
--	  test_cmds=
--	  concat_cmds=
--	  objlist=
--	  last_robj=
--	  k=1
--
--	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
--	    output=${output_objdir}/${output_la}.lnkscript
--	    func_verbose "creating GNU ld script: $output"
--	    echo 'INPUT (' > $output
--	    for obj in $save_libobjs
--	    do
--	      func_to_tool_file "$obj"
--	      $ECHO "$func_to_tool_file_result" >> $output
--	    done
--	    echo ')' >> $output
--	    func_append delfiles " $output"
--	    func_to_tool_file "$output"
--	    output=$func_to_tool_file_result
--	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
--	    output=${output_objdir}/${output_la}.lnk
--	    func_verbose "creating linker input file list: $output"
--	    : > $output
--	    set x $save_libobjs
--	    shift
--	    firstobj=
--	    if test "$compiler_needs_object" = yes; then
--	      firstobj="$1 "
--	      shift
--	    fi
--	    for obj
--	    do
--	      func_to_tool_file "$obj"
--	      $ECHO "$func_to_tool_file_result" >> $output
--	    done
--	    func_append delfiles " $output"
--	    func_to_tool_file "$output"
--	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
--	  else
--	    if test -n "$save_libobjs"; then
--	      func_verbose "creating reloadable object files..."
--	      output=$output_objdir/$output_la-${k}.$objext
--	      eval test_cmds=\"$reload_cmds\"
--	      func_len " $test_cmds"
--	      len0=$func_len_result
--	      len=$len0
--
--	      # Loop over the list of objects to be linked.
--	      for obj in $save_libobjs
--	      do
--		func_len " $obj"
--		func_arith $len + $func_len_result
--		len=$func_arith_result
--		if test "X$objlist" = X ||
--		   test "$len" -lt "$max_cmd_len"; then
--		  func_append objlist " $obj"
--		else
--		  # The command $test_cmds is almost too long, add a
--		  # command to the queue.
--		  if test "$k" -eq 1 ; then
--		    # The first file doesn't have a previous command to add.
--		    reload_objs=$objlist
--		    eval concat_cmds=\"$reload_cmds\"
--		  else
--		    # All subsequent reloadable object files will link in
--		    # the last one created.
--		    reload_objs="$objlist $last_robj"
--		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
--		  fi
--		  last_robj=$output_objdir/$output_la-${k}.$objext
--		  func_arith $k + 1
--		  k=$func_arith_result
--		  output=$output_objdir/$output_la-${k}.$objext
--		  objlist=" $obj"
--		  func_len " $last_robj"
--		  func_arith $len0 + $func_len_result
--		  len=$func_arith_result
--		fi
--	      done
--	      # Handle the remaining objects by creating one last
--	      # reloadable object file.  All subsequent reloadable object
--	      # files will link in the last one created.
--	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
--	      reload_objs="$objlist $last_robj"
--	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
--	      if test -n "$last_robj"; then
--	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
--	      fi
--	      func_append delfiles " $output"
--
--	    else
--	      output=
--	    fi
--
--	    if ${skipped_export-false}; then
--	      func_verbose "generating symbol list for \`$libname.la'"
--	      export_symbols="$output_objdir/$libname.exp"
--	      $opt_dry_run || $RM $export_symbols
--	      libobjs=$output
--	      # Append the command to create the export file.
--	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
--	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
--	      if test -n "$last_robj"; then
--		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
--	      fi
--	    fi
--
--	    test -n "$save_libobjs" &&
--	      func_verbose "creating a temporary reloadable object file: $output"
--
--	    # Loop through the commands generated above and execute them.
--	    save_ifs="$IFS"; IFS='~'
--	    for cmd in $concat_cmds; do
--	      IFS="$save_ifs"
--	      $opt_silent || {
--		  func_quote_for_expand "$cmd"
--		  eval "func_echo $func_quote_for_expand_result"
--	      }
--	      $opt_dry_run || eval "$cmd" || {
--		lt_exit=$?
--
--		# Restore the uninstalled library and exit
--		if test "$opt_mode" = relink; then
--		  ( cd "$output_objdir" && \
--		    $RM "${realname}T" && \
--		    $MV "${realname}U" "$realname" )
--		fi
--
--		exit $lt_exit
--	      }
--	    done
--	    IFS="$save_ifs"
--
--	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
--	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
--	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
--	    fi
--	  fi
--
--          if ${skipped_export-false}; then
--	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
--	      tmp_export_symbols="$export_symbols"
--	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
--	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
--	    fi
--
--	    if test -n "$orig_export_symbols"; then
--	      # The given exports_symbols file has to be filtered, so filter it.
--	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
--	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
--	      # 's' commands which not all seds can handle. GNU sed should be fine
--	      # though. Also, the filter scales superlinearly with the number of
--	      # global variables. join(1) would be nice here, but unfortunately
--	      # isn't a blessed tool.
--	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
--	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
--	      export_symbols=$output_objdir/$libname.def
--	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
--	    fi
--	  fi
--
--	  libobjs=$output
--	  # Restore the value of output.
--	  output=$save_output
--
--	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
--	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
--	    test "X$libobjs" = "X " && libobjs=
--	  fi
--	  # Expand the library linking commands again to reset the
--	  # value of $libobjs for piecewise linking.
--
--	  # Do each of the archive commands.
--	  if test "$module" = yes && test -n "$module_cmds" ; then
--	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
--	      cmds=$module_expsym_cmds
--	    else
--	      cmds=$module_cmds
--	    fi
--	  else
--	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
--	      cmds=$archive_expsym_cmds
--	    else
--	      cmds=$archive_cmds
--	    fi
--	  fi
--	fi
--
--	if test -n "$delfiles"; then
--	  # Append the command to remove temporary files to $cmds.
--	  eval cmds=\"\$cmds~\$RM $delfiles\"
--	fi
--
--	# Add any objects from preloaded convenience libraries
--	if test -n "$dlprefiles"; then
--	  gentop="$output_objdir/${outputname}x"
--	  func_append generated " $gentop"
--
--	  func_extract_archives $gentop $dlprefiles
--	  func_append libobjs " $func_extract_archives_result"
--	  test "X$libobjs" = "X " && libobjs=
--	fi
--
--	save_ifs="$IFS"; IFS='~'
--	for cmd in $cmds; do
--	  IFS="$save_ifs"
--	  eval cmd=\"$cmd\"
--	  $opt_silent || {
--	    func_quote_for_expand "$cmd"
--	    eval "func_echo $func_quote_for_expand_result"
--	  }
--	  $opt_dry_run || eval "$cmd" || {
--	    lt_exit=$?
--
--	    # Restore the uninstalled library and exit
--	    if test "$opt_mode" = relink; then
--	      ( cd "$output_objdir" && \
--	        $RM "${realname}T" && \
--		$MV "${realname}U" "$realname" )
--	    fi
--
--	    exit $lt_exit
--	  }
--	done
--	IFS="$save_ifs"
--
--	# Restore the uninstalled library and exit
--	if test "$opt_mode" = relink; then
--	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
--
--	  if test -n "$convenience"; then
--	    if test -z "$whole_archive_flag_spec"; then
--	      func_show_eval '${RM}r "$gentop"'
--	    fi
--	  fi
--
--	  exit $EXIT_SUCCESS
--	fi
--
--	# Create links to the real library.
--	for linkname in $linknames; do
--	  if test "$realname" != "$linkname"; then
--	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
--	  fi
--	done
--
--	# If -module or -export-dynamic was specified, set the dlname.
--	if test "$module" = yes || test "$export_dynamic" = yes; then
--	  # On all known operating systems, these are identical.
--	  dlname="$soname"
--	fi
--      fi
--      ;;
--
--    obj)
--      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
--	func_warning "\`-dlopen' is ignored for objects"
--      fi
--
--      case " $deplibs" in
--      *\ -l* | *\ -L*)
--	func_warning "\`-l' and \`-L' are ignored for objects" ;;
--      esac
--
--      test -n "$rpath" && \
--	func_warning "\`-rpath' is ignored for objects"
--
--      test -n "$xrpath" && \
--	func_warning "\`-R' is ignored for objects"
--
--      test -n "$vinfo" && \
--	func_warning "\`-version-info' is ignored for objects"
--
--      test -n "$release" && \
--	func_warning "\`-release' is ignored for objects"
--
--      case $output in
--      *.lo)
--	test -n "$objs$old_deplibs" && \
--	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
--
--	libobj=$output
--	func_lo2o "$libobj"
--	obj=$func_lo2o_result
--	;;
--      *)
--	libobj=
--	obj="$output"
--	;;
--      esac
--
--      # Delete the old objects.
--      $opt_dry_run || $RM $obj $libobj
--
--      # Objects from convenience libraries.  This assumes
--      # single-version convenience libraries.  Whenever we create
--      # different ones for PIC/non-PIC, this we'll have to duplicate
--      # the extraction.
--      reload_conv_objs=
--      gentop=
--      # reload_cmds runs $LD directly, so let us get rid of
--      # -Wl from whole_archive_flag_spec and hope we can get by with
--      # turning comma into space..
--      wl=
--
--      if test -n "$convenience"; then
--	if test -n "$whole_archive_flag_spec"; then
--	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
--	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
--	else
--	  gentop="$output_objdir/${obj}x"
--	  func_append generated " $gentop"
--
--	  func_extract_archives $gentop $convenience
--	  reload_conv_objs="$reload_objs $func_extract_archives_result"
--	fi
--      fi
--
--      # If we're not building shared, we need to use non_pic_objs
--      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
--
--      # Create the old-style object.
--      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
--
--      output="$obj"
--      func_execute_cmds "$reload_cmds" 'exit $?'
--
--      # Exit if we aren't doing a library object file.
--      if test -z "$libobj"; then
--	if test -n "$gentop"; then
--	  func_show_eval '${RM}r "$gentop"'
--	fi
--
--	exit $EXIT_SUCCESS
--      fi
--
--      if test "$build_libtool_libs" != yes; then
--	if test -n "$gentop"; then
--	  func_show_eval '${RM}r "$gentop"'
--	fi
--
--	# Create an invalid libtool object if no PIC, so that we don't
--	# accidentally link it into a program.
--	# $show "echo timestamp > $libobj"
--	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
--	exit $EXIT_SUCCESS
--      fi
--
--      if test -n "$pic_flag" || test "$pic_mode" != default; then
--	# Only do commands if we really have different PIC objects.
--	reload_objs="$libobjs $reload_conv_objs"
--	output="$libobj"
--	func_execute_cmds "$reload_cmds" 'exit $?'
--      fi
--
--      if test -n "$gentop"; then
--	func_show_eval '${RM}r "$gentop"'
--      fi
--
--      exit $EXIT_SUCCESS
--      ;;
--
--    prog)
--      case $host in
--	*cygwin*) func_stripname '' '.exe' "$output"
--	          output=$func_stripname_result.exe;;
--      esac
--      test -n "$vinfo" && \
--	func_warning "\`-version-info' is ignored for programs"
--
--      test -n "$release" && \
--	func_warning "\`-release' is ignored for programs"
--
--      test "$preload" = yes \
--        && test "$dlopen_support" = unknown \
--	&& test "$dlopen_self" = unknown \
--	&& test "$dlopen_self_static" = unknown && \
--	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
--
--      case $host in
--      *-*-rhapsody* | *-*-darwin1.[012])
--	# On Rhapsody replace the C library is the System framework
--	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
--	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
--	;;
--      esac
--
--      case $host in
--      *-*-darwin*)
--	# Don't allow lazy linking, it breaks C++ global constructors
--	# But is supposedly fixed on 10.4 or later (yay!).
--	if test "$tagname" = CXX ; then
--	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
--	    10.[0123])
--	      func_append compile_command " ${wl}-bind_at_load"
--	      func_append finalize_command " ${wl}-bind_at_load"
--	    ;;
--	  esac
--	fi
--	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
--	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
--	;;
--      esac
--
--
--      # move library search paths that coincide with paths to not yet
--      # installed libraries to the beginning of the library search list
--      new_libs=
--      for path in $notinst_path; do
--	case " $new_libs " in
--	*" -L$path/$objdir "*) ;;
--	*)
--	  case " $compile_deplibs " in
--	  *" -L$path/$objdir "*)
--	    func_append new_libs " -L$path/$objdir" ;;
--	  esac
--	  ;;
--	esac
--      done
--      for deplib in $compile_deplibs; do
--	case $deplib in
--	-L*)
--	  case " $new_libs " in
--	  *" $deplib "*) ;;
--	  *) func_append new_libs " $deplib" ;;
--	  esac
--	  ;;
--	*) func_append new_libs " $deplib" ;;
--	esac
--      done
--      compile_deplibs="$new_libs"
--
--
--      func_append compile_command " $compile_deplibs"
--      func_append finalize_command " $finalize_deplibs"
--
--      if test -n "$rpath$xrpath"; then
--	# If the user specified any rpath flags, then add them.
--	for libdir in $rpath $xrpath; do
--	  # This is the magic to use -rpath.
--	  case "$finalize_rpath " in
--	  *" $libdir "*) ;;
--	  *) func_append finalize_rpath " $libdir" ;;
--	  esac
--	done
--      fi
--
--      # Now hardcode the library paths
--      rpath=
--      hardcode_libdirs=
--      for libdir in $compile_rpath $finalize_rpath; do
--	if test -n "$hardcode_libdir_flag_spec"; then
--	  if test -n "$hardcode_libdir_separator"; then
--	    if test -z "$hardcode_libdirs"; then
--	      hardcode_libdirs="$libdir"
--	    else
--	      # Just accumulate the unique libdirs.
--	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
--	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
--		;;
--	      *)
--		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
--		;;
--	      esac
--	    fi
--	  else
--	    eval flag=\"$hardcode_libdir_flag_spec\"
--	    func_append rpath " $flag"
--	  fi
--	elif test -n "$runpath_var"; then
--	  case "$perm_rpath " in
--	  *" $libdir "*) ;;
--	  *) func_append perm_rpath " $libdir" ;;
--	  esac
--	fi
--	case $host in
--	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
--	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
--	  case :$dllsearchpath: in
--	  *":$libdir:"*) ;;
--	  ::) dllsearchpath=$libdir;;
--	  *) func_append dllsearchpath ":$libdir";;
--	  esac
--	  case :$dllsearchpath: in
--	  *":$testbindir:"*) ;;
--	  ::) dllsearchpath=$testbindir;;
--	  *) func_append dllsearchpath ":$testbindir";;
--	  esac
--	  ;;
--	esac
--      done
--      # Substitute the hardcoded libdirs into the rpath.
--      if test -n "$hardcode_libdir_separator" &&
--	 test -n "$hardcode_libdirs"; then
--	libdir="$hardcode_libdirs"
--	eval rpath=\" $hardcode_libdir_flag_spec\"
--      fi
--      compile_rpath="$rpath"
--
--      rpath=
--      hardcode_libdirs=
--      for libdir in $finalize_rpath; do
--	if test -n "$hardcode_libdir_flag_spec"; then
--	  if test -n "$hardcode_libdir_separator"; then
--	    if test -z "$hardcode_libdirs"; then
--	      hardcode_libdirs="$libdir"
--	    else
--	      # Just accumulate the unique libdirs.
--	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
--	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
--		;;
--	      *)
--		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
--		;;
--	      esac
--	    fi
--	  else
--	    eval flag=\"$hardcode_libdir_flag_spec\"
--	    func_append rpath " $flag"
--	  fi
--	elif test -n "$runpath_var"; then
--	  case "$finalize_perm_rpath " in
--	  *" $libdir "*) ;;
--	  *) func_append finalize_perm_rpath " $libdir" ;;
--	  esac
--	fi
--      done
--      # Substitute the hardcoded libdirs into the rpath.
--      if test -n "$hardcode_libdir_separator" &&
--	 test -n "$hardcode_libdirs"; then
--	libdir="$hardcode_libdirs"
--	eval rpath=\" $hardcode_libdir_flag_spec\"
--      fi
--      finalize_rpath="$rpath"
--
--      if test -n "$libobjs" && test "$build_old_libs" = yes; then
--	# Transform all the library objects into standard objects.
--	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
--	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
--      fi
--
--      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
--
--      # template prelinking step
--      if test -n "$prelink_cmds"; then
--	func_execute_cmds "$prelink_cmds" 'exit $?'
--      fi
--
--      wrappers_required=yes
--      case $host in
--      *cegcc* | *mingw32ce*)
--        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
--        wrappers_required=no
--        ;;
--      *cygwin* | *mingw* )
--        if test "$build_libtool_libs" != yes; then
--          wrappers_required=no
--        fi
--        ;;
--      *)
--        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
--          wrappers_required=no
--        fi
--        ;;
--      esac
--      if test "$wrappers_required" = no; then
--	# Replace the output file specification.
--	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
--	link_command="$compile_command$compile_rpath"
--
--	# We have no uninstalled library dependencies, so finalize right now.
--	exit_status=0
--	func_show_eval "$link_command" 'exit_status=$?'
--
--	if test -n "$postlink_cmds"; then
--	  func_to_tool_file "$output"
--	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
--	  func_execute_cmds "$postlink_cmds" 'exit $?'
--	fi
--
--	# Delete the generated files.
--	if test -f "$output_objdir/${outputname}S.${objext}"; then
--	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
--	fi
--
--	exit $exit_status
--      fi
--
--      if test -n "$compile_shlibpath$finalize_shlibpath"; then
--	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
--      fi
--      if test -n "$finalize_shlibpath"; then
--	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
--      fi
--
--      compile_var=
--      finalize_var=
--      if test -n "$runpath_var"; then
--	if test -n "$perm_rpath"; then
--	  # We should set the runpath_var.
--	  rpath=
--	  for dir in $perm_rpath; do
--	    func_append rpath "$dir:"
--	  done
--	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
--	fi
--	if test -n "$finalize_perm_rpath"; then
--	  # We should set the runpath_var.
--	  rpath=
--	  for dir in $finalize_perm_rpath; do
--	    func_append rpath "$dir:"
--	  done
--	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
--	fi
--      fi
--
--      if test "$no_install" = yes; then
--	# We don't need to create a wrapper script.
--	link_command="$compile_var$compile_command$compile_rpath"
--	# Replace the output file specification.
--	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
--	# Delete the old output file.
--	$opt_dry_run || $RM $output
--	# Link the executable and exit
--	func_show_eval "$link_command" 'exit $?'
--
--	if test -n "$postlink_cmds"; then
--	  func_to_tool_file "$output"
--	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
--	  func_execute_cmds "$postlink_cmds" 'exit $?'
--	fi
--
--	exit $EXIT_SUCCESS
--      fi
--
--      if test "$hardcode_action" = relink; then
--	# Fast installation is not supported
--	link_command="$compile_var$compile_command$compile_rpath"
--	relink_command="$finalize_var$finalize_command$finalize_rpath"
--
--	func_warning "this platform does not like uninstalled shared libraries"
--	func_warning "\`$output' will be relinked during installation"
--      else
--	if test "$fast_install" != no; then
--	  link_command="$finalize_var$compile_command$finalize_rpath"
--	  if test "$fast_install" = yes; then
--	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
--	  else
--	    # fast_install is set to needless
--	    relink_command=
--	  fi
--	else
--	  link_command="$compile_var$compile_command$compile_rpath"
--	  relink_command="$finalize_var$finalize_command$finalize_rpath"
--	fi
--      fi
--
--      # Replace the output file specification.
--      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
--
--      # Delete the old output files.
--      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
--
--      func_show_eval "$link_command" 'exit $?'
--
--      if test -n "$postlink_cmds"; then
--	func_to_tool_file "$output_objdir/$outputname"
--	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
--	func_execute_cmds "$postlink_cmds" 'exit $?'
--      fi
--
--      # Now create the wrapper script.
--      func_verbose "creating $output"
--
--      # Quote the relink command for shipping.
--      if test -n "$relink_command"; then
--	# Preserve any variables that may affect compiler behavior
--	for var in $variables_saved_for_relink; do
--	  if eval test -z \"\${$var+set}\"; then
--	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
--	  elif eval var_value=\$$var; test -z "$var_value"; then
--	    relink_command="$var=; export $var; $relink_command"
--	  else
--	    func_quote_for_eval "$var_value"
--	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
--	  fi
--	done
--	relink_command="(cd `pwd`; $relink_command)"
--	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
--      fi
--
--      # Only actually do things if not in dry run mode.
--      $opt_dry_run || {
--	# win32 will think the script is a binary if it has
--	# a .exe suffix, so we strip it off here.
--	case $output in
--	  *.exe) func_stripname '' '.exe' "$output"
--	         output=$func_stripname_result ;;
--	esac
--	# test for cygwin because mv fails w/o .exe extensions
--	case $host in
--	  *cygwin*)
--	    exeext=.exe
--	    func_stripname '' '.exe' "$outputname"
--	    outputname=$func_stripname_result ;;
--	  *) exeext= ;;
--	esac
--	case $host in
--	  *cygwin* | *mingw* )
--	    func_dirname_and_basename "$output" "" "."
--	    output_name=$func_basename_result
--	    output_path=$func_dirname_result
--	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
--	    cwrapper="$output_path/$output_name.exe"
--	    $RM $cwrappersource $cwrapper
--	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
--
--	    func_emit_cwrapperexe_src > $cwrappersource
--
--	    # The wrapper executable is built using the $host compiler,
--	    # because it contains $host paths and files. If cross-
--	    # compiling, it, like the target executable, must be
--	    # executed on the $host or under an emulation environment.
--	    $opt_dry_run || {
--	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
--	      $STRIP $cwrapper
--	    }
--
--	    # Now, create the wrapper script for func_source use:
--	    func_ltwrapper_scriptname $cwrapper
--	    $RM $func_ltwrapper_scriptname_result
--	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
--	    $opt_dry_run || {
--	      # note: this script will not be executed, so do not chmod.
--	      if test "x$build" = "x$host" ; then
--		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
--	      else
--		func_emit_wrapper no > $func_ltwrapper_scriptname_result
--	      fi
--	    }
--	  ;;
--	  * )
--	    $RM $output
--	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
--
--	    func_emit_wrapper no > $output
--	    chmod +x $output
--	  ;;
--	esac
--      }
--      exit $EXIT_SUCCESS
--      ;;
--    esac
--
--    # See if we need to build an old-fashioned archive.
--    for oldlib in $oldlibs; do
--
--      if test "$build_libtool_libs" = convenience; then
--	oldobjs="$libobjs_save $symfileobj"
--	addlibs="$convenience"
--	build_libtool_libs=no
--      else
--	if test "$build_libtool_libs" = module; then
--	  oldobjs="$libobjs_save"
--	  build_libtool_libs=no
--	else
--	  oldobjs="$old_deplibs $non_pic_objects"
--	  if test "$preload" = yes && test -f "$symfileobj"; then
--	    func_append oldobjs " $symfileobj"
--	  fi
--	fi
--	addlibs="$old_convenience"
--      fi
--
--      if test -n "$addlibs"; then
--	gentop="$output_objdir/${outputname}x"
--	func_append generated " $gentop"
--
--	func_extract_archives $gentop $addlibs
--	func_append oldobjs " $func_extract_archives_result"
--      fi
--
--      # Do each command in the archive commands.
--      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
--	cmds=$old_archive_from_new_cmds
--      else
--
--	# Add any objects from preloaded convenience libraries
--	if test -n "$dlprefiles"; then
--	  gentop="$output_objdir/${outputname}x"
--	  func_append generated " $gentop"
--
--	  func_extract_archives $gentop $dlprefiles
--	  func_append oldobjs " $func_extract_archives_result"
--	fi
--
--	# POSIX demands no paths to be encoded in archives.  We have
--	# to avoid creating archives with duplicate basenames if we
--	# might have to extract them afterwards, e.g., when creating a
--	# static archive out of a convenience library, or when linking
--	# the entirety of a libtool archive into another (currently
--	# not supported by libtool).
--	if (for obj in $oldobjs
--	    do
--	      func_basename "$obj"
--	      $ECHO "$func_basename_result"
--	    done | sort | sort -uc >/dev/null 2>&1); then
--	  :
--	else
--	  echo "copying selected object files to avoid basename conflicts..."
--	  gentop="$output_objdir/${outputname}x"
--	  func_append generated " $gentop"
--	  func_mkdir_p "$gentop"
--	  save_oldobjs=$oldobjs
--	  oldobjs=
--	  counter=1
--	  for obj in $save_oldobjs
--	  do
--	    func_basename "$obj"
--	    objbase="$func_basename_result"
--	    case " $oldobjs " in
--	    " ") oldobjs=$obj ;;
--	    *[\ /]"$objbase "*)
--	      while :; do
--		# Make sure we don't pick an alternate name that also
--		# overlaps.
--		newobj=lt$counter-$objbase
--		func_arith $counter + 1
--		counter=$func_arith_result
--		case " $oldobjs " in
--		*[\ /]"$newobj "*) ;;
--		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
--		esac
--	      done
--	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
--	      func_append oldobjs " $gentop/$newobj"
--	      ;;
--	    *) func_append oldobjs " $obj" ;;
--	    esac
--	  done
--	fi
--	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
--	tool_oldlib=$func_to_tool_file_result
--	eval cmds=\"$old_archive_cmds\"
--
--	func_len " $cmds"
--	len=$func_len_result
--	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
--	  cmds=$old_archive_cmds
--	elif test -n "$archiver_list_spec"; then
--	  func_verbose "using command file archive linking..."
--	  for obj in $oldobjs
--	  do
--	    func_to_tool_file "$obj"
--	    $ECHO "$func_to_tool_file_result"
--	  done > $output_objdir/$libname.libcmd
--	  func_to_tool_file "$output_objdir/$libname.libcmd"
--	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
--	  cmds=$old_archive_cmds
--	else
--	  # the command line is too long to link in one step, link in parts
--	  func_verbose "using piecewise archive linking..."
--	  save_RANLIB=$RANLIB
--	  RANLIB=:
--	  objlist=
--	  concat_cmds=
--	  save_oldobjs=$oldobjs
--	  oldobjs=
--	  # Is there a better way of finding the last object in the list?
--	  for obj in $save_oldobjs
--	  do
--	    last_oldobj=$obj
--	  done
--	  eval test_cmds=\"$old_archive_cmds\"
--	  func_len " $test_cmds"
--	  len0=$func_len_result
--	  len=$len0
--	  for obj in $save_oldobjs
--	  do
--	    func_len " $obj"
--	    func_arith $len + $func_len_result
--	    len=$func_arith_result
--	    func_append objlist " $obj"
--	    if test "$len" -lt "$max_cmd_len"; then
--	      :
--	    else
--	      # the above command should be used before it gets too long
--	      oldobjs=$objlist
--	      if test "$obj" = "$last_oldobj" ; then
--		RANLIB=$save_RANLIB
--	      fi
--	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
--	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
--	      objlist=
--	      len=$len0
--	    fi
--	  done
--	  RANLIB=$save_RANLIB
--	  oldobjs=$objlist
--	  if test "X$oldobjs" = "X" ; then
--	    eval cmds=\"\$concat_cmds\"
--	  else
--	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
--	  fi
--	fi
--      fi
--      func_execute_cmds "$cmds" 'exit $?'
--    done
--
--    test -n "$generated" && \
--      func_show_eval "${RM}r$generated"
--
--    # Now create the libtool archive.
--    case $output in
--    *.la)
--      old_library=
--      test "$build_old_libs" = yes && old_library="$libname.$libext"
--      func_verbose "creating $output"
--
--      # Preserve any variables that may affect compiler behavior
--      for var in $variables_saved_for_relink; do
--	if eval test -z \"\${$var+set}\"; then
--	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
--	elif eval var_value=\$$var; test -z "$var_value"; then
--	  relink_command="$var=; export $var; $relink_command"
--	else
--	  func_quote_for_eval "$var_value"
--	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
--	fi
--      done
--      # Quote the link command for shipping.
--      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
--      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
--      if test "$hardcode_automatic" = yes ; then
--	relink_command=
--      fi
--
--      # Only create the output if not a dry run.
--      $opt_dry_run || {
--	for installed in no yes; do
--	  if test "$installed" = yes; then
--	    if test -z "$install_libdir"; then
--	      break
--	    fi
--	    output="$output_objdir/$outputname"i
--	    # Replace all uninstalled libtool libraries with the installed ones
--	    newdependency_libs=
--	    for deplib in $dependency_libs; do
--	      case $deplib in
--	      *.la)
--		func_basename "$deplib"
--		name="$func_basename_result"
--		func_resolve_sysroot "$deplib"
--		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
--		test -z "$libdir" && \
--		  func_fatal_error "\`$deplib' is not a valid libtool archive"
--		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
--		;;
--	      -L*)
--		func_stripname -L '' "$deplib"
--		func_replace_sysroot "$func_stripname_result"
--		func_append newdependency_libs " -L$func_replace_sysroot_result"
--		;;
--	      -R*)
--		func_stripname -R '' "$deplib"
--		func_replace_sysroot "$func_stripname_result"
--		func_append newdependency_libs " -R$func_replace_sysroot_result"
--		;;
--	      *) func_append newdependency_libs " $deplib" ;;
--	      esac
--	    done
--	    dependency_libs="$newdependency_libs"
--	    newdlfiles=
--
--	    for lib in $dlfiles; do
--	      case $lib in
--	      *.la)
--	        func_basename "$lib"
--		name="$func_basename_result"
--		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
--		test -z "$libdir" && \
--		  func_fatal_error "\`$lib' is not a valid libtool archive"
--		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
--		;;
--	      *) func_append newdlfiles " $lib" ;;
--	      esac
--	    done
--	    dlfiles="$newdlfiles"
--	    newdlprefiles=
--	    for lib in $dlprefiles; do
--	      case $lib in
--	      *.la)
--		# Only pass preopened files to the pseudo-archive (for
--		# eventual linking with the app. that links it) if we
--		# didn't already link the preopened objects directly into
--		# the library:
--		func_basename "$lib"
--		name="$func_basename_result"
--		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
--		test -z "$libdir" && \
--		  func_fatal_error "\`$lib' is not a valid libtool archive"
--		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
--		;;
--	      esac
--	    done
--	    dlprefiles="$newdlprefiles"
--	  else
--	    newdlfiles=
--	    for lib in $dlfiles; do
--	      case $lib in
--		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
--		*) abs=`pwd`"/$lib" ;;
--	      esac
--	      func_append newdlfiles " $abs"
--	    done
--	    dlfiles="$newdlfiles"
--	    newdlprefiles=
--	    for lib in $dlprefiles; do
--	      case $lib in
--		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
--		*) abs=`pwd`"/$lib" ;;
--	      esac
--	      func_append newdlprefiles " $abs"
--	    done
--	    dlprefiles="$newdlprefiles"
--	  fi
--	  $RM $output
--	  # place dlname in correct position for cygwin
--	  # In fact, it would be nice if we could use this code for all target
--	  # systems that can't hard-code library paths into their executables
--	  # and that have no shared library path variable independent of PATH,
--	  # but it turns out we can't easily determine that from inspecting
--	  # libtool variables, so we have to hard-code the OSs to which it
--	  # applies here; at the moment, that means platforms that use the PE
--	  # object format with DLL files.  See the long comment at the top of
--	  # tests/bindir.at for full details.
--	  tdlname=$dlname
--	  case $host,$output,$installed,$module,$dlname in
--	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
--	      # If a -bindir argument was supplied, place the dll there.
--	      if test "x$bindir" != x ;
--	      then
--		func_relative_path "$install_libdir" "$bindir"
--		tdlname=$func_relative_path_result$dlname
--	      else
--		# Otherwise fall back on heuristic.
--		tdlname=../bin/$dlname
--	      fi
--	      ;;
--	  esac
--	  $ECHO > $output "\
--# $outputname - a libtool library file
--# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
--#
--# Please DO NOT delete this file!
--# It is necessary for linking the library.
--
--# The name that we can dlopen(3).
--dlname='$tdlname'
--
--# Names of this library.
--library_names='$library_names'
--
--# The name of the static archive.
--old_library='$old_library'
--
--# Linker flags that can not go in dependency_libs.
--inherited_linker_flags='$new_inherited_linker_flags'
--
--# Libraries that this one depends upon.
--dependency_libs='$dependency_libs'
--
--# Names of additional weak libraries provided by this library
--weak_library_names='$weak_libs'
--
--# Version information for $libname.
--current=$current
--age=$age
--revision=$revision
--
--# Is this an already installed library?
--installed=$installed
--
--# Should we warn about portability when linking against -modules?
--shouldnotlink=$module
--
--# Files to dlopen/dlpreopen
--dlopen='$dlfiles'
--dlpreopen='$dlprefiles'
--
--# Directory that this library needs to be installed in:
--libdir='$install_libdir'"
--	  if test "$installed" = no && test "$need_relink" = yes; then
--	    $ECHO >> $output "\
--relink_command=\"$relink_command\""
--	  fi
--	done
--      }
--
--      # Do a symbolic link so that the libtool archive can be found in
--      # LD_LIBRARY_PATH before the program is installed.
--      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
--      ;;
--    esac
--    exit $EXIT_SUCCESS
--}
--
--{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
--    func_mode_link ${1+"$@"}
--
--
--# func_mode_uninstall arg...
--func_mode_uninstall ()
--{
--    $opt_debug
--    RM="$nonopt"
--    files=
--    rmforce=
--    exit_status=0
--
--    # This variable tells wrapper scripts just to set variables rather
--    # than running their programs.
--    libtool_install_magic="$magic"
--
--    for arg
--    do
--      case $arg in
--      -f) func_append RM " $arg"; rmforce=yes ;;
--      -*) func_append RM " $arg" ;;
--      *) func_append files " $arg" ;;
--      esac
--    done
--
--    test -z "$RM" && \
--      func_fatal_help "you must specify an RM program"
--
--    rmdirs=
--
--    for file in $files; do
--      func_dirname "$file" "" "."
--      dir="$func_dirname_result"
--      if test "X$dir" = X.; then
--	odir="$objdir"
--      else
--	odir="$dir/$objdir"
--      fi
--      func_basename "$file"
--      name="$func_basename_result"
--      test "$opt_mode" = uninstall && odir="$dir"
--
--      # Remember odir for removal later, being careful to avoid duplicates
--      if test "$opt_mode" = clean; then
--	case " $rmdirs " in
--	  *" $odir "*) ;;
--	  *) func_append rmdirs " $odir" ;;
--	esac
--      fi
--
--      # Don't error if the file doesn't exist and rm -f was used.
--      if { test -L "$file"; } >/dev/null 2>&1 ||
--	 { test -h "$file"; } >/dev/null 2>&1 ||
--	 test -f "$file"; then
--	:
--      elif test -d "$file"; then
--	exit_status=1
--	continue
--      elif test "$rmforce" = yes; then
--	continue
--      fi
--
--      rmfiles="$file"
--
--      case $name in
--      *.la)
--	# Possibly a libtool archive, so verify it.
--	if func_lalib_p "$file"; then
--	  func_source $dir/$name
--
--	  # Delete the libtool libraries and symlinks.
--	  for n in $library_names; do
--	    func_append rmfiles " $odir/$n"
--	  done
--	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
--
--	  case "$opt_mode" in
--	  clean)
--	    case " $library_names " in
--	    *" $dlname "*) ;;
--	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
--	    esac
--	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
--	    ;;
--	  uninstall)
--	    if test -n "$library_names"; then
--	      # Do each command in the postuninstall commands.
--	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
--	    fi
--
--	    if test -n "$old_library"; then
--	      # Do each command in the old_postuninstall commands.
--	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
--	    fi
--	    # FIXME: should reinstall the best remaining shared library.
--	    ;;
--	  esac
--	fi
--	;;
--
--      *.lo)
--	# Possibly a libtool object, so verify it.
--	if func_lalib_p "$file"; then
--
--	  # Read the .lo file
--	  func_source $dir/$name
--
--	  # Add PIC object to the list of files to remove.
--	  if test -n "$pic_object" &&
--	     test "$pic_object" != none; then
--	    func_append rmfiles " $dir/$pic_object"
--	  fi
--
--	  # Add non-PIC object to the list of files to remove.
--	  if test -n "$non_pic_object" &&
--	     test "$non_pic_object" != none; then
--	    func_append rmfiles " $dir/$non_pic_object"
--	  fi
--	fi
--	;;
--
--      *)
--	if test "$opt_mode" = clean ; then
--	  noexename=$name
--	  case $file in
--	  *.exe)
--	    func_stripname '' '.exe' "$file"
--	    file=$func_stripname_result
--	    func_stripname '' '.exe' "$name"
--	    noexename=$func_stripname_result
--	    # $file with .exe has already been added to rmfiles,
--	    # add $file without .exe
--	    func_append rmfiles " $file"
--	    ;;
--	  esac
--	  # Do a test to see if this is a libtool program.
--	  if func_ltwrapper_p "$file"; then
--	    if func_ltwrapper_executable_p "$file"; then
--	      func_ltwrapper_scriptname "$file"
--	      relink_command=
--	      func_source $func_ltwrapper_scriptname_result
--	      func_append rmfiles " $func_ltwrapper_scriptname_result"
--	    else
--	      relink_command=
--	      func_source $dir/$noexename
--	    fi
--
--	    # note $name still contains .exe if it was in $file originally
--	    # as does the version of $file that was added into $rmfiles
--	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
--	    if test "$fast_install" = yes && test -n "$relink_command"; then
--	      func_append rmfiles " $odir/lt-$name"
--	    fi
--	    if test "X$noexename" != "X$name" ; then
--	      func_append rmfiles " $odir/lt-${noexename}.c"
--	    fi
--	  fi
--	fi
--	;;
--      esac
--      func_show_eval "$RM $rmfiles" 'exit_status=1'
--    done
--
--    # Try to remove the ${objdir}s in the directories where we deleted files
--    for dir in $rmdirs; do
--      if test -d "$dir"; then
--	func_show_eval "rmdir $dir >/dev/null 2>&1"
--      fi
--    done
--
--    exit $exit_status
--}
--
--{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
--    func_mode_uninstall ${1+"$@"}
--
--test -z "$opt_mode" && {
--  help="$generic_help"
--  func_fatal_help "you must specify a MODE"
--}
--
--test -z "$exec_cmd" && \
--  func_fatal_help "invalid operation mode \`$opt_mode'"
--
--if test -n "$exec_cmd"; then
--  eval exec "$exec_cmd"
--  exit $EXIT_FAILURE
--fi
--
--exit $exit_status
--
--
--# The TAGs below are defined such that we never get into a situation
--# in which we disable both kinds of libraries.  Given conflicting
--# choices, we go for a static library, that is the most portable,
--# since we can't tell whether shared libraries were disabled because
--# the user asked for that or because the platform doesn't support
--# them.  This is particularly important on AIX, because we don't
--# support having both static and shared libraries enabled at the same
--# time on that platform, so we default to a shared-only configuration.
--# If a disable-shared tag is given, we'll fallback to a static-only
--# configuration.  But we'll never go from static-only to shared-only.
--
--# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
--build_libtool_libs=no
--build_old_libs=yes
--# ### END LIBTOOL TAG CONFIG: disable-shared
--
--# ### BEGIN LIBTOOL TAG CONFIG: disable-static
--build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
--# ### END LIBTOOL TAG CONFIG: disable-static
--
--# Local Variables:
--# mode:shell-script
--# sh-indentation:2
--# End:
--# vi:sw=2
diff --cc build-aux/mdate-sh
index b3719cf,b3719cf..0000000
deleted file mode 100755,100755
--- a/build-aux/mdate-sh
+++ /dev/null
@@@ -1,224 -1,224 +1,0 @@@
--#!/bin/sh
--# Get modification time of a file or directory and pretty-print it.
--
--scriptversion=2010-08-21.06; # UTC
--
--# Copyright (C) 1995-2013 Free Software Foundation, Inc.
--# written by Ulrich Drepper <drepper at gnu.ai.mit.edu>, June 1995
--#
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2, or (at your option)
--# any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
--# As a special exception to the GNU General Public License, if you
--# distribute this file as part of a program that contains a
--# configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--# This file is maintained in Automake, please report
--# bugs to <bug-automake at gnu.org> or send patches to
--# <automake-patches at gnu.org>.
--
--if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
--  emulate sh
--  NULLCMD=:
--  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
--  # is contrary to our usage.  Disable this feature.
--  alias -g '${1+"$@"}'='"$@"'
--  setopt NO_GLOB_SUBST
--fi
--
--case $1 in
--  '')
--     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
--     exit 1;
--     ;;
--  -h | --h*)
--    cat <<\EOF
--Usage: mdate-sh [--help] [--version] FILE
--
--Pretty-print the modification day of FILE, in the format:
--1 January 1970
--
--Report bugs to <bug-automake at gnu.org>.
--EOF
--    exit $?
--    ;;
--  -v | --v*)
--    echo "mdate-sh $scriptversion"
--    exit $?
--    ;;
--esac
--
--error ()
--{
--  echo "$0: $1" >&2
--  exit 1
--}
--
--
--# Prevent date giving response in another language.
--LANG=C
--export LANG
--LC_ALL=C
--export LC_ALL
--LC_TIME=C
--export LC_TIME
--
--# GNU ls changes its time format in response to the TIME_STYLE
--# variable.  Since we cannot assume 'unset' works, revert this
--# variable to its documented default.
--if test "${TIME_STYLE+set}" = set; then
--  TIME_STYLE=posix-long-iso
--  export TIME_STYLE
--fi
--
--save_arg1=$1
--
--# Find out how to get the extended ls output of a file or directory.
--if ls -L /dev/null 1>/dev/null 2>&1; then
--  ls_command='ls -L -l -d'
--else
--  ls_command='ls -l -d'
--fi
--# Avoid user/group names that might have spaces, when possible.
--if ls -n /dev/null 1>/dev/null 2>&1; then
--  ls_command="$ls_command -n"
--fi
--
--# A 'ls -l' line looks as follows on OS/2.
--#  drwxrwx---        0 Aug 11  2001 foo
--# This differs from Unix, which adds ownership information.
--#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
--#
--# To find the date, we split the line on spaces and iterate on words
--# until we find a month.  This cannot work with files whose owner is a
--# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
--# will be owned by a user whose name is a month.  So we first look at
--# the extended ls output of the root directory to decide how many
--# words should be skipped to get the date.
--
--# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
--set x`$ls_command /`
--
--# Find which argument is the month.
--month=
--command=
--until test $month
--do
--  test $# -gt 0 || error "failed parsing '$ls_command /' output"
--  shift
--  # Add another shift to the command.
--  command="$command shift;"
--  case $1 in
--    Jan) month=January; nummonth=1;;
--    Feb) month=February; nummonth=2;;
--    Mar) month=March; nummonth=3;;
--    Apr) month=April; nummonth=4;;
--    May) month=May; nummonth=5;;
--    Jun) month=June; nummonth=6;;
--    Jul) month=July; nummonth=7;;
--    Aug) month=August; nummonth=8;;
--    Sep) month=September; nummonth=9;;
--    Oct) month=October; nummonth=10;;
--    Nov) month=November; nummonth=11;;
--    Dec) month=December; nummonth=12;;
--  esac
--done
--
--test -n "$month" || error "failed parsing '$ls_command /' output"
--
--# Get the extended ls output of the file or directory.
--set dummy x`eval "$ls_command \"\\\$save_arg1\""`
--
--# Remove all preceding arguments
--eval $command
--
--# Because of the dummy argument above, month is in $2.
--#
--# On a POSIX system, we should have
--#
--# $# = 5
--# $1 = file size
--# $2 = month
--# $3 = day
--# $4 = year or time
--# $5 = filename
--#
--# On Darwin 7.7.0 and 7.6.0, we have
--#
--# $# = 4
--# $1 = day
--# $2 = month
--# $3 = year or time
--# $4 = filename
--
--# Get the month.
--case $2 in
--  Jan) month=January; nummonth=1;;
--  Feb) month=February; nummonth=2;;
--  Mar) month=March; nummonth=3;;
--  Apr) month=April; nummonth=4;;
--  May) month=May; nummonth=5;;
--  Jun) month=June; nummonth=6;;
--  Jul) month=July; nummonth=7;;
--  Aug) month=August; nummonth=8;;
--  Sep) month=September; nummonth=9;;
--  Oct) month=October; nummonth=10;;
--  Nov) month=November; nummonth=11;;
--  Dec) month=December; nummonth=12;;
--esac
--
--case $3 in
--  ???*) day=$1;;
--  *) day=$3; shift;;
--esac
--
--# Here we have to deal with the problem that the ls output gives either
--# the time of day or the year.
--case $3 in
--  *:*) set `date`; eval year=\$$#
--       case $2 in
--	 Jan) nummonthtod=1;;
--	 Feb) nummonthtod=2;;
--	 Mar) nummonthtod=3;;
--	 Apr) nummonthtod=4;;
--	 May) nummonthtod=5;;
--	 Jun) nummonthtod=6;;
--	 Jul) nummonthtod=7;;
--	 Aug) nummonthtod=8;;
--	 Sep) nummonthtod=9;;
--	 Oct) nummonthtod=10;;
--	 Nov) nummonthtod=11;;
--	 Dec) nummonthtod=12;;
--       esac
--       # For the first six month of the year the time notation can also
--       # be used for files modified in the last year.
--       if (expr $nummonth \> $nummonthtod) > /dev/null;
--       then
--	 year=`expr $year - 1`
--       fi;;
--  *) year=$3;;
--esac
--
--# The result.
--echo $day $month $year
--
--# Local Variables:
--# mode: shell-script
--# sh-indentation: 2
--# eval: (add-hook 'write-file-hooks 'time-stamp)
--# time-stamp-start: "scriptversion="
--# time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-time-zone: "UTC"
--# time-stamp-end: "; # UTC"
--# End:
diff --cc build-aux/missing
index db98974,db98974..0000000
deleted file mode 100755,100755
--- a/build-aux/missing
+++ /dev/null
@@@ -1,215 -1,215 +1,0 @@@
--#! /bin/sh
--# Common wrapper for a few potentially missing GNU programs.
--
--scriptversion=2013-10-28.13; # UTC
--
--# Copyright (C) 1996-2013 Free Software Foundation, Inc.
--# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
--
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2, or (at your option)
--# any later version.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--
--# You should have received a copy of the GNU General Public License
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
--# As a special exception to the GNU General Public License, if you
--# distribute this file as part of a program that contains a
--# configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--if test $# -eq 0; then
--  echo 1>&2 "Try '$0 --help' for more information"
--  exit 1
--fi
--
--case $1 in
--
--  --is-lightweight)
--    # Used by our autoconf macros to check whether the available missing
--    # script is modern enough.
--    exit 0
--    ;;
--
--  --run)
--    # Back-compat with the calling convention used by older automake.
--    shift
--    ;;
--
--  -h|--h|--he|--hel|--help)
--    echo "\
--$0 [OPTION]... PROGRAM [ARGUMENT]...
--
--Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
--to PROGRAM being missing or too old.
--
--Options:
--  -h, --help      display this help and exit
--  -v, --version   output version information and exit
--
--Supported PROGRAM values:
--  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
--  bison     yacc      flex         lex       help2man
--
--Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
--'g' are ignored when checking the name.
--
--Send bug reports to <bug-automake at gnu.org>."
--    exit $?
--    ;;
--
--  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
--    echo "missing $scriptversion (GNU Automake)"
--    exit $?
--    ;;
--
--  -*)
--    echo 1>&2 "$0: unknown '$1' option"
--    echo 1>&2 "Try '$0 --help' for more information"
--    exit 1
--    ;;
--
--esac
--
--# Run the given program, remember its exit status.
--"$@"; st=$?
--
--# If it succeeded, we are done.
--test $st -eq 0 && exit 0
--
--# Also exit now if we it failed (or wasn't found), and '--version' was
--# passed; such an option is passed most likely to detect whether the
--# program is present and works.
--case $2 in --version|--help) exit $st;; esac
--
--# Exit code 63 means version mismatch.  This often happens when the user
--# tries to use an ancient version of a tool on a file that requires a
--# minimum version.
--if test $st -eq 63; then
--  msg="probably too old"
--elif test $st -eq 127; then
--  # Program was missing.
--  msg="missing on your system"
--else
--  # Program was found and executed, but failed.  Give up.
--  exit $st
--fi
--
--perl_URL=http://www.perl.org/
--flex_URL=http://flex.sourceforge.net/
--gnu_software_URL=http://www.gnu.org/software
--
--program_details ()
--{
--  case $1 in
--    aclocal|automake)
--      echo "The '$1' program is part of the GNU Automake package:"
--      echo "<$gnu_software_URL/automake>"
--      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
--      echo "<$gnu_software_URL/autoconf>"
--      echo "<$gnu_software_URL/m4/>"
--      echo "<$perl_URL>"
--      ;;
--    autoconf|autom4te|autoheader)
--      echo "The '$1' program is part of the GNU Autoconf package:"
--      echo "<$gnu_software_URL/autoconf/>"
--      echo "It also requires GNU m4 and Perl in order to run:"
--      echo "<$gnu_software_URL/m4/>"
--      echo "<$perl_URL>"
--      ;;
--  esac
--}
--
--give_advice ()
--{
--  # Normalize program name to check for.
--  normalized_program=`echo "$1" | sed '
--    s/^gnu-//; t
--    s/^gnu//; t
--    s/^g//; t'`
--
--  printf '%s\n' "'$1' is $msg."
--
--  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
--  case $normalized_program in
--    autoconf*)
--      echo "You should only need it if you modified 'configure.ac',"
--      echo "or m4 files included by it."
--      program_details 'autoconf'
--      ;;
--    autoheader*)
--      echo "You should only need it if you modified 'acconfig.h' or"
--      echo "$configure_deps."
--      program_details 'autoheader'
--      ;;
--    automake*)
--      echo "You should only need it if you modified 'Makefile.am' or"
--      echo "$configure_deps."
--      program_details 'automake'
--      ;;
--    aclocal*)
--      echo "You should only need it if you modified 'acinclude.m4' or"
--      echo "$configure_deps."
--      program_details 'aclocal'
--      ;;
--   autom4te*)
--      echo "You might have modified some maintainer files that require"
--      echo "the 'autom4te' program to be rebuilt."
--      program_details 'autom4te'
--      ;;
--    bison*|yacc*)
--      echo "You should only need it if you modified a '.y' file."
--      echo "You may want to install the GNU Bison package:"
--      echo "<$gnu_software_URL/bison/>"
--      ;;
--    lex*|flex*)
--      echo "You should only need it if you modified a '.l' file."
--      echo "You may want to install the Fast Lexical Analyzer package:"
--      echo "<$flex_URL>"
--      ;;
--    help2man*)
--      echo "You should only need it if you modified a dependency" \
--           "of a man page."
--      echo "You may want to install the GNU Help2man package:"
--      echo "<$gnu_software_URL/help2man/>"
--    ;;
--    makeinfo*)
--      echo "You should only need it if you modified a '.texi' file, or"
--      echo "any other file indirectly affecting the aspect of the manual."
--      echo "You might want to install the Texinfo package:"
--      echo "<$gnu_software_URL/texinfo/>"
--      echo "The spurious makeinfo call might also be the consequence of"
--      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
--      echo "want to install GNU make:"
--      echo "<$gnu_software_URL/make/>"
--      ;;
--    *)
--      echo "You might have modified some files without having the proper"
--      echo "tools for further handling them.  Check the 'README' file, it"
--      echo "often tells you about the needed prerequisites for installing"
--      echo "this package.  You may also peek at any GNU archive site, in"
--      echo "case some other package contains this missing '$1' program."
--      ;;
--  esac
--}
--
--give_advice "$1" | sed -e '1s/^/WARNING: /' \
--                       -e '2,$s/^/         /' >&2
--
--# Propagate the correct exit status (expected to be 127 for a program
--# not found, 63 for a program that failed due to version mismatch).
--exit $st
--
--# Local variables:
--# eval: (add-hook 'write-file-hooks 'time-stamp)
--# time-stamp-start: "scriptversion="
--# time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-time-zone: "UTC"
--# time-stamp-end: "; # UTC"
--# End:
diff --cc build-aux/texinfo.tex
index 47008b0,47008b0..0000000
deleted file mode 100644,100644
--- a/build-aux/texinfo.tex
+++ /dev/null
@@@ -1,10079 -1,10079 +1,0 @@@
--% texinfo.tex -- TeX macros to handle Texinfo files.
--%
--% Load plain if necessary, i.e., if running under initex.
--\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
--%
--\def\texinfoversion{2013-02-01.11}
--%
--% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
--% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
--% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
--%
--% This texinfo.tex file is free software: you can redistribute it and/or
--% modify it under the terms of the GNU General Public License as
--% published by the Free Software Foundation, either version 3 of the
--% License, or (at your option) any later version.
--%
--% This texinfo.tex file is distributed in the hope that it will be
--% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
--% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--% General Public License for more details.
--%
--% You should have received a copy of the GNU General Public License
--% along with this program.  If not, see <http://www.gnu.org/licenses/>.
--%
--% As a special exception, when this file is read by TeX when processing
--% a Texinfo source document, you may use the result without
--% restriction. This Exception is an additional permission under section 7
--% of the GNU General Public License, version 3 ("GPLv3").
--%
--% Please try the latest version of texinfo.tex before submitting bug
--% reports; you can get the latest version from:
--%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
--%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
--%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
--% The texinfo.tex in any given distribution could well be out
--% of date, so if that's what you're using, please check.
--%
--% Send bug reports to bug-texinfo at gnu.org.  Please include including a
--% complete document in each bug report with which we can reproduce the
--% problem.  Patches are, of course, greatly appreciated.
--%
--% To process a Texinfo manual with TeX, it's most reliable to use the
--% texi2dvi shell script that comes with the distribution.  For a simple
--% manual foo.texi, however, you can get away with this:
--%   tex foo.texi
--%   texindex foo.??
--%   tex foo.texi
--%   tex foo.texi
--%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
--% The extra TeX runs get the cross-reference information correct.
--% Sometimes one run after texindex suffices, and sometimes you need more
--% than two; texi2dvi does it as many times as necessary.
--%
--% It is possible to adapt texinfo.tex for other languages, to some
--% extent.  You can get the existing language-specific files from the
--% full Texinfo distribution.
--%
--% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
--
--
--\message{Loading texinfo [version \texinfoversion]:}
--
--% If in a .fmt file, print the version number
--% and turn on active characters that we couldn't do earlier because
--% they might have appeared in the input file name.
--\everyjob{\message{[Texinfo version \texinfoversion]}%
--  \catcode`+=\active \catcode`\_=\active}
--
--\chardef\other=12
--
--% We never want plain's \outer definition of \+ in Texinfo.
--% For @tex, we can use \tabalign.
--\let\+ = \relax
--
--% Save some plain tex macros whose names we will redefine.
--\let\ptexb=\b
--\let\ptexbullet=\bullet
--\let\ptexc=\c
--\let\ptexcomma=\,
--\let\ptexdot=\.
--\let\ptexdots=\dots
--\let\ptexend=\end
--\let\ptexequiv=\equiv
--\let\ptexexclam=\!
--\let\ptexfootnote=\footnote
--\let\ptexgtr=>
--\let\ptexhat=^
--\let\ptexi=\i
--\let\ptexindent=\indent
--\let\ptexinsert=\insert
--\let\ptexlbrace=\{
--\let\ptexless=<
--\let\ptexnewwrite\newwrite
--\let\ptexnoindent=\noindent
--\let\ptexplus=+
--\let\ptexraggedright=\raggedright
--\let\ptexrbrace=\}
--\let\ptexslash=\/
--\let\ptexstar=\*
--\let\ptext=\t
--\let\ptextop=\top
--{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
--
--% If this character appears in an error message or help string, it
--% starts a new line in the output.
--\newlinechar = `^^J
--
--% Use TeX 3.0's \inputlineno to get the line number, for better error
--% messages, but if we're using an old version of TeX, don't do anything.
--%
--\ifx\inputlineno\thisisundefined
--  \let\linenumber = \empty % Pre-3.0.
--\else
--  \def\linenumber{l.\the\inputlineno:\space}
--\fi
--
--% Set up fixed words for English if not already set.
--\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
--\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
--\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
--\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
--\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
--\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
--\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
--\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
--\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
--\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
--\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
--\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
--\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
--\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
--\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
--\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
--\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
--\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
--\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
--\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
--%
--\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
--\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
--\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
--\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
--\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
--\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
--\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
--\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
--\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
--\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
--\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
--\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
--%
--\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
--\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
--\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
--\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
--\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
--
--% Since the category of space is not known, we have to be careful.
--\chardef\spacecat = 10
--\def\spaceisspace{\catcode`\ =\spacecat}
--
--% sometimes characters are active, so we need control sequences.
--\chardef\ampChar   = `\&
--\chardef\colonChar = `\:
--\chardef\commaChar = `\,
--\chardef\dashChar  = `\-
--\chardef\dotChar   = `\.
--\chardef\exclamChar= `\!
--\chardef\hashChar  = `\#
--\chardef\lquoteChar= `\`
--\chardef\questChar = `\?
--\chardef\rquoteChar= `\'
--\chardef\semiChar  = `\;
--\chardef\slashChar = `\/
--\chardef\underChar = `\_
--
--% Ignore a token.
--%
--\def\gobble#1{}
--
--% The following is used inside several \edef's.
--\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
--
--% Hyphenation fixes.
--\hyphenation{
--  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
--  ap-pen-dix bit-map bit-maps
--  data-base data-bases eshell fall-ing half-way long-est man-u-script
--  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
--  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
--  spell-ing spell-ings
--  stand-alone strong-est time-stamp time-stamps which-ever white-space
--  wide-spread wrap-around
--}
--
--% Margin to add to right of even pages, to left of odd pages.
--\newdimen\bindingoffset
--\newdimen\normaloffset
--\newdimen\pagewidth \newdimen\pageheight
--
--% For a final copy, take out the rectangles
--% that mark overfull boxes (in case you have decided
--% that the text looks ok even though it passes the margin).
--%
--\def\finalout{\overfullrule=0pt }
--
--% Sometimes it is convenient to have everything in the transcript file
--% and nothing on the terminal.  We don't just call \tracingall here,
--% since that produces some useless output on the terminal.  We also make
--% some effort to order the tracing commands to reduce output in the log
--% file; cf. trace.sty in LaTeX.
--%
--\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
--\def\loggingall{%
--  \tracingstats2
--  \tracingpages1
--  \tracinglostchars2  % 2 gives us more in etex
--  \tracingparagraphs1
--  \tracingoutput1
--  \tracingmacros2
--  \tracingrestores1
--  \showboxbreadth\maxdimen \showboxdepth\maxdimen
--  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
--    \tracingscantokens1
--    \tracingifs1
--    \tracinggroups1
--    \tracingnesting2
--    \tracingassigns1
--  \fi
--  \tracingcommands3  % 3 gives us more in etex
--  \errorcontextlines16
--}%
--
--% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
--% aren't perfect, it's not the end of the world, being an error message,
--% after all.
--%
--\def\errormsg{\begingroup \indexnofonts \doerrormsg}
--\def\doerrormsg#1{\errmessage{#1}}
--
--% add check for \lastpenalty to plain's definitions.  If the last thing
--% we did was a \nobreak, we don't want to insert more space.
--%
--\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
--  \removelastskip\penalty-50\smallskip\fi\fi}
--\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
--  \removelastskip\penalty-100\medskip\fi\fi}
--\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
--  \removelastskip\penalty-200\bigskip\fi\fi}
--
--% Do @cropmarks to get crop marks.
--%
--\newif\ifcropmarks
--\let\cropmarks = \cropmarkstrue
--%
--% Dimensions to add cropmarks at corners.
--% Added by P. A. MacKay, 12 Nov. 1986
--%
--\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
--\newdimen\cornerlong  \cornerlong=1pc
--\newdimen\cornerthick \cornerthick=.3pt
--\newdimen\topandbottommargin \topandbottommargin=.75in
--
--% Output a mark which sets \thischapter, \thissection and \thiscolor.
--% We dump everything together because we only have one kind of mark.
--% This works because we only use \botmark / \topmark, not \firstmark.
--%
--% A mark contains a subexpression of the \ifcase ... \fi construct.
--% \get*marks macros below extract the needed part using \ifcase.
--%
--% Another complication is to let the user choose whether \thischapter
--% (\thissection) refers to the chapter (section) in effect at the top
--% of a page, or that at the bottom of a page.  The solution is
--% described on page 260 of The TeXbook.  It involves outputting two
--% marks for the sectioning macros, one before the section break, and
--% one after.  I won't pretend I can describe this better than DEK...
--\def\domark{%
--  \toks0=\expandafter{\lastchapterdefs}%
--  \toks2=\expandafter{\lastsectiondefs}%
--  \toks4=\expandafter{\prevchapterdefs}%
--  \toks6=\expandafter{\prevsectiondefs}%
--  \toks8=\expandafter{\lastcolordefs}%
--  \mark{%
--                   \the\toks0 \the\toks2
--      \noexpand\or \the\toks4 \the\toks6
--    \noexpand\else \the\toks8
--  }%
--}
--% \topmark doesn't work for the very first chapter (after the title
--% page or the contents), so we use \firstmark there -- this gets us
--% the mark with the chapter defs, unless the user sneaks in, e.g.,
--% @setcolor (or @url, or @link, etc.) between @contents and the very
--% first @chapter.
--\def\gettopheadingmarks{%
--  \ifcase0\topmark\fi
--  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
--}
--\def\getbottomheadingmarks{\ifcase1\botmark\fi}
--\def\getcolormarks{\ifcase2\topmark\fi}
--
--% Avoid "undefined control sequence" errors.
--\def\lastchapterdefs{}
--\def\lastsectiondefs{}
--\def\prevchapterdefs{}
--\def\prevsectiondefs{}
--\def\lastcolordefs{}
--
--% Main output routine.
--\chardef\PAGE = 255
--\output = {\onepageout{\pagecontents\PAGE}}
--
--\newbox\headlinebox
--\newbox\footlinebox
--
--% \onepageout takes a vbox as an argument.  Note that \pagecontents
--% does insertions, but you have to call it yourself.
--\def\onepageout#1{%
--  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
--  %
--  \ifodd\pageno  \advance\hoffset by \bindingoffset
--  \else \advance\hoffset by -\bindingoffset\fi
--  %
--  % Do this outside of the \shipout so @code etc. will be expanded in
--  % the headline as they should be, not taken literally (outputting ''code).
--  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
--  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
--  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
--  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
--  %
--  {%
--    % Have to do this stuff outside the \shipout because we want it to
--    % take effect in \write's, yet the group defined by the \vbox ends
--    % before the \shipout runs.
--    %
--    \indexdummies         % don't expand commands in the output.
--    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
--               % the page break happens to be in the middle of an example.
--               % We don't want .vr (or whatever) entries like this:
--               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
--               % "\acronym" won't work when it's read back in;
--               % it needs to be
--               % {\code {{\tt \backslashcurfont }acronym}
--    \shipout\vbox{%
--      % Do this early so pdf references go to the beginning of the page.
--      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
--      %
--      \ifcropmarks \vbox to \outervsize\bgroup
--        \hsize = \outerhsize
--        \vskip-\topandbottommargin
--        \vtop to0pt{%
--          \line{\ewtop\hfil\ewtop}%
--          \nointerlineskip
--          \line{%
--            \vbox{\moveleft\cornerthick\nstop}%
--            \hfill
--            \vbox{\moveright\cornerthick\nstop}%
--          }%
--          \vss}%
--        \vskip\topandbottommargin
--        \line\bgroup
--          \hfil % center the page within the outer (page) hsize.
--          \ifodd\pageno\hskip\bindingoffset\fi
--          \vbox\bgroup
--      \fi
--      %
--      \unvbox\headlinebox
--      \pagebody{#1}%
--      \ifdim\ht\footlinebox > 0pt
--        % Only leave this space if the footline is nonempty.
--        % (We lessened \vsize for it in \oddfootingyyy.)
--        % The \baselineskip=24pt in plain's \makefootline has no effect.
--        \vskip 24pt
--        \unvbox\footlinebox
--      \fi
--      %
--      \ifcropmarks
--          \egroup % end of \vbox\bgroup
--        \hfil\egroup % end of (centering) \line\bgroup
--        \vskip\topandbottommargin plus1fill minus1fill
--        \boxmaxdepth = \cornerthick
--        \vbox to0pt{\vss
--          \line{%
--            \vbox{\moveleft\cornerthick\nsbot}%
--            \hfill
--            \vbox{\moveright\cornerthick\nsbot}%
--          }%
--          \nointerlineskip
--          \line{\ewbot\hfil\ewbot}%
--        }%
--      \egroup % \vbox from first cropmarks clause
--      \fi
--    }% end of \shipout\vbox
--  }% end of group with \indexdummies
--  \advancepageno
--  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
--}
--
--\newinsert\margin \dimen\margin=\maxdimen
--
--\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
--{\catcode`\@ =11
--\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
--% marginal hacks, juha at viisa.uucp (Juha Takala)
--\ifvoid\margin\else % marginal info is present
--  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
--\dimen@=\dp#1\relax \unvbox#1\relax
--\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
--\ifr at ggedbottom \kern-\dimen@ \vfil \fi}
--}
--
--% Here are the rules for the cropmarks.  Note that they are
--% offset so that the space between them is truly \outerhsize or \outervsize
--% (P. A. MacKay, 12 November, 1986)
--%
--\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
--\def\nstop{\vbox
--  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
--\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
--\def\nsbot{\vbox
--  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
--
--% Parse an argument, then pass it to #1.  The argument is the rest of
--% the input line (except we remove a trailing comment).  #1 should be a
--% macro which expects an ordinary undelimited TeX argument.
--%
--\def\parsearg{\parseargusing{}}
--\def\parseargusing#1#2{%
--  \def\argtorun{#2}%
--  \begingroup
--    \obeylines
--    \spaceisspace
--    #1%
--    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
--}
--
--{\obeylines %
--  \gdef\parseargline#1^^M{%
--    \endgroup % End of the group started in \parsearg.
--    \argremovecomment #1\comment\ArgTerm%
--  }%
--}
--
--% First remove any @comment, then any @c comment.
--\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
--\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
--
--% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
--%
--% \argremovec might leave us with trailing space, e.g.,
--%    @end itemize  @c foo
--% This space token undergoes the same procedure and is eventually removed
--% by \finishparsearg.
--%
--\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
--\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
--\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
--  \def\temp{#3}%
--  \ifx\temp\empty
--    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
--    \let\temp\finishparsearg
--  \else
--    \let\temp\argcheckspaces
--  \fi
--  % Put the space token in:
--  \temp#1 #3\ArgTerm
--}
--
--% If a _delimited_ argument is enclosed in braces, they get stripped; so
--% to get _exactly_ the rest of the line, we had to prevent such situation.
--% We prepended an \empty token at the very beginning and we expand it now,
--% just before passing the control to \argtorun.
--% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
--% either the null string, or it ends with \^^M---thus there is no danger
--% that a pair of braces would be stripped.
--%
--% But first, we have to remove the trailing space token.
--%
--\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
--
--% \parseargdef\foo{...}
--%	is roughly equivalent to
--% \def\foo{\parsearg\Xfoo}
--% \def\Xfoo#1{...}
--%
--% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
--% favourite TeX trick.  --kasal, 16nov03
--
--\def\parseargdef#1{%
--  \expandafter \doparseargdef \csname\string#1\endcsname #1%
--}
--\def\doparseargdef#1#2{%
--  \def#2{\parsearg#1}%
--  \def#1##1%
--}
--
--% Several utility definitions with active space:
--{
--  \obeyspaces
--  \gdef\obeyedspace{ }
--
--  % Make each space character in the input produce a normal interword
--  % space in the output.  Don't allow a line break at this space, as this
--  % is used only in environments like @example, where each line of input
--  % should produce a line of output anyway.
--  %
--  \gdef\sepspaces{\obeyspaces\let =\tie}
--
--  % If an index command is used in an @example environment, any spaces
--  % therein should become regular spaces in the raw index file, not the
--  % expansion of \tie (\leavevmode \penalty \@M \ ).
--  \gdef\unsepspaces{\let =\space}
--}
--
--
--\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
--
--% Define the framework for environments in texinfo.tex.  It's used like this:
--%
--%   \envdef\foo{...}
--%   \def\Efoo{...}
--%
--% It's the responsibility of \envdef to insert \begingroup before the
--% actual body; @end closes the group after calling \Efoo.  \envdef also
--% defines \thisenv, so the current environment is known; @end checks
--% whether the environment name matches.  The \checkenv macro can also be
--% used to check whether the current environment is the one expected.
--%
--% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
--% are not treated as environments; they don't open a group.  (The
--% implementation of @end takes care not to call \endgroup in this
--% special case.)
--
--
--% At run-time, environments start with this:
--\def\startenvironment#1{\begingroup\def\thisenv{#1}}
--% initialize
--\let\thisenv\empty
--
--% ... but they get defined via ``\envdef\foo{...}'':
--\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
--\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
--
--% Check whether we're in the right environment:
--\def\checkenv#1{%
--  \def\temp{#1}%
--  \ifx\thisenv\temp
--  \else
--    \badenverr
--  \fi
--}
--
--% Environment mismatch, #1 expected:
--\def\badenverr{%
--  \errhelp = \EMsimple
--  \errmessage{This command can appear only \inenvironment\temp,
--    not \inenvironment\thisenv}%
--}
--\def\inenvironment#1{%
--  \ifx#1\empty
--    outside of any environment%
--  \else
--    in environment \expandafter\string#1%
--  \fi
--}
--
--% @end foo executes the definition of \Efoo.
--% But first, it executes a specialized version of \checkenv
--%
--\parseargdef\end{%
--  \if 1\csname iscond.#1\endcsname
--  \else
--    % The general wording of \badenverr may not be ideal.
--    \expandafter\checkenv\csname#1\endcsname
--    \csname E#1\endcsname
--    \endgroup
--  \fi
--}
--
--\newhelp\EMsimple{Press RETURN to continue.}
--
--
--% Be sure we're in horizontal mode when doing a tie, since we make space
--% equivalent to this in @example-like environments. Otherwise, a space
--% at the beginning of a line will start with \penalty -- and
--% since \penalty is valid in vertical mode, we'd end up putting the
--% penalty on the vertical list instead of in the new paragraph.
--{\catcode`@ = 11
-- % Avoid using \@M directly, because that causes trouble
-- % if the definition is written into an index file.
-- \global\let\tiepenalty = \@M
-- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
--}
--
--% @: forces normal size whitespace following.
--\def\:{\spacefactor=1000 }
--
--% @* forces a line break.
--\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
--
--% @/ allows a line break.
--\let\/=\allowbreak
--
--% @. is an end-of-sentence period.
--\def\.{.\spacefactor=\endofsentencespacefactor\space}
--
--% @! is an end-of-sentence bang.
--\def\!{!\spacefactor=\endofsentencespacefactor\space}
--
--% @? is an end-of-sentence query.
--\def\?{?\spacefactor=\endofsentencespacefactor\space}
--
--% @frenchspacing on|off  says whether to put extra space after punctuation.
--%
--\def\onword{on}
--\def\offword{off}
--%
--\parseargdef\frenchspacing{%
--  \def\temp{#1}%
--  \ifx\temp\onword \plainfrenchspacing
--  \else\ifx\temp\offword \plainnonfrenchspacing
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
--  \fi\fi
--}
--
--% @w prevents a word break.  Without the \leavevmode, @w at the
--% beginning of a paragraph, when TeX is still in vertical mode, would
--% produce a whole line of output instead of starting the paragraph.
--\def\w#1{\leavevmode\hbox{#1}}
--
--% @group ... @end group forces ... to be all on one page, by enclosing
--% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
--% to keep its height that of a normal line.  According to the rules for
--% \topskip (p.114 of the TeXbook), the glue inserted is
--% max (\topskip - \ht (first item), 0).  If that height is large,
--% therefore, no glue is inserted, and the space between the headline and
--% the text is small, which looks bad.
--%
--% Another complication is that the group might be very large.  This can
--% cause the glue on the previous page to be unduly stretched, because it
--% does not have much material.  In this case, it's better to add an
--% explicit \vfill so that the extra space is at the bottom.  The
--% threshold for doing this is if the group is more than \vfilllimit
--% percent of a page (\vfilllimit can be changed inside of @tex).
--%
--\newbox\groupbox
--\def\vfilllimit{0.7}
--%
--\envdef\group{%
--  \ifnum\catcode`\^^M=\active \else
--    \errhelp = \groupinvalidhelp
--    \errmessage{@group invalid in context where filling is enabled}%
--  \fi
--  \startsavinginserts
--  %
--  \setbox\groupbox = \vtop\bgroup
--    % Do @comment since we are called inside an environment such as
--    % @example, where each end-of-line in the input causes an
--    % end-of-line in the output.  We don't want the end-of-line after
--    % the `@group' to put extra space in the output.  Since @group
--    % should appear on a line by itself (according to the Texinfo
--    % manual), we don't worry about eating any user text.
--    \comment
--}
--%
--% The \vtop produces a box with normal height and large depth; thus, TeX puts
--% \baselineskip glue before it, and (when the next line of text is done)
--% \lineskip glue after it.  Thus, space below is not quite equal to space
--% above.  But it's pretty close.
--\def\Egroup{%
--    % To get correct interline space between the last line of the group
--    % and the first line afterwards, we have to propagate \prevdepth.
--    \endgraf % Not \par, as it may have been set to \lisppar.
--    \global\dimen1 = \prevdepth
--  \egroup           % End the \vtop.
--  % \dimen0 is the vertical size of the group's box.
--  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
--  % \dimen2 is how much space is left on the page (more or less).
--  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
--  % if the group doesn't fit on the current page, and it's a big big
--  % group, force a page break.
--  \ifdim \dimen0 > \dimen2
--    \ifdim \pagetotal < \vfilllimit\pageheight
--      \page
--    \fi
--  \fi
--  \box\groupbox
--  \prevdepth = \dimen1
--  \checkinserts
--}
--%
--% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
--% message, so this ends up printing `@group can only ...'.
--%
--\newhelp\groupinvalidhelp{%
--group can only be used in environments such as @example,^^J%
--where each line of input produces a line of output.}
--
--% @need space-in-mils
--% forces a page break if there is not space-in-mils remaining.
--
--\newdimen\mil  \mil=0.001in
--
--\parseargdef\need{%
--  % Ensure vertical mode, so we don't make a big box in the middle of a
--  % paragraph.
--  \par
--  %
--  % If the @need value is less than one line space, it's useless.
--  \dimen0 = #1\mil
--  \dimen2 = \ht\strutbox
--  \advance\dimen2 by \dp\strutbox
--  \ifdim\dimen0 > \dimen2
--    %
--    % Do a \strut just to make the height of this box be normal, so the
--    % normal leading is inserted relative to the preceding line.
--    % And a page break here is fine.
--    \vtop to #1\mil{\strut\vfil}%
--    %
--    % TeX does not even consider page breaks if a penalty added to the
--    % main vertical list is 10000 or more.  But in order to see if the
--    % empty box we just added fits on the page, we must make it consider
--    % page breaks.  On the other hand, we don't want to actually break the
--    % page after the empty box.  So we use a penalty of 9999.
--    %
--    % There is an extremely small chance that TeX will actually break the
--    % page at this \penalty, if there are no other feasible breakpoints in
--    % sight.  (If the user is using lots of big @group commands, which
--    % almost-but-not-quite fill up a page, TeX will have a hard time doing
--    % good page breaking, for example.)  However, I could not construct an
--    % example where a page broke at this \penalty; if it happens in a real
--    % document, then we can reconsider our strategy.
--    \penalty9999
--    %
--    % Back up by the size of the box, whether we did a page break or not.
--    \kern -#1\mil
--    %
--    % Do not allow a page break right after this kern.
--    \nobreak
--  \fi
--}
--
--% @br   forces paragraph break (and is undocumented).
--
--\let\br = \par
--
--% @page forces the start of a new page.
--%
--\def\page{\par\vfill\supereject}
--
--% @exdent text....
--% outputs text on separate line in roman font, starting at standard page margin
--
--% This records the amount of indent in the innermost environment.
--% That's how much \exdent should take out.
--\newskip\exdentamount
--
--% This defn is used inside fill environments such as @defun.
--\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
--
--% This defn is used inside nofill environments such as @example.
--\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
--  \leftline{\hskip\leftskip{\rm#1}}}}
--
--% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
--% paragraph.  For more general purposes, use the \margin insertion
--% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
--%
--\newskip\inmarginspacing \inmarginspacing=1cm
--\def\strutdepth{\dp\strutbox}
--%
--\def\doinmargin#1#2{\strut\vadjust{%
--  \nobreak
--  \kern-\strutdepth
--  \vtop to \strutdepth{%
--    \baselineskip=\strutdepth
--    \vss
--    % if you have multiple lines of stuff to put here, you'll need to
--    % make the vbox yourself of the appropriate size.
--    \ifx#1l%
--      \llap{\ignorespaces #2\hskip\inmarginspacing}%
--    \else
--      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
--    \fi
--    \null
--  }%
--}}
--\def\inleftmargin{\doinmargin l}
--\def\inrightmargin{\doinmargin r}
--%
--% @inmargin{TEXT [, RIGHT-TEXT]}
--% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
--% else use TEXT for both).
--%
--\def\inmargin#1{\parseinmargin #1,,\finish}
--\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
--  \setbox0 = \hbox{\ignorespaces #2}%
--  \ifdim\wd0 > 0pt
--    \def\lefttext{#1}%  have both texts
--    \def\righttext{#2}%
--  \else
--    \def\lefttext{#1}%  have only one text
--    \def\righttext{#1}%
--  \fi
--  %
--  \ifodd\pageno
--    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
--  \else
--    \def\temp{\inleftmargin\lefttext}%
--  \fi
--  \temp
--}
--
--% @| inserts a changebar to the left of the current line.  It should
--% surround any changed text.  This approach does *not* work if the
--% change spans more than two lines of output.  To handle that, we would
--% have adopt a much more difficult approach (putting marks into the main
--% vertical list for the beginning and end of each change).  This command
--% is not documented, not supported, and doesn't work.
--%
--\def\|{%
--  % \vadjust can only be used in horizontal mode.
--  \leavevmode
--  %
--  % Append this vertical mode material after the current line in the output.
--  \vadjust{%
--    % We want to insert a rule with the height and depth of the current
--    % leading; that is exactly what \strutbox is supposed to record.
--    \vskip-\baselineskip
--    %
--    % \vadjust-items are inserted at the left edge of the type.  So
--    % the \llap here moves out into the left-hand margin.
--    \llap{%
--      %
--      % For a thicker or thinner bar, change the `1pt'.
--      \vrule height\baselineskip width1pt
--      %
--      % This is the space between the bar and the text.
--      \hskip 12pt
--    }%
--  }%
--}
--
--% @include FILE -- \input text of FILE.
--%
--\def\include{\parseargusing\filenamecatcodes\includezzz}
--\def\includezzz#1{%
--  \pushthisfilestack
--  \def\thisfile{#1}%
--  {%
--    \makevalueexpandable  % we want to expand any @value in FILE.
--    \turnoffactive        % and allow special characters in the expansion
--    \indexnofonts         % Allow `@@' and other weird things in file names.
--    \wlog{texinfo.tex: doing @include of #1^^J}%
--    \edef\temp{\noexpand\input #1 }%
--    %
--    % This trickery is to read FILE outside of a group, in case it makes
--    % definitions, etc.
--    \expandafter
--  }\temp
--  \popthisfilestack
--}
--\def\filenamecatcodes{%
--  \catcode`\\=\other
--  \catcode`~=\other
--  \catcode`^=\other
--  \catcode`_=\other
--  \catcode`|=\other
--  \catcode`<=\other
--  \catcode`>=\other
--  \catcode`+=\other
--  \catcode`-=\other
--  \catcode`\`=\other
--  \catcode`\'=\other
--}
--
--\def\pushthisfilestack{%
--  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
--}
--\def\pushthisfilestackX{%
--  \expandafter\pushthisfilestackY\thisfile\StackTerm
--}
--\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
--  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
--}
--
--\def\popthisfilestack{\errthisfilestackempty}
--\def\errthisfilestackempty{\errmessage{Internal error:
--  the stack of filenames is empty.}}
--%
--\def\thisfile{}
--
--% @center line
--% outputs that line, centered.
--%
--\parseargdef\center{%
--  \ifhmode
--    \let\centersub\centerH
--  \else
--    \let\centersub\centerV
--  \fi
--  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
--  \let\centersub\relax % don't let the definition persist, just in case
--}
--\def\centerH#1{{%
--  \hfil\break
--  \advance\hsize by -\leftskip
--  \advance\hsize by -\rightskip
--  \line{#1}%
--  \break
--}}
--%
--\newcount\centerpenalty
--\def\centerV#1{%
--  % The idea here is the same as in \startdefun, \cartouche, etc.: if
--  % @center is the first thing after a section heading, we need to wipe
--  % out the negative parskip inserted by \sectionheading, but still
--  % prevent a page break here.
--  \centerpenalty = \lastpenalty
--  \ifnum\centerpenalty>10000 \vskip\parskip \fi
--  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
--  \line{\kern\leftskip #1\kern\rightskip}%
--}
--
--% @sp n   outputs n lines of vertical space
--%
--\parseargdef\sp{\vskip #1\baselineskip}
--
--% @comment ...line which is ignored...
--% @c is the same as @comment
--% @ignore ... @end ignore  is another way to write a comment
--%
--\def\comment{\begingroup \catcode`\^^M=\other%
--\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
--\commentxxx}
--{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
--%
--\let\c=\comment
--
--% @paragraphindent NCHARS
--% We'll use ems for NCHARS, close enough.
--% NCHARS can also be the word `asis' or `none'.
--% We cannot feasibly implement @paragraphindent asis, though.
--%
--\def\asisword{asis} % no translation, these are keywords
--\def\noneword{none}
--%
--\parseargdef\paragraphindent{%
--  \def\temp{#1}%
--  \ifx\temp\asisword
--  \else
--    \ifx\temp\noneword
--      \defaultparindent = 0pt
--    \else
--      \defaultparindent = #1em
--    \fi
--  \fi
--  \parindent = \defaultparindent
--}
--
--% @exampleindent NCHARS
--% We'll use ems for NCHARS like @paragraphindent.
--% It seems @exampleindent asis isn't necessary, but
--% I preserve it to make it similar to @paragraphindent.
--\parseargdef\exampleindent{%
--  \def\temp{#1}%
--  \ifx\temp\asisword
--  \else
--    \ifx\temp\noneword
--      \lispnarrowing = 0pt
--    \else
--      \lispnarrowing = #1em
--    \fi
--  \fi
--}
--
--% @firstparagraphindent WORD
--% If WORD is `none', then suppress indentation of the first paragraph
--% after a section heading.  If WORD is `insert', then do indent at such
--% paragraphs.
--%
--% The paragraph indentation is suppressed or not by calling
--% \suppressfirstparagraphindent, which the sectioning commands do.
--% We switch the definition of this back and forth according to WORD.
--% By default, we suppress indentation.
--%
--\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
--\def\insertword{insert}
--%
--\parseargdef\firstparagraphindent{%
--  \def\temp{#1}%
--  \ifx\temp\noneword
--    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
--  \else\ifx\temp\insertword
--    \let\suppressfirstparagraphindent = \relax
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @firstparagraphindent option `\temp'}%
--  \fi\fi
--}
--
--% Here is how we actually suppress indentation.  Redefine \everypar to
--% \kern backwards by \parindent, and then reset itself to empty.
--%
--% We also make \indent itself not actually do anything until the next
--% paragraph.
--%
--\gdef\dosuppressfirstparagraphindent{%
--  \gdef\indent{%
--    \restorefirstparagraphindent
--    \indent
--  }%
--  \gdef\noindent{%
--    \restorefirstparagraphindent
--    \noindent
--  }%
--  \global\everypar = {%
--    \kern -\parindent
--    \restorefirstparagraphindent
--  }%
--}
--
--\gdef\restorefirstparagraphindent{%
--  \global \let \indent = \ptexindent
--  \global \let \noindent = \ptexnoindent
--  \global \everypar = {}%
--}
--
--
--% @refill is a no-op.
--\let\refill=\relax
--
--% If working on a large document in chapters, it is convenient to
--% be able to disable indexing, cross-referencing, and contents, for test runs.
--% This is done with @novalidate (before @setfilename).
--%
--\newif\iflinks \linkstrue % by default we want the aux files.
--\let\novalidate = \linksfalse
--
--% @setfilename is done at the beginning of every texinfo file.
--% So open here the files we need to have open while reading the input.
--% This makes it possible to make a .fmt file for texinfo.
--\def\setfilename{%
--   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
--   \iflinks
--     \tryauxfile
--     % Open the new aux file.  TeX will close it automatically at exit.
--     \immediate\openout\auxfile=\jobname.aux
--   \fi % \openindices needs to do some work in any case.
--   \openindices
--   \let\setfilename=\comment % Ignore extra @setfilename cmds.
--   %
--   % If texinfo.cnf is present on the system, read it.
--   % Useful for site-wide @afourpaper, etc.
--   \openin 1 texinfo.cnf
--   \ifeof 1 \else \input texinfo.cnf \fi
--   \closein 1
--   %
--   \comment % Ignore the actual filename.
--}
--
--% Called from \setfilename.
--%
--\def\openindices{%
--  \newindex{cp}%
--  \newcodeindex{fn}%
--  \newcodeindex{vr}%
--  \newcodeindex{tp}%
--  \newcodeindex{ky}%
--  \newcodeindex{pg}%
--}
--
--% @bye.
--\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
--
--
--\message{pdf,}
--% adobe `portable' document format
--\newcount\tempnum
--\newcount\lnkcount
--\newtoks\filename
--\newcount\filenamelength
--\newcount\pgn
--\newtoks\toksA
--\newtoks\toksB
--\newtoks\toksC
--\newtoks\toksD
--\newbox\boxA
--\newcount\countA
--\newif\ifpdf
--\newif\ifpdfmakepagedest
--
--% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
--% can be set).  So we test for \relax and 0 as well as being undefined.
--\ifx\pdfoutput\thisisundefined
--\else
--  \ifx\pdfoutput\relax
--  \else
--    \ifcase\pdfoutput
--    \else
--      \pdftrue
--    \fi
--  \fi
--\fi
--
--% PDF uses PostScript string constants for the names of xref targets,
--% for display in the outlines, and in other places.  Thus, we have to
--% double any backslashes.  Otherwise, a name like "\node" will be
--% interpreted as a newline (\n), followed by o, d, e.  Not good.
--%
--% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
--% related messages.  The final outcome is that it is up to the TeX user
--% to double the backslashes and otherwise make the string valid, so
--% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
--% do this reliably, so we use it.
--
--% #1 is a control sequence in which to do the replacements,
--% which we \xdef.
--\def\txiescapepdf#1{%
--  \ifx\pdfescapestring\thisisundefined
--    % No primitive available; should we give a warning or log?
--    % Many times it won't matter.
--  \else
--    % The expandable \pdfescapestring primitive escapes parentheses,
--    % backslashes, and other special chars.
--    \xdef#1{\pdfescapestring{#1}}%
--  \fi
--}
--
--\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
--with PDF output, and none of those formats could be found.  (.eps cannot
--be supported due to the design of the PDF format; use regular TeX (DVI
--output) for that.)}
--
--\ifpdf
--  %
--  % Color manipulation macros based on pdfcolor.tex,
--  % except using rgb instead of cmyk; the latter is said to render as a
--  % very dark gray on-screen and a very dark halftone in print, instead
--  % of actual black.
--  \def\rgbDarkRed{0.50 0.09 0.12}
--  \def\rgbBlack{0 0 0}
--  %
--  % k sets the color for filling (usual text, etc.);
--  % K sets the color for stroking (thin rules, e.g., normal _'s).
--  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
--  %
--  % Set color, and create a mark which defines \thiscolor accordingly,
--  % so that \makeheadline knows which color to restore.
--  \def\setcolor#1{%
--    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
--    \domark
--    \pdfsetcolor{#1}%
--  }
--  %
--  \def\maincolor{\rgbBlack}
--  \pdfsetcolor{\maincolor}
--  \edef\thiscolor{\maincolor}
--  \def\lastcolordefs{}
--  %
--  \def\makefootline{%
--    \baselineskip24pt
--    \line{\pdfsetcolor{\maincolor}\the\footline}%
--  }
--  %
--  \def\makeheadline{%
--    \vbox to 0pt{%
--      \vskip-22.5pt
--      \line{%
--        \vbox to8.5pt{}%
--        % Extract \thiscolor definition from the marks.
--        \getcolormarks
--        % Typeset the headline with \maincolor, then restore the color.
--        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
--      }%
--      \vss
--    }%
--    \nointerlineskip
--  }
--  %
--  %
--  \pdfcatalog{/PageMode /UseOutlines}
--  %
--  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
--  \def\dopdfimage#1#2#3{%
--    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
--    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
--    %
--    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
--    % others).  Let's try in that order, PDF first since if
--    % someone has a scalable image, presumably better to use that than a
--    % bitmap.
--    \let\pdfimgext=\empty
--    \begingroup
--      \openin 1 #1.pdf \ifeof 1
--        \openin 1 #1.PDF \ifeof 1
--          \openin 1 #1.png \ifeof 1
--            \openin 1 #1.jpg \ifeof 1
--              \openin 1 #1.jpeg \ifeof 1
--                \openin 1 #1.JPG \ifeof 1
--                  \errhelp = \nopdfimagehelp
--                  \errmessage{Could not find image file #1 for pdf}%
--                \else \gdef\pdfimgext{JPG}%
--                \fi
--              \else \gdef\pdfimgext{jpeg}%
--              \fi
--            \else \gdef\pdfimgext{jpg}%
--            \fi
--          \else \gdef\pdfimgext{png}%
--          \fi
--        \else \gdef\pdfimgext{PDF}%
--        \fi
--      \else \gdef\pdfimgext{pdf}%
--      \fi
--      \closein 1
--    \endgroup
--    %
--    % without \immediate, ancient pdftex seg faults when the same image is
--    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
--    \ifnum\pdftexversion < 14
--      \immediate\pdfimage
--    \else
--      \immediate\pdfximage
--    \fi
--      \ifdim \wd0 >0pt width \pdfimagewidth \fi
--      \ifdim \wd2 >0pt height \pdfimageheight \fi
--      \ifnum\pdftexversion<13
--         #1.\pdfimgext
--       \else
--         {#1.\pdfimgext}%
--       \fi
--    \ifnum\pdftexversion < 14 \else
--      \pdfrefximage \pdflastximage
--    \fi}
--  %
--  \def\pdfmkdest#1{{%
--    % We have to set dummies so commands such as @code, and characters
--    % such as \, aren't expanded when present in a section title.
--    \indexnofonts
--    \turnoffactive
--    \makevalueexpandable
--    \def\pdfdestname{#1}%
--    \txiescapepdf\pdfdestname
--    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
--  }}
--  %
--  % used to mark target names; must be expandable.
--  \def\pdfmkpgn#1{#1}
--  %
--  % by default, use a color that is dark enough to print on paper as
--  % nearly black, but still distinguishable for online viewing.
--  \def\urlcolor{\rgbDarkRed}
--  \def\linkcolor{\rgbDarkRed}
--  \def\endlink{\setcolor{\maincolor}\pdfendlink}
--  %
--  % Adding outlines to PDF; macros for calculating structure of outlines
--  % come from Petr Olsak
--  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
--    \else \csname#1\endcsname \fi}
--  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
--    \advance\tempnum by 1
--    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
--  %
--  % #1 is the section text, which is what will be displayed in the
--  % outline by the pdf viewer.  #2 is the pdf expression for the number
--  % of subentries (or empty, for subsubsections).  #3 is the node text,
--  % which might be empty if this toc entry had no corresponding node.
--  % #4 is the page number
--  %
--  \def\dopdfoutline#1#2#3#4{%
--    % Generate a link to the node text if that exists; else, use the
--    % page number.  We could generate a destination for the section
--    % text in the case where a section has no node, but it doesn't
--    % seem worth the trouble, since most documents are normally structured.
--    \edef\pdfoutlinedest{#3}%
--    \ifx\pdfoutlinedest\empty
--      \def\pdfoutlinedest{#4}%
--    \else
--      \txiescapepdf\pdfoutlinedest
--    \fi
--    %
--    % Also escape PDF chars in the display string.
--    \edef\pdfoutlinetext{#1}%
--    \txiescapepdf\pdfoutlinetext
--    %
--    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
--  }
--  %
--  \def\pdfmakeoutlines{%
--    \begingroup
--      % Read toc silently, to get counts of subentries for \pdfoutline.
--      \def\partentry##1##2##3##4{}% ignore parts in the outlines
--      \def\numchapentry##1##2##3##4{%
--	\def\thischapnum{##2}%
--	\def\thissecnum{0}%
--	\def\thissubsecnum{0}%
--      }%
--      \def\numsecentry##1##2##3##4{%
--	\advancenumber{chap\thischapnum}%
--	\def\thissecnum{##2}%
--	\def\thissubsecnum{0}%
--      }%
--      \def\numsubsecentry##1##2##3##4{%
--	\advancenumber{sec\thissecnum}%
--	\def\thissubsecnum{##2}%
--      }%
--      \def\numsubsubsecentry##1##2##3##4{%
--	\advancenumber{subsec\thissubsecnum}%
--      }%
--      \def\thischapnum{0}%
--      \def\thissecnum{0}%
--      \def\thissubsecnum{0}%
--      %
--      % use \def rather than \let here because we redefine \chapentry et
--      % al. a second time, below.
--      \def\appentry{\numchapentry}%
--      \def\appsecentry{\numsecentry}%
--      \def\appsubsecentry{\numsubsecentry}%
--      \def\appsubsubsecentry{\numsubsubsecentry}%
--      \def\unnchapentry{\numchapentry}%
--      \def\unnsecentry{\numsecentry}%
--      \def\unnsubsecentry{\numsubsecentry}%
--      \def\unnsubsubsecentry{\numsubsubsecentry}%
--      \readdatafile{toc}%
--      %
--      % Read toc second time, this time actually producing the outlines.
--      % The `-' means take the \expnumber as the absolute number of
--      % subentries, which we calculated on our first read of the .toc above.
--      %
--      % We use the node names as the destinations.
--      \def\numchapentry##1##2##3##4{%
--        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
--      \def\numsecentry##1##2##3##4{%
--        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
--      \def\numsubsecentry##1##2##3##4{%
--        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
--      \def\numsubsubsecentry##1##2##3##4{% count is always zero
--        \dopdfoutline{##1}{}{##3}{##4}}%
--      %
--      % PDF outlines are displayed using system fonts, instead of
--      % document fonts.  Therefore we cannot use special characters,
--      % since the encoding is unknown.  For example, the eogonek from
--      % Latin 2 (0xea) gets translated to a | character.  Info from
--      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
--      %
--      % TODO this right, we have to translate 8-bit characters to
--      % their "best" equivalent, based on the @documentencoding.  Too
--      % much work for too little return.  Just use the ASCII equivalents
--      % we use for the index sort strings.
--      %
--      \indexnofonts
--      \setupdatafile
--      % We can have normal brace characters in the PDF outlines, unlike
--      % Texinfo index files.  So set that up.
--      \def\{{\lbracecharliteral}%
--      \def\}{\rbracecharliteral}%
--      \catcode`\\=\active \otherbackslash
--      \input \tocreadfilename
--    \endgroup
--  }
--  {\catcode`[=1 \catcode`]=2
--   \catcode`{=\other \catcode`}=\other
--   \gdef\lbracecharliteral[{]%
--   \gdef\rbracecharliteral[}]%
--  ]
--  %
--  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
--    \ifx\PP\D\let\nextsp\relax
--    \else\let\nextsp\skipspaces
--      \addtokens{\filename}{\PP}%
--      \advance\filenamelength by 1
--    \fi
--    \nextsp}
--  \def\getfilename#1{%
--    \filenamelength=0
--    % If we don't expand the argument now, \skipspaces will get
--    % snagged on things like "@value{foo}".
--    \edef\temp{#1}%
--    \expandafter\skipspaces\temp|\relax
--  }
--  \ifnum\pdftexversion < 14
--    \let \startlink \pdfannotlink
--  \else
--    \let \startlink \pdfstartlink
--  \fi
--  % make a live url in pdf output.
--  \def\pdfurl#1{%
--    \begingroup
--      % it seems we really need yet another set of dummies; have not
--      % tried to figure out what each command should do in the context
--      % of @url.  for now, just make @/ a no-op, that's the only one
--      % people have actually reported a problem with.
--      %
--      \normalturnoffactive
--      \def\@{@}%
--      \let\/=\empty
--      \makevalueexpandable
--      % do we want to go so far as to use \indexnofonts instead of just
--      % special-casing \var here?
--      \def\var##1{##1}%
--      %
--      \leavevmode\setcolor{\urlcolor}%
--      \startlink attr{/Border [0 0 0]}%
--        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
--    \endgroup}
--  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
--  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
--  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
--  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
--  \def\maketoks{%
--    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
--    \ifx\first0\adn0
--    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
--    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
--    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
--    \else
--      \ifnum0=\countA\else\makelink\fi
--      \ifx\first.\let\next=\done\else
--        \let\next=\maketoks
--        \addtokens{\toksB}{\the\toksD}
--        \ifx\first,\addtokens{\toksB}{\space}\fi
--      \fi
--    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
--    \next}
--  \def\makelink{\addtokens{\toksB}%
--    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
--  \def\pdflink#1{%
--    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
--    \setcolor{\linkcolor}#1\endlink}
--  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
--\else
--  % non-pdf mode
--  \let\pdfmkdest = \gobble
--  \let\pdfurl = \gobble
--  \let\endlink = \relax
--  \let\setcolor = \gobble
--  \let\pdfsetcolor = \gobble
--  \let\pdfmakeoutlines = \relax
--\fi  % \ifx\pdfoutput
--
--
--\message{fonts,}
--
--% Change the current font style to #1, remembering it in \curfontstyle.
--% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
--% italics, not bold italics.
--%
--\def\setfontstyle#1{%
--  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
--  \csname ten#1\endcsname  % change the current font
--}
--
--% Select #1 fonts with the current style.
--%
--\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
--
--\def\rm{\fam=0 \setfontstyle{rm}}
--\def\it{\fam=\itfam \setfontstyle{it}}
--\def\sl{\fam=\slfam \setfontstyle{sl}}
--\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
--\def\tt{\fam=\ttfam \setfontstyle{tt}}
--
--% Unfortunately, we have to override this for titles and the like, since
--% in those cases "rm" is bold.  Sigh.
--\def\rmisbold{\rm\def\curfontstyle{bf}}
--
--% Texinfo sort of supports the sans serif font style, which plain TeX does not.
--% So we set up a \sf.
--\newfam\sffam
--\def\sf{\fam=\sffam \setfontstyle{sf}}
--\let\li = \sf % Sometimes we call it \li, not \sf.
--
--% We don't need math for this font style.
--\def\ttsl{\setfontstyle{ttsl}}
--
--
--% Set the baselineskip to #1, and the lineskip and strut size
--% correspondingly.  There is no deep meaning behind these magic numbers
--% used as factors; they just match (closely enough) what Knuth defined.
--%
--\def\lineskipfactor{.08333}
--\def\strutheightpercent{.70833}
--\def\strutdepthpercent {.29167}
--%
--% can get a sort of poor man's double spacing by redefining this.
--\def\baselinefactor{1}
--%
--\newdimen\textleading
--\def\setleading#1{%
--  \dimen0 = #1\relax
--  \normalbaselineskip = \baselinefactor\dimen0
--  \normallineskip = \lineskipfactor\normalbaselineskip
--  \normalbaselines
--  \setbox\strutbox =\hbox{%
--    \vrule width0pt height\strutheightpercent\baselineskip
--                    depth \strutdepthpercent \baselineskip
--  }%
--}
--
--% PDF CMaps.  See also LaTeX's t1.cmap.
--%
--% do nothing with this by default.
--\expandafter\let\csname cmapOT1\endcsname\gobble
--\expandafter\let\csname cmapOT1IT\endcsname\gobble
--\expandafter\let\csname cmapOT1TT\endcsname\gobble
--
--% if we are producing pdf, and we have \pdffontattr, then define cmaps.
--% (\pdffontattr was introduced many years ago, but people still run
--% older pdftex's; it's easy to conditionalize, so we do.)
--\ifpdf \ifx\pdffontattr\thisisundefined \else
--  \begingroup
--    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
--    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
--%%DocumentNeededResources: ProcSet (CIDInit)
--%%IncludeResource: ProcSet (CIDInit)
--%%BeginResource: CMap (TeX-OT1-0)
--%%Title: (TeX-OT1-0 TeX OT1 0)
--%%Version: 1.000
--%%EndComments
--/CIDInit /ProcSet findresource begin
--12 dict begin
--begincmap
--/CIDSystemInfo
--<< /Registry (TeX)
--/Ordering (OT1)
--/Supplement 0
-->> def
--/CMapName /TeX-OT1-0 def
--/CMapType 2 def
--1 begincodespacerange
--<00> <7F>
--endcodespacerange
--8 beginbfrange
--<00> <01> <0393>
--<09> <0A> <03A8>
--<23> <26> <0023>
--<28> <3B> <0028>
--<3F> <5B> <003F>
--<5D> <5E> <005D>
--<61> <7A> <0061>
--<7B> <7C> <2013>
--endbfrange
--40 beginbfchar
--<02> <0398>
--<03> <039B>
--<04> <039E>
--<05> <03A0>
--<06> <03A3>
--<07> <03D2>
--<08> <03A6>
--<0B> <00660066>
--<0C> <00660069>
--<0D> <0066006C>
--<0E> <006600660069>
--<0F> <00660066006C>
--<10> <0131>
--<11> <0237>
--<12> <0060>
--<13> <00B4>
--<14> <02C7>
--<15> <02D8>
--<16> <00AF>
--<17> <02DA>
--<18> <00B8>
--<19> <00DF>
--<1A> <00E6>
--<1B> <0153>
--<1C> <00F8>
--<1D> <00C6>
--<1E> <0152>
--<1F> <00D8>
--<21> <0021>
--<22> <201D>
--<27> <2019>
--<3C> <00A1>
--<3D> <003D>
--<3E> <00BF>
--<5C> <201C>
--<5F> <02D9>
--<60> <2018>
--<7D> <02DD>
--<7E> <007E>
--<7F> <00A8>
--endbfchar
--endcmap
--CMapName currentdict /CMap defineresource pop
--end
--end
--%%EndResource
--%%EOF
--    }\endgroup
--  \expandafter\edef\csname cmapOT1\endcsname#1{%
--    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
--  }%
--%
--% \cmapOT1IT
--  \begingroup
--    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
--    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
--%%DocumentNeededResources: ProcSet (CIDInit)
--%%IncludeResource: ProcSet (CIDInit)
--%%BeginResource: CMap (TeX-OT1IT-0)
--%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
--%%Version: 1.000
--%%EndComments
--/CIDInit /ProcSet findresource begin
--12 dict begin
--begincmap
--/CIDSystemInfo
--<< /Registry (TeX)
--/Ordering (OT1IT)
--/Supplement 0
-->> def
--/CMapName /TeX-OT1IT-0 def
--/CMapType 2 def
--1 begincodespacerange
--<00> <7F>
--endcodespacerange
--8 beginbfrange
--<00> <01> <0393>
--<09> <0A> <03A8>
--<25> <26> <0025>
--<28> <3B> <0028>
--<3F> <5B> <003F>
--<5D> <5E> <005D>
--<61> <7A> <0061>
--<7B> <7C> <2013>
--endbfrange
--42 beginbfchar
--<02> <0398>
--<03> <039B>
--<04> <039E>
--<05> <03A0>
--<06> <03A3>
--<07> <03D2>
--<08> <03A6>
--<0B> <00660066>
--<0C> <00660069>
--<0D> <0066006C>
--<0E> <006600660069>
--<0F> <00660066006C>
--<10> <0131>
--<11> <0237>
--<12> <0060>
--<13> <00B4>
--<14> <02C7>
--<15> <02D8>
--<16> <00AF>
--<17> <02DA>
--<18> <00B8>
--<19> <00DF>
--<1A> <00E6>
--<1B> <0153>
--<1C> <00F8>
--<1D> <00C6>
--<1E> <0152>
--<1F> <00D8>
--<21> <0021>
--<22> <201D>
--<23> <0023>
--<24> <00A3>
--<27> <2019>
--<3C> <00A1>
--<3D> <003D>
--<3E> <00BF>
--<5C> <201C>
--<5F> <02D9>
--<60> <2018>
--<7D> <02DD>
--<7E> <007E>
--<7F> <00A8>
--endbfchar
--endcmap
--CMapName currentdict /CMap defineresource pop
--end
--end
--%%EndResource
--%%EOF
--    }\endgroup
--  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
--    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
--  }%
--%
--% \cmapOT1TT
--  \begingroup
--    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
--    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
--%%DocumentNeededResources: ProcSet (CIDInit)
--%%IncludeResource: ProcSet (CIDInit)
--%%BeginResource: CMap (TeX-OT1TT-0)
--%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
--%%Version: 1.000
--%%EndComments
--/CIDInit /ProcSet findresource begin
--12 dict begin
--begincmap
--/CIDSystemInfo
--<< /Registry (TeX)
--/Ordering (OT1TT)
--/Supplement 0
-->> def
--/CMapName /TeX-OT1TT-0 def
--/CMapType 2 def
--1 begincodespacerange
--<00> <7F>
--endcodespacerange
--5 beginbfrange
--<00> <01> <0393>
--<09> <0A> <03A8>
--<21> <26> <0021>
--<28> <5F> <0028>
--<61> <7E> <0061>
--endbfrange
--32 beginbfchar
--<02> <0398>
--<03> <039B>
--<04> <039E>
--<05> <03A0>
--<06> <03A3>
--<07> <03D2>
--<08> <03A6>
--<0B> <2191>
--<0C> <2193>
--<0D> <0027>
--<0E> <00A1>
--<0F> <00BF>
--<10> <0131>
--<11> <0237>
--<12> <0060>
--<13> <00B4>
--<14> <02C7>
--<15> <02D8>
--<16> <00AF>
--<17> <02DA>
--<18> <00B8>
--<19> <00DF>
--<1A> <00E6>
--<1B> <0153>
--<1C> <00F8>
--<1D> <00C6>
--<1E> <0152>
--<1F> <00D8>
--<20> <2423>
--<27> <2019>
--<60> <2018>
--<7F> <00A8>
--endbfchar
--endcmap
--CMapName currentdict /CMap defineresource pop
--end
--end
--%%EndResource
--%%EOF
--    }\endgroup
--  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
--    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
--  }%
--\fi\fi
--
--
--% Set the font macro #1 to the font named \fontprefix#2.
--% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
--% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
--% Example:
--% #1 = \textrm
--% #2 = \rmshape
--% #3 = 10
--% #4 = \mainmagstep
--% #5 = OT1
--%
--\def\setfont#1#2#3#4#5{%
--  \font#1=\fontprefix#2#3 scaled #4
--  \csname cmap#5\endcsname#1%
--}
--% This is what gets called when #5 of \setfont is empty.
--\let\cmap\gobble
--%
--% (end of cmaps)
--
--% Use cm as the default font prefix.
--% To specify the font prefix, you must define \fontprefix
--% before you read in texinfo.tex.
--\ifx\fontprefix\thisisundefined
--\def\fontprefix{cm}
--\fi
--% Support font families that don't use the same naming scheme as CM.
--\def\rmshape{r}
--\def\rmbshape{bx}               % where the normal face is bold
--\def\bfshape{b}
--\def\bxshape{bx}
--\def\ttshape{tt}
--\def\ttbshape{tt}
--\def\ttslshape{sltt}
--\def\itshape{ti}
--\def\itbshape{bxti}
--\def\slshape{sl}
--\def\slbshape{bxsl}
--\def\sfshape{ss}
--\def\sfbshape{ss}
--\def\scshape{csc}
--\def\scbshape{csc}
--
--% Definitions for a main text size of 11pt.  (The default in Texinfo.)
--%
--\def\definetextfontsizexi{%
--% Text fonts (11.2pt, magstep1).
--\def\textnominalsize{11pt}
--\edef\mainmagstep{\magstephalf}
--\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
--\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
--\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
--\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
--\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
--\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
--\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
--\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
--\font\texti=cmmi10 scaled \mainmagstep
--\font\textsy=cmsy10 scaled \mainmagstep
--\def\textecsize{1095}
--
--% A few fonts for @defun names and args.
--\setfont\defbf\bfshape{10}{\magstep1}{OT1}
--\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
--\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
--\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
--
--% Fonts for indices, footnotes, small examples (9pt).
--\def\smallnominalsize{9pt}
--\setfont\smallrm\rmshape{9}{1000}{OT1}
--\setfont\smalltt\ttshape{9}{1000}{OT1TT}
--\setfont\smallbf\bfshape{10}{900}{OT1}
--\setfont\smallit\itshape{9}{1000}{OT1IT}
--\setfont\smallsl\slshape{9}{1000}{OT1}
--\setfont\smallsf\sfshape{9}{1000}{OT1}
--\setfont\smallsc\scshape{10}{900}{OT1}
--\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
--\font\smalli=cmmi9
--\font\smallsy=cmsy9
--\def\smallecsize{0900}
--
--% Fonts for small examples (8pt).
--\def\smallernominalsize{8pt}
--\setfont\smallerrm\rmshape{8}{1000}{OT1}
--\setfont\smallertt\ttshape{8}{1000}{OT1TT}
--\setfont\smallerbf\bfshape{10}{800}{OT1}
--\setfont\smallerit\itshape{8}{1000}{OT1IT}
--\setfont\smallersl\slshape{8}{1000}{OT1}
--\setfont\smallersf\sfshape{8}{1000}{OT1}
--\setfont\smallersc\scshape{10}{800}{OT1}
--\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
--\font\smalleri=cmmi8
--\font\smallersy=cmsy8
--\def\smallerecsize{0800}
--
--% Fonts for title page (20.4pt):
--\def\titlenominalsize{20pt}
--\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
--\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
--\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
--\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
--\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
--\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
--\let\titlebf=\titlerm
--\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
--\font\titlei=cmmi12 scaled \magstep3
--\font\titlesy=cmsy10 scaled \magstep4
--\def\titleecsize{2074}
--
--% Chapter (and unnumbered) fonts (17.28pt).
--\def\chapnominalsize{17pt}
--\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
--\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
--\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
--\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
--\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
--\setfont\chapsf\sfbshape{17}{1000}{OT1}
--\let\chapbf=\chaprm
--\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
--\font\chapi=cmmi12 scaled \magstep2
--\font\chapsy=cmsy10 scaled \magstep3
--\def\chapecsize{1728}
--
--% Section fonts (14.4pt).
--\def\secnominalsize{14pt}
--\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
--\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
--\setfont\secsl\slbshape{10}{\magstep2}{OT1}
--\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
--\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
--\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
--\let\secbf\secrm
--\setfont\secsc\scbshape{10}{\magstep2}{OT1}
--\font\seci=cmmi12 scaled \magstep1
--\font\secsy=cmsy10 scaled \magstep2
--\def\sececsize{1440}
--
--% Subsection fonts (13.15pt).
--\def\ssecnominalsize{13pt}
--\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
--\setfont\ssecit\itbshape{10}{1315}{OT1IT}
--\setfont\ssecsl\slbshape{10}{1315}{OT1}
--\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
--\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
--\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
--\let\ssecbf\ssecrm
--\setfont\ssecsc\scbshape{10}{1315}{OT1}
--\font\sseci=cmmi12 scaled \magstephalf
--\font\ssecsy=cmsy10 scaled 1315
--\def\ssececsize{1200}
--
--% Reduced fonts for @acro in text (10pt).
--\def\reducednominalsize{10pt}
--\setfont\reducedrm\rmshape{10}{1000}{OT1}
--\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
--\setfont\reducedbf\bfshape{10}{1000}{OT1}
--\setfont\reducedit\itshape{10}{1000}{OT1IT}
--\setfont\reducedsl\slshape{10}{1000}{OT1}
--\setfont\reducedsf\sfshape{10}{1000}{OT1}
--\setfont\reducedsc\scshape{10}{1000}{OT1}
--\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
--\font\reducedi=cmmi10
--\font\reducedsy=cmsy10
--\def\reducedecsize{1000}
--
--\textleading = 13.2pt % line spacing for 11pt CM
--\textfonts            % reset the current fonts
--\rm
--} % end of 11pt text font size definitions, \definetextfontsizexi
--
--
--% Definitions to make the main text be 10pt Computer Modern, with
--% section, chapter, etc., sizes following suit.  This is for the GNU
--% Press printing of the Emacs 22 manual.  Maybe other manuals in the
--% future.  Used with @smallbook, which sets the leading to 12pt.
--%
--\def\definetextfontsizex{%
--% Text fonts (10pt).
--\def\textnominalsize{10pt}
--\edef\mainmagstep{1000}
--\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
--\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
--\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
--\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
--\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
--\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
--\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
--\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
--\font\texti=cmmi10 scaled \mainmagstep
--\font\textsy=cmsy10 scaled \mainmagstep
--\def\textecsize{1000}
--
--% A few fonts for @defun names and args.
--\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
--\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
--\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
--\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
--
--% Fonts for indices, footnotes, small examples (9pt).
--\def\smallnominalsize{9pt}
--\setfont\smallrm\rmshape{9}{1000}{OT1}
--\setfont\smalltt\ttshape{9}{1000}{OT1TT}
--\setfont\smallbf\bfshape{10}{900}{OT1}
--\setfont\smallit\itshape{9}{1000}{OT1IT}
--\setfont\smallsl\slshape{9}{1000}{OT1}
--\setfont\smallsf\sfshape{9}{1000}{OT1}
--\setfont\smallsc\scshape{10}{900}{OT1}
--\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
--\font\smalli=cmmi9
--\font\smallsy=cmsy9
--\def\smallecsize{0900}
--
--% Fonts for small examples (8pt).
--\def\smallernominalsize{8pt}
--\setfont\smallerrm\rmshape{8}{1000}{OT1}
--\setfont\smallertt\ttshape{8}{1000}{OT1TT}
--\setfont\smallerbf\bfshape{10}{800}{OT1}
--\setfont\smallerit\itshape{8}{1000}{OT1IT}
--\setfont\smallersl\slshape{8}{1000}{OT1}
--\setfont\smallersf\sfshape{8}{1000}{OT1}
--\setfont\smallersc\scshape{10}{800}{OT1}
--\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
--\font\smalleri=cmmi8
--\font\smallersy=cmsy8
--\def\smallerecsize{0800}
--
--% Fonts for title page (20.4pt):
--\def\titlenominalsize{20pt}
--\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
--\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
--\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
--\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
--\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
--\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
--\let\titlebf=\titlerm
--\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
--\font\titlei=cmmi12 scaled \magstep3
--\font\titlesy=cmsy10 scaled \magstep4
--\def\titleecsize{2074}
--
--% Chapter fonts (14.4pt).
--\def\chapnominalsize{14pt}
--\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
--\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
--\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
--\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
--\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
--\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
--\let\chapbf\chaprm
--\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
--\font\chapi=cmmi12 scaled \magstep1
--\font\chapsy=cmsy10 scaled \magstep2
--\def\chapecsize{1440}
--
--% Section fonts (12pt).
--\def\secnominalsize{12pt}
--\setfont\secrm\rmbshape{12}{1000}{OT1}
--\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
--\setfont\secsl\slbshape{10}{\magstep1}{OT1}
--\setfont\sectt\ttbshape{12}{1000}{OT1TT}
--\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
--\setfont\secsf\sfbshape{12}{1000}{OT1}
--\let\secbf\secrm
--\setfont\secsc\scbshape{10}{\magstep1}{OT1}
--\font\seci=cmmi12
--\font\secsy=cmsy10 scaled \magstep1
--\def\sececsize{1200}
--
--% Subsection fonts (10pt).
--\def\ssecnominalsize{10pt}
--\setfont\ssecrm\rmbshape{10}{1000}{OT1}
--\setfont\ssecit\itbshape{10}{1000}{OT1IT}
--\setfont\ssecsl\slbshape{10}{1000}{OT1}
--\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
--\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
--\setfont\ssecsf\sfbshape{10}{1000}{OT1}
--\let\ssecbf\ssecrm
--\setfont\ssecsc\scbshape{10}{1000}{OT1}
--\font\sseci=cmmi10
--\font\ssecsy=cmsy10
--\def\ssececsize{1000}
--
--% Reduced fonts for @acro in text (9pt).
--\def\reducednominalsize{9pt}
--\setfont\reducedrm\rmshape{9}{1000}{OT1}
--\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
--\setfont\reducedbf\bfshape{10}{900}{OT1}
--\setfont\reducedit\itshape{9}{1000}{OT1IT}
--\setfont\reducedsl\slshape{9}{1000}{OT1}
--\setfont\reducedsf\sfshape{9}{1000}{OT1}
--\setfont\reducedsc\scshape{10}{900}{OT1}
--\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
--\font\reducedi=cmmi9
--\font\reducedsy=cmsy9
--\def\reducedecsize{0900}
--
--\divide\parskip by 2  % reduce space between paragraphs
--\textleading = 12pt   % line spacing for 10pt CM
--\textfonts            % reset the current fonts
--\rm
--} % end of 10pt text font size definitions, \definetextfontsizex
--
--
--% We provide the user-level command
--%   @fonttextsize 10
--% (or 11) to redefine the text font size.  pt is assumed.
--%
--\def\xiword{11}
--\def\xword{10}
--\def\xwordpt{10pt}
--%
--\parseargdef\fonttextsize{%
--  \def\textsizearg{#1}%
--  %\wlog{doing @fonttextsize \textsizearg}%
--  %
--  % Set \globaldefs so that documents can use this inside @tex, since
--  % makeinfo 4.8 does not support it, but we need it nonetheless.
--  %
-- \begingroup \globaldefs=1
--  \ifx\textsizearg\xword \definetextfontsizex
--  \else \ifx\textsizearg\xiword \definetextfontsizexi
--  \else
--    \errhelp=\EMsimple
--    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
--  \fi\fi
-- \endgroup
--}
--
--
--% In order for the font changes to affect most math symbols and letters,
--% we have to define the \textfont of the standard families.  Since
--% texinfo doesn't allow for producing subscripts and superscripts except
--% in the main text, we don't bother to reset \scriptfont and
--% \scriptscriptfont (which would also require loading a lot more fonts).
--%
--\def\resetmathfonts{%
--  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
--  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
--  \textfont\ttfam=\tentt \textfont\sffam=\tensf
--}
--
--% The font-changing commands redefine the meanings of \tenSTYLE, instead
--% of just \STYLE.  We do this because \STYLE needs to also set the
--% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
--% \tenSTYLE to set the current font.
--%
--% Each font-changing command also sets the names \lsize (one size lower)
--% and \lllsize (three sizes lower).  These relative commands are used in
--% the LaTeX logo and acronyms.
--%
--% This all needs generalizing, badly.
--%
--\def\textfonts{%
--  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
--  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
--  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
--  \let\tenttsl=\textttsl
--  \def\curfontsize{text}%
--  \def\lsize{reduced}\def\lllsize{smaller}%
--  \resetmathfonts \setleading{\textleading}}
--\def\titlefonts{%
--  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
--  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
--  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
--  \let\tenttsl=\titlettsl
--  \def\curfontsize{title}%
--  \def\lsize{chap}\def\lllsize{subsec}%
--  \resetmathfonts \setleading{27pt}}
--\def\titlefont#1{{\titlefonts\rmisbold #1}}
--\def\chapfonts{%
--  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
--  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
--  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
--  \let\tenttsl=\chapttsl
--  \def\curfontsize{chap}%
--  \def\lsize{sec}\def\lllsize{text}%
--  \resetmathfonts \setleading{19pt}}
--\def\secfonts{%
--  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
--  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
--  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
--  \let\tenttsl=\secttsl
--  \def\curfontsize{sec}%
--  \def\lsize{subsec}\def\lllsize{reduced}%
--  \resetmathfonts \setleading{16pt}}
--\def\subsecfonts{%
--  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
--  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
--  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
--  \let\tenttsl=\ssecttsl
--  \def\curfontsize{ssec}%
--  \def\lsize{text}\def\lllsize{small}%
--  \resetmathfonts \setleading{15pt}}
--\let\subsubsecfonts = \subsecfonts
--\def\reducedfonts{%
--  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
--  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
--  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
--  \let\tenttsl=\reducedttsl
--  \def\curfontsize{reduced}%
--  \def\lsize{small}\def\lllsize{smaller}%
--  \resetmathfonts \setleading{10.5pt}}
--\def\smallfonts{%
--  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
--  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
--  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
--  \let\tenttsl=\smallttsl
--  \def\curfontsize{small}%
--  \def\lsize{smaller}\def\lllsize{smaller}%
--  \resetmathfonts \setleading{10.5pt}}
--\def\smallerfonts{%
--  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
--  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
--  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
--  \let\tenttsl=\smallerttsl
--  \def\curfontsize{smaller}%
--  \def\lsize{smaller}\def\lllsize{smaller}%
--  \resetmathfonts \setleading{9.5pt}}
--
--% Fonts for short table of contents.
--\setfont\shortcontrm\rmshape{12}{1000}{OT1}
--\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
--\setfont\shortcontsl\slshape{12}{1000}{OT1}
--\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
--
--% Define these just so they can be easily changed for other fonts.
--\def\angleleft{$\langle$}
--\def\angleright{$\rangle$}
--
--% Set the fonts to use with the @small... environments.
--\let\smallexamplefonts = \smallfonts
--
--% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
--% can fit this many characters:
--%   8.5x11=86   smallbook=72  a4=90  a5=69
--% If we use \scriptfonts (8pt), then we can fit this many characters:
--%   8.5x11=90+  smallbook=80  a4=90+  a5=77
--% For me, subjectively, the few extra characters that fit aren't worth
--% the additional smallness of 8pt.  So I'm making the default 9pt.
--%
--% By the way, for comparison, here's what fits with @example (10pt):
--%   8.5x11=71  smallbook=60  a4=75  a5=58
--% --karl, 24jan03.
--
--% Set up the default fonts, so we can use them for creating boxes.
--%
--\definetextfontsizexi
--
--
--\message{markup,}
--
--% Check if we are currently using a typewriter font.  Since all the
--% Computer Modern typewriter fonts have zero interword stretch (and
--% shrink), and it is reasonable to expect all typewriter fonts to have
--% this property, we can check that font parameter.
--%
--\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
--
--% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
--% define and register \INITMACRO to be called on markup style changes.
--% \INITMACRO can check \currentmarkupstyle for the innermost
--% style and the set of \ifmarkupSTYLE switches for all styles
--% currently in effect.
--\newif\ifmarkupvar
--\newif\ifmarkupsamp
--\newif\ifmarkupkey
--%\newif\ifmarkupfile % @file == @samp.
--%\newif\ifmarkupoption % @option == @samp.
--\newif\ifmarkupcode
--\newif\ifmarkupkbd
--%\newif\ifmarkupenv % @env == @code.
--%\newif\ifmarkupcommand % @command == @code.
--\newif\ifmarkuptex % @tex (and part of @math, for now).
--\newif\ifmarkupexample
--\newif\ifmarkupverb
--\newif\ifmarkupverbatim
--
--\let\currentmarkupstyle\empty
--
--\def\setupmarkupstyle#1{%
--  \csname markup#1true\endcsname
--  \def\currentmarkupstyle{#1}%
--  \markupstylesetup
--}
--
--\let\markupstylesetup\empty
--
--\def\defmarkupstylesetup#1{%
--  \expandafter\def\expandafter\markupstylesetup
--    \expandafter{\markupstylesetup #1}%
--  \def#1%
--}
--
--% Markup style setup for left and right quotes.
--\defmarkupstylesetup\markupsetuplq{%
--  \expandafter\let\expandafter \temp
--    \csname markupsetuplq\currentmarkupstyle\endcsname
--  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
--}
--
--\defmarkupstylesetup\markupsetuprq{%
--  \expandafter\let\expandafter \temp
--    \csname markupsetuprq\currentmarkupstyle\endcsname
--  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
--}
--
--{
--\catcode`\'=\active
--\catcode`\`=\active
--
--\gdef\markupsetuplqdefault{\let`\lq}
--\gdef\markupsetuprqdefault{\let'\rq}
--
--\gdef\markupsetcodequoteleft{\let`\codequoteleft}
--\gdef\markupsetcodequoteright{\let'\codequoteright}
--}
--
--\let\markupsetuplqcode \markupsetcodequoteleft
--\let\markupsetuprqcode \markupsetcodequoteright
--%
--\let\markupsetuplqexample \markupsetcodequoteleft
--\let\markupsetuprqexample \markupsetcodequoteright
--%
--\let\markupsetuplqkbd     \markupsetcodequoteleft
--\let\markupsetuprqkbd     \markupsetcodequoteright
--%
--\let\markupsetuplqsamp \markupsetcodequoteleft
--\let\markupsetuprqsamp \markupsetcodequoteright
--%
--\let\markupsetuplqverb \markupsetcodequoteleft
--\let\markupsetuprqverb \markupsetcodequoteright
--%
--\let\markupsetuplqverbatim \markupsetcodequoteleft
--\let\markupsetuprqverbatim \markupsetcodequoteright
--
--% Allow an option to not use regular directed right quote/apostrophe
--% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
--% The undirected quote is ugly, so don't make it the default, but it
--% works for pasting with more pdf viewers (at least evince), the
--% lilypond developers report.  xpdf does work with the regular 0x27.
--%
--\def\codequoteright{%
--  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
--    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
--      '%
--    \else \char'15 \fi
--  \else \char'15 \fi
--}
--%
--% and a similar option for the left quote char vs. a grave accent.
--% Modern fonts display ASCII 0x60 as a grave accent, so some people like
--% the code environments to do likewise.
--%
--\def\codequoteleft{%
--  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
--    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
--      % [Knuth] pp. 380,381,391
--      % \relax disables Spanish ligatures ?` and !` of \tt font.
--      \relax`%
--    \else \char'22 \fi
--  \else \char'22 \fi
--}
--
--% Commands to set the quote options.
--%
--\parseargdef\codequoteundirected{%
--  \def\temp{#1}%
--  \ifx\temp\onword
--    \expandafter\let\csname SETtxicodequoteundirected\endcsname
--      = t%
--  \else\ifx\temp\offword
--    \expandafter\let\csname SETtxicodequoteundirected\endcsname
--      = \relax
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
--  \fi\fi
--}
--%
--\parseargdef\codequotebacktick{%
--  \def\temp{#1}%
--  \ifx\temp\onword
--    \expandafter\let\csname SETtxicodequotebacktick\endcsname
--      = t%
--  \else\ifx\temp\offword
--    \expandafter\let\csname SETtxicodequotebacktick\endcsname
--      = \relax
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
--  \fi\fi
--}
--
--% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
--\def\noligaturesquoteleft{\relax\lq}
--
--% Count depth in font-changes, for error checks
--\newcount\fontdepth \fontdepth=0
--
--% Font commands.
--
--% #1 is the font command (\sl or \it), #2 is the text to slant.
--% If we are in a monospaced environment, however, 1) always use \ttsl,
--% and 2) do not add an italic correction.
--\def\dosmartslant#1#2{%
--  \ifusingtt
--    {{\ttsl #2}\let\next=\relax}%
--    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
--  \next
--}
--\def\smartslanted{\dosmartslant\sl}
--\def\smartitalic{\dosmartslant\it}
--
--% Output an italic correction unless \next (presumed to be the following
--% character) is such as not to need one.
--\def\smartitaliccorrection{%
--  \ifx\next,%
--  \else\ifx\next-%
--  \else\ifx\next.%
--  \else\ptexslash
--  \fi\fi\fi
--  \aftersmartic
--}
--
--% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
--\def\ttslanted#1{{\ttsl #1}}
--
--% @cite is like \smartslanted except unconditionally use \sl.  We never want
--% ttsl for book titles, do we?
--\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
--
--\def\aftersmartic{}
--\def\var#1{%
--  \let\saveaftersmartic = \aftersmartic
--  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
--  \smartslanted{#1}%
--}
--
--\let\i=\smartitalic
--\let\slanted=\smartslanted
--\let\dfn=\smartslanted
--\let\emph=\smartitalic
--
--% Explicit font changes: @r, @sc, undocumented @ii.
--\def\r#1{{\rm #1}}              % roman font
--\def\sc#1{{\smallcaps#1}}       % smallcaps font
--\def\ii#1{{\it #1}}             % italic font
--
--% @b, explicit bold.  Also @strong.
--\def\b#1{{\bf #1}}
--\let\strong=\b
--
--% @sansserif, explicit sans.
--\def\sansserif#1{{\sf #1}}
--
--% We can't just use \exhyphenpenalty, because that only has effect at
--% the end of a paragraph.  Restore normal hyphenation at the end of the
--% group within which \nohyphenation is presumably called.
--%
--\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
--\def\restorehyphenation{\hyphenchar\font = `- }
--
--% Set sfcode to normal for the chars that usually have another value.
--% Can't use plain's \frenchspacing because it uses the `\x notation, and
--% sometimes \x has an active definition that messes things up.
--%
--\catcode`@=11
--  \def\plainfrenchspacing{%
--    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
--    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
--    \def\endofsentencespacefactor{1000}% for @. and friends
--  }
--  \def\plainnonfrenchspacing{%
--    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
--    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
--    \def\endofsentencespacefactor{3000}% for @. and friends
--  }
--\catcode`@=\other
--\def\endofsentencespacefactor{3000}% default
--
--% @t, explicit typewriter.
--\def\t#1{%
--  {\tt \rawbackslash \plainfrenchspacing #1}%
--  \null
--}
--
--% @samp.
--\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
--
--% @indicateurl is \samp, that is, with quotes.
--\let\indicateurl=\samp
--
--% @code (and similar) prints in typewriter, but with spaces the same
--% size as normal in the surrounding text, without hyphenation, etc.
--% This is a subroutine for that.
--\def\tclose#1{%
--  {%
--    % Change normal interword space to be same as for the current font.
--    \spaceskip = \fontdimen2\font
--    %
--    % Switch to typewriter.
--    \tt
--    %
--    % But `\ ' produces the large typewriter interword space.
--    \def\ {{\spaceskip = 0pt{} }}%
--    %
--    % Turn off hyphenation.
--    \nohyphenation
--    %
--    \rawbackslash
--    \plainfrenchspacing
--    #1%
--  }%
--  \null % reset spacefactor to 1000
--}
--
--% We *must* turn on hyphenation at `-' and `_' in @code.
--% Otherwise, it is too hard to avoid overfull hboxes
--% in the Emacs manual, the Library manual, etc.
--%
--% Unfortunately, TeX uses one parameter (\hyphenchar) to control
--% both hyphenation at - and hyphenation within words.
--% We must therefore turn them both off (\tclose does that)
--% and arrange explicitly to hyphenate at a dash.
--%  -- rms.
--{
--  \catcode`\-=\active \catcode`\_=\active
--  \catcode`\'=\active \catcode`\`=\active
--  \global\let'=\rq \global\let`=\lq  % default definitions
--  %
--  \global\def\code{\begingroup
--    \setupmarkupstyle{code}%
--    % The following should really be moved into \setupmarkupstyle handlers.
--    \catcode\dashChar=\active  \catcode\underChar=\active
--    \ifallowcodebreaks
--     \let-\codedash
--     \let_\codeunder
--    \else
--     \let-\normaldash
--     \let_\realunder
--    \fi
--    \codex
--  }
--}
--
--\def\codex #1{\tclose{#1}\endgroup}
--
--\def\normaldash{-}
--\def\codedash{-\discretionary{}{}{}}
--\def\codeunder{%
--  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
--  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
--  % will therefore expand the active definition of _, which is us
--  % (inside @code that is), therefore an endless loop.
--  \ifusingtt{\ifmmode
--               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
--             \else\normalunderscore \fi
--             \discretionary{}{}{}}%
--            {\_}%
--}
--
--% An additional complication: the above will allow breaks after, e.g.,
--% each of the four underscores in __typeof__.  This is bad.
--% @allowcodebreaks provides a document-level way to turn breaking at -
--% and _ on and off.
--%
--\newif\ifallowcodebreaks  \allowcodebreakstrue
--
--\def\keywordtrue{true}
--\def\keywordfalse{false}
--
--\parseargdef\allowcodebreaks{%
--  \def\txiarg{#1}%
--  \ifx\txiarg\keywordtrue
--    \allowcodebreakstrue
--  \else\ifx\txiarg\keywordfalse
--    \allowcodebreaksfalse
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
--  \fi\fi
--}
--
--% For @command, @env, @file, @option quotes seem unnecessary,
--% so use \code rather than \samp.
--\let\command=\code
--\let\env=\code
--\let\file=\code
--\let\option=\code
--
--% @uref (abbreviation for `urlref') takes an optional (comma-separated)
--% second argument specifying the text to display and an optional third
--% arg as text to display instead of (rather than in addition to) the url
--% itself.  First (mandatory) arg is the url.
--% (This \urefnobreak definition isn't used now, leaving it for a while
--% for comparison.)
--\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
--\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
--  \unsepspaces
--  \pdfurl{#1}%
--  \setbox0 = \hbox{\ignorespaces #3}%
--  \ifdim\wd0 > 0pt
--    \unhbox0 % third arg given, show only that
--  \else
--    \setbox0 = \hbox{\ignorespaces #2}%
--    \ifdim\wd0 > 0pt
--      \ifpdf
--        \unhbox0             % PDF: 2nd arg given, show only it
--      \else
--        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
--      \fi
--    \else
--      \code{#1}% only url given, so show it
--    \fi
--  \fi
--  \endlink
--\endgroup}
--
--% This \urefbreak definition is the active one.
--\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
--\let\uref=\urefbreak
--\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
--\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
--  \unsepspaces
--  \pdfurl{#1}%
--  \setbox0 = \hbox{\ignorespaces #3}%
--  \ifdim\wd0 > 0pt
--    \unhbox0 % third arg given, show only that
--  \else
--    \setbox0 = \hbox{\ignorespaces #2}%
--    \ifdim\wd0 > 0pt
--      \ifpdf
--        \unhbox0             % PDF: 2nd arg given, show only it
--      \else
--        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
--      \fi
--    \else
--      \urefcode{#1}% only url given, so show it
--    \fi
--  \fi
--  \endlink
--\endgroup}
--
--% Allow line breaks around only a few characters (only).
--\def\urefcatcodes{%
--  \catcode\ampChar=\active   \catcode\dotChar=\active
--  \catcode\hashChar=\active  \catcode\questChar=\active
--  \catcode\slashChar=\active
--}
--{
--  \urefcatcodes
--  %
--  \global\def\urefcode{\begingroup
--    \setupmarkupstyle{code}%
--    \urefcatcodes
--    \let&\urefcodeamp
--    \let.\urefcodedot
--    \let#\urefcodehash
--    \let?\urefcodequest
--    \let/\urefcodeslash
--    \codex
--  }
--  %
--  % By default, they are just regular characters.
--  \global\def&{\normalamp}
--  \global\def.{\normaldot}
--  \global\def#{\normalhash}
--  \global\def?{\normalquest}
--  \global\def/{\normalslash}
--}
--
--% we put a little stretch before and after the breakable chars, to help
--% line breaking of long url's.  The unequal skips make look better in
--% cmtt at least, especially for dots.
--\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
--\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
--%
--\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
--\def\urefcodedot{\urefprestretch .\urefpoststretch}
--\def\urefcodehash{\urefprestretch \#\urefpoststretch}
--\def\urefcodequest{\urefprestretch ?\urefpoststretch}
--\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
--{
--  \catcode`\/=\active
--  \global\def\urefcodeslashfinish{%
--    \urefprestretch \slashChar
--    % Allow line break only after the final / in a sequence of
--    % slashes, to avoid line break between the slashes in http://.
--    \ifx\next/\else \urefpoststretch \fi
--  }
--}
--
--% One more complication: by default we'll break after the special
--% characters, but some people like to break before the special chars, so
--% allow that.  Also allow no breaking at all, for manual control.
--%
--\parseargdef\urefbreakstyle{%
--  \def\txiarg{#1}%
--  \ifx\txiarg\wordnone
--    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
--  \else\ifx\txiarg\wordbefore
--    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
--  \else\ifx\txiarg\wordafter
--    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
--  \fi\fi\fi
--}
--\def\wordafter{after}
--\def\wordbefore{before}
--\def\wordnone{none}
--
--\urefbreakstyle after
--
--% @url synonym for @uref, since that's how everyone uses it.
--%
--\let\url=\uref
--
--% rms does not like angle brackets --karl, 17may97.
--% So now @email is just like @uref, unless we are pdf.
--%
--%\def\email#1{\angleleft{\tt #1}\angleright}
--\ifpdf
--  \def\email#1{\doemail#1,,\finish}
--  \def\doemail#1,#2,#3\finish{\begingroup
--    \unsepspaces
--    \pdfurl{mailto:#1}%
--    \setbox0 = \hbox{\ignorespaces #2}%
--    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
--    \endlink
--  \endgroup}
--\else
--  \let\email=\uref
--\fi
--
--% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
--%   `example' (@kbd uses ttsl only inside of @example and friends),
--%   or `code' (@kbd uses normal tty font always).
--\parseargdef\kbdinputstyle{%
--  \def\txiarg{#1}%
--  \ifx\txiarg\worddistinct
--    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
--  \else\ifx\txiarg\wordexample
--    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
--  \else\ifx\txiarg\wordcode
--    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
--  \fi\fi\fi
--}
--\def\worddistinct{distinct}
--\def\wordexample{example}
--\def\wordcode{code}
--
--% Default is `distinct'.
--\kbdinputstyle distinct
--
--% @kbd is like @code, except that if the argument is just one @key command,
--% then @kbd has no effect.
--\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
--
--\def\xkey{\key}
--\def\kbdsub#1#2#3\par{%
--  \def\one{#1}\def\three{#3}\def\threex{??}%
--  \ifx\one\xkey\ifx\threex\three \key{#2}%
--  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
--  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
--}
--
--% definition of @key that produces a lozenge.  Doesn't adjust to text size.
--%\setfont\keyrm\rmshape{8}{1000}{OT1}
--%\font\keysy=cmsy9
--%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
--%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
--%    \vbox{\hrule\kern-0.4pt
--%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
--%    \kern-0.4pt\hrule}%
--%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
--
--% definition of @key with no lozenge.  If the current font is already
--% monospace, don't change it; that way, we respect @kbdinputstyle.  But
--% if it isn't monospace, then use \tt.
--%
--\def\key#1{{\setupmarkupstyle{key}%
--  \nohyphenation
--  \ifmonospace\else\tt\fi
--  #1}\null}
--
--% @clicksequence{File @click{} Open ...}
--\def\clicksequence#1{\begingroup #1\endgroup}
--
--% @clickstyle @arrow   (by default)
--\parseargdef\clickstyle{\def\click{#1}}
--\def\click{\arrow}
--
--% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
--% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
--%
--\def\dmn#1{\thinspace #1}
--
--% @l was never documented to mean ``switch to the Lisp font'',
--% and it is not used as such in any manual I can find.  We need it for
--% Polish suppressed-l.  --karl, 22sep96.
--%\def\l#1{{\li #1}\null}
--
--% @acronym for "FBI", "NATO", and the like.
--% We print this one point size smaller, since it's intended for
--% all-uppercase.
--%
--\def\acronym#1{\doacronym #1,,\finish}
--\def\doacronym#1,#2,#3\finish{%
--  {\selectfonts\lsize #1}%
--  \def\temp{#2}%
--  \ifx\temp\empty \else
--    \space ({\unsepspaces \ignorespaces \temp \unskip})%
--  \fi
--  \null % reset \spacefactor=1000
--}
--
--% @abbr for "Comput. J." and the like.
--% No font change, but don't do end-of-sentence spacing.
--%
--\def\abbr#1{\doabbr #1,,\finish}
--\def\doabbr#1,#2,#3\finish{%
--  {\plainfrenchspacing #1}%
--  \def\temp{#2}%
--  \ifx\temp\empty \else
--    \space ({\unsepspaces \ignorespaces \temp \unskip})%
--  \fi
--  \null % reset \spacefactor=1000
--}
--
--% @asis just yields its argument.  Used with @table, for example.
--%
--\def\asis#1{#1}
--
--% @math outputs its argument in math mode.
--%
--% One complication: _ usually means subscripts, but it could also mean
--% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
--% _ active, and distinguish by seeing if the current family is \slfam,
--% which is what @var uses.
--{
--  \catcode`\_ = \active
--  \gdef\mathunderscore{%
--    \catcode`\_=\active
--    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
--  }
--}
--% Another complication: we want \\ (and @\) to output a math (or tt) \.
--% FYI, plain.tex uses \\ as a temporary control sequence (for no
--% particular reason), but this is not advertised and we don't care.
--%
--% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
--\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
--%
--\def\math{%
--  \tex
--  \mathunderscore
--  \let\\ = \mathbackslash
--  \mathactive
--  % make the texinfo accent commands work in math mode
--  \let\"=\ddot
--  \let\'=\acute
--  \let\==\bar
--  \let\^=\hat
--  \let\`=\grave
--  \let\u=\breve
--  \let\v=\check
--  \let\~=\tilde
--  \let\dotaccent=\dot
--  $\finishmath
--}
--\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
--
--% Some active characters (such as <) are spaced differently in math.
--% We have to reset their definitions in case the @math was an argument
--% to a command which sets the catcodes (such as @item or @section).
--%
--{
--  \catcode`^ = \active
--  \catcode`< = \active
--  \catcode`> = \active
--  \catcode`+ = \active
--  \catcode`' = \active
--  \gdef\mathactive{%
--    \let^ = \ptexhat
--    \let< = \ptexless
--    \let> = \ptexgtr
--    \let+ = \ptexplus
--    \let' = \ptexquoteright
--  }
--}
--
--% ctrl is no longer a Texinfo command, but leave this definition for fun.
--\def\ctrl #1{{\tt \rawbackslash \hat}#1}
--
--% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
--% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
--% except specified as a normal braced arg, so no newlines to worry about.
--%
--\def\outfmtnametex{tex}
--%
--\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
--\long\def\doinlinefmt#1,#2,\finish{%
--  \def\inlinefmtname{#1}%
--  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
--}
--% For raw, must switch into @tex before parsing the argument, to avoid
--% setting catcodes prematurely.  Doing it this way means that, for
--% example, @inlineraw{html, foo{bar} gets a parse error instead of being
--% ignored.  But this isn't important because if people want a literal
--% *right* brace they would have to use a command anyway, so they may as
--% well use a command to get a left brace too.  We could re-use the
--% delimiter character idea from \verb, but it seems like overkill.
--%
--\long\def\inlineraw{\tex \doinlineraw}
--\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
--\def\doinlinerawtwo#1,#2,\finish{%
--  \def\inlinerawname{#1}%
--  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
--  \endgroup % close group opened by \tex.
--}
--
--
--\message{glyphs,}
--% and logos.
--
--% @@ prints an @, as does @atchar{}.
--\def\@{\char64 }
--\let\atchar=\@
--
--% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
--% Unless we're in typewriter, use \ecfont because the CM text fonts do
--% not have braces, and we don't want to switch into math.
--\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
--\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
--\let\{=\mylbrace \let\lbracechar=\{
--\let\}=\myrbrace \let\rbracechar=\}
--\begingroup
--  % Definitions to produce \{ and \} commands for indices,
--  % and @{ and @} for the aux/toc files.
--  \catcode`\{ = \other \catcode`\} = \other
--  \catcode`\[ = 1 \catcode`\] = 2
--  \catcode`\! = 0 \catcode`\\ = \other
--  !gdef!lbracecmd[\{]%
--  !gdef!rbracecmd[\}]%
--  !gdef!lbraceatcmd[@{]%
--  !gdef!rbraceatcmd[@}]%
--!endgroup
--
--% @comma{} to avoid , parsing problems.
--\let\comma = ,
--
--% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
--% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
--\let\, = \ptexc
--\let\dotaccent = \ptexdot
--\def\ringaccent#1{{\accent23 #1}}
--\let\tieaccent = \ptext
--\let\ubaraccent = \ptexb
--\let\udotaccent = \d
--
--% Other special characters: @questiondown @exclamdown @ordf @ordm
--% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
--\def\questiondown{?`}
--\def\exclamdown{!`}
--\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
--\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
--
--% Dotless i and dotless j, used for accents.
--\def\imacro{i}
--\def\jmacro{j}
--\def\dotless#1{%
--  \def\temp{#1}%
--  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
--  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
--  \else \errmessage{@dotless can be used only with i or j}%
--  \fi\fi
--}
--
--% The \TeX{} logo, as in plain, but resetting the spacing so that a
--% period following counts as ending a sentence.  (Idea found in latex.)
--%
--\edef\TeX{\TeX \spacefactor=1000 }
--
--% @LaTeX{} logo.  Not quite the same results as the definition in
--% latex.ltx, since we use a different font for the raised A; it's most
--% convenient for us to use an explicitly smaller font, rather than using
--% the \scriptstyle font (since we don't reset \scriptstyle and
--% \scriptscriptstyle).
--%
--\def\LaTeX{%
--  L\kern-.36em
--  {\setbox0=\hbox{T}%
--   \vbox to \ht0{\hbox{%
--     \ifx\textnominalsize\xwordpt
--       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
--       % Revert to plain's \scriptsize, which is 7pt.
--       \count255=\the\fam $\fam\count255 \scriptstyle A$%
--     \else
--       % For 11pt, we can use our lllsize.
--       \selectfonts\lllsize A%
--     \fi
--     }%
--     \vss
--  }}%
--  \kern-.15em
--  \TeX
--}
--
--% Some math mode symbols.
--\def\bullet{$\ptexbullet$}
--\def\geq{\ifmmode \ge\else $\ge$\fi}
--\def\leq{\ifmmode \le\else $\le$\fi}
--\def\minus{\ifmmode -\else $-$\fi}
--
--% @dots{} outputs an ellipsis using the current font.
--% We do .5em per period so that it has the same spacing in the cm
--% typewriter fonts as three actual period characters; on the other hand,
--% in other typewriter fonts three periods are wider than 1.5em.  So do
--% whichever is larger.
--%
--\def\dots{%
--  \leavevmode
--  \setbox0=\hbox{...}% get width of three periods
--  \ifdim\wd0 > 1.5em
--    \dimen0 = \wd0
--  \else
--    \dimen0 = 1.5em
--  \fi
--  \hbox to \dimen0{%
--    \hskip 0pt plus.25fil
--    .\hskip 0pt plus1fil
--    .\hskip 0pt plus1fil
--    .\hskip 0pt plus.5fil
--  }%
--}
--
--% @enddots{} is an end-of-sentence ellipsis.
--%
--\def\enddots{%
--  \dots
--  \spacefactor=\endofsentencespacefactor
--}
--
--% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
--%
--% Since these characters are used in examples, they should be an even number of
--% \tt widths. Each \tt character is 1en, so two makes it 1em.
--%
--\def\point{$\star$}
--\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
--\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
--\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
--\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
--\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
--
--% The @error{} command.
--% Adapted from the TeXbook's \boxit.
--%
--\newbox\errorbox
--%
--{\tentt \global\dimen0 = 3em}% Width of the box.
--\dimen2 = .55pt % Thickness of rules
--% The text. (`r' is open on the right, `e' somewhat less so on the left.)
--\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
--%
--\setbox\errorbox=\hbox to \dimen0{\hfil
--   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
--   \advance\hsize by -2\dimen2 % Rules.
--   \vbox{%
--      \hrule height\dimen2
--      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
--         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
--         \kern3pt\vrule width\dimen2}% Space to right.
--      \hrule height\dimen2}
--    \hfil}
--%
--\def\error{\leavevmode\lower.7ex\copy\errorbox}
--
--% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
--%
--\def\pounds{{\it\$}}
--
--% @euro{} comes from a separate font, depending on the current style.
--% We use the free feym* fonts from the eurosym package by Henrik
--% Theiling, which support regular, slanted, bold and bold slanted (and
--% "outlined" (blackboard board, sort of) versions, which we don't need).
--% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
--%
--% Although only regular is the truly official Euro symbol, we ignore
--% that.  The Euro is designed to be slightly taller than the regular
--% font height.
--%
--% feymr - regular
--% feymo - slanted
--% feybr - bold
--% feybo - bold slanted
--%
--% There is no good (free) typewriter version, to my knowledge.
--% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
--% Hmm.
--%
--% Also doesn't work in math.  Do we need to do math with euro symbols?
--% Hope not.
--%
--%
--\def\euro{{\eurofont e}}
--\def\eurofont{%
--  % We set the font at each command, rather than predefining it in
--  % \textfonts and the other font-switching commands, so that
--  % installations which never need the symbol don't have to have the
--  % font installed.
--  %
--  % There is only one designed size (nominal 10pt), so we always scale
--  % that to the current nominal size.
--  %
--  % By the way, simply using "at 1em" works for cmr10 and the like, but
--  % does not work for cmbx10 and other extended/shrunken fonts.
--  %
--  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
--  %
--  \ifx\curfontstyle\bfstylename
--    % bold:
--    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
--  \else
--    % regular:
--    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
--  \fi
--  \thiseurofont
--}
--
--% Glyphs from the EC fonts.  We don't use \let for the aliases, because
--% sometimes we redefine the original macro, and the alias should reflect
--% the redefinition.
--%
--% Use LaTeX names for the Icelandic letters.
--\def\DH{{\ecfont \char"D0}} % Eth
--\def\dh{{\ecfont \char"F0}} % eth
--\def\TH{{\ecfont \char"DE}} % Thorn
--\def\th{{\ecfont \char"FE}} % thorn
--%
--\def\guillemetleft{{\ecfont \char"13}}
--\def\guillemotleft{\guillemetleft}
--\def\guillemetright{{\ecfont \char"14}}
--\def\guillemotright{\guillemetright}
--\def\guilsinglleft{{\ecfont \char"0E}}
--\def\guilsinglright{{\ecfont \char"0F}}
--\def\quotedblbase{{\ecfont \char"12}}
--\def\quotesinglbase{{\ecfont \char"0D}}
--%
--% This positioning is not perfect (see the ogonek LaTeX package), but
--% we have the precomposed glyphs for the most common cases.  We put the
--% tests to use those glyphs in the single \ogonek macro so we have fewer
--% dummy definitions to worry about for index entries, etc.
--%
--% ogonek is also used with other letters in Lithuanian (IOU), but using
--% the precomposed glyphs for those is not so easy since they aren't in
--% the same EC font.
--\def\ogonek#1{{%
--  \def\temp{#1}%
--  \ifx\temp\macrocharA\Aogonek
--  \else\ifx\temp\macrochara\aogonek
--  \else\ifx\temp\macrocharE\Eogonek
--  \else\ifx\temp\macrochare\eogonek
--  \else
--    \ecfont \setbox0=\hbox{#1}%
--    \ifdim\ht0=1ex\accent"0C #1%
--    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
--    \fi
--  \fi\fi\fi\fi
--  }%
--}
--\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
--\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
--\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
--\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
--%
--% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
--\def\ecfont{%
--  % We can't distinguish serif/sans and italic/slanted, but this
--  % is used for crude hacks anyway (like adding French and German
--  % quotes to documents typeset with CM, where we lose kerning), so
--  % hopefully nobody will notice/care.
--  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
--  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
--  \ifmonospace
--    % typewriter:
--    \font\thisecfont = ectt\ecsize \space at \nominalsize
--  \else
--    \ifx\curfontstyle\bfstylename
--      % bold:
--      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
--    \else
--      % regular:
--      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
--    \fi
--  \fi
--  \thisecfont
--}
--
--% @registeredsymbol - R in a circle.  The font for the R should really
--% be smaller yet, but lllsize is the best we can do for now.
--% Adapted from the plain.tex definition of \copyright.
--%
--\def\registeredsymbol{%
--  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
--               \hfil\crcr\Orb}}%
--    }$%
--}
--
--% @textdegree - the normal degrees sign.
--%
--\def\textdegree{$^\circ$}
--
--% Laurent Siebenmann reports \Orb undefined with:
--%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
--% so we'll define it if necessary.
--%
--\ifx\Orb\thisisundefined
--\def\Orb{\mathhexbox20D}
--\fi
--
--% Quotes.
--\chardef\quotedblleft="5C
--\chardef\quotedblright=`\"
--\chardef\quoteleft=`\`
--\chardef\quoteright=`\'
--
--
--\message{page headings,}
--
--\newskip\titlepagetopglue \titlepagetopglue = 1.5in
--\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
--
--% First the title page.  Must do @settitle before @titlepage.
--\newif\ifseenauthor
--\newif\iffinishedtitlepage
--
--% Do an implicit @contents or @shortcontents after @end titlepage if the
--% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
--%
--\newif\ifsetcontentsaftertitlepage
-- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
--\newif\ifsetshortcontentsaftertitlepage
-- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
--
--\parseargdef\shorttitlepage{%
--  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
--  \endgroup\page\hbox{}\page}
--
--\envdef\titlepage{%
--  % Open one extra group, as we want to close it in the middle of \Etitlepage.
--  \begingroup
--    \parindent=0pt \textfonts
--    % Leave some space at the very top of the page.
--    \vglue\titlepagetopglue
--    % No rule at page bottom unless we print one at the top with @title.
--    \finishedtitlepagetrue
--    %
--    % Most title ``pages'' are actually two pages long, with space
--    % at the top of the second.  We don't want the ragged left on the second.
--    \let\oldpage = \page
--    \def\page{%
--      \iffinishedtitlepage\else
--	 \finishtitlepage
--      \fi
--      \let\page = \oldpage
--      \page
--      \null
--    }%
--}
--
--\def\Etitlepage{%
--    \iffinishedtitlepage\else
--	\finishtitlepage
--    \fi
--    % It is important to do the page break before ending the group,
--    % because the headline and footline are only empty inside the group.
--    % If we use the new definition of \page, we always get a blank page
--    % after the title page, which we certainly don't want.
--    \oldpage
--  \endgroup
--  %
--  % Need this before the \...aftertitlepage checks so that if they are
--  % in effect the toc pages will come out with page numbers.
--  \HEADINGSon
--  %
--  % If they want short, they certainly want long too.
--  \ifsetshortcontentsaftertitlepage
--    \shortcontents
--    \contents
--    \global\let\shortcontents = \relax
--    \global\let\contents = \relax
--  \fi
--  %
--  \ifsetcontentsaftertitlepage
--    \contents
--    \global\let\contents = \relax
--    \global\let\shortcontents = \relax
--  \fi
--}
--
--\def\finishtitlepage{%
--  \vskip4pt \hrule height 2pt width \hsize
--  \vskip\titlepagebottomglue
--  \finishedtitlepagetrue
--}
--
--% Settings used for typesetting titles: no hyphenation, no indentation,
--% don't worry much about spacing, ragged right.  This should be used
--% inside a \vbox, and fonts need to be set appropriately first.  Because
--% it is always used for titles, nothing else, we call \rmisbold.  \par
--% should be specified before the end of the \vbox, since a vbox is a group.
--%
--\def\raggedtitlesettings{%
--  \rmisbold
--  \hyphenpenalty=10000
--  \parindent=0pt
--  \tolerance=5000
--  \ptexraggedright
--}
--
--% Macros to be used within @titlepage:
--
--\let\subtitlerm=\tenrm
--\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
--
--\parseargdef\title{%
--  \checkenv\titlepage
--  \vbox{\titlefonts \raggedtitlesettings #1\par}%
--  % print a rule at the page bottom also.
--  \finishedtitlepagefalse
--  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
--}
--
--\parseargdef\subtitle{%
--  \checkenv\titlepage
--  {\subtitlefont \rightline{#1}}%
--}
--
--% @author should come last, but may come many times.
--% It can also be used inside @quotation.
--%
--\parseargdef\author{%
--  \def\temp{\quotation}%
--  \ifx\thisenv\temp
--    \def\quotationauthor{#1}% printed in \Equotation.
--  \else
--    \checkenv\titlepage
--    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
--    {\secfonts\rmisbold \leftline{#1}}%
--  \fi
--}
--
--
--% Set up page headings and footings.
--
--\let\thispage=\folio
--
--\newtoks\evenheadline    % headline on even pages
--\newtoks\oddheadline     % headline on odd pages
--\newtoks\evenfootline    % footline on even pages
--\newtoks\oddfootline     % footline on odd pages
--
--% Now make TeX use those variables
--\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
--                            \else \the\evenheadline \fi}}
--\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
--                            \else \the\evenfootline \fi}\HEADINGShook}
--\let\HEADINGShook=\relax
--
--% Commands to set those variables.
--% For example, this is what  @headings on  does
--% @evenheading @thistitle|@thispage|@thischapter
--% @oddheading @thischapter|@thispage|@thistitle
--% @evenfooting @thisfile||
--% @oddfooting ||@thisfile
--
--
--\def\evenheading{\parsearg\evenheadingxxx}
--\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
--\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
--\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
--
--\def\oddheading{\parsearg\oddheadingxxx}
--\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
--\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
--\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
--
--\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
--
--\def\evenfooting{\parsearg\evenfootingxxx}
--\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
--\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
--\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
--
--\def\oddfooting{\parsearg\oddfootingxxx}
--\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
--\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
--  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
--  %
--  % Leave some space for the footline.  Hopefully ok to assume
--  % @evenfooting will not be used by itself.
--  \global\advance\pageheight by -12pt
--  \global\advance\vsize by -12pt
--}
--
--\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
--
--% @evenheadingmarks top     \thischapter <- chapter at the top of a page
--% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
--%
--% The same set of arguments for:
--%
--% @oddheadingmarks
--% @evenfootingmarks
--% @oddfootingmarks
--% @everyheadingmarks
--% @everyfootingmarks
--
--\def\evenheadingmarks{\headingmarks{even}{heading}}
--\def\oddheadingmarks{\headingmarks{odd}{heading}}
--\def\evenfootingmarks{\headingmarks{even}{footing}}
--\def\oddfootingmarks{\headingmarks{odd}{footing}}
--\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
--                          \headingmarks{odd}{heading}{#1} }
--\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
--                          \headingmarks{odd}{footing}{#1} }
--% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
--\def\headingmarks#1#2#3 {%
--  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
--  \global\expandafter\let\csname get#1#2marks\endcsname \temp
--}
--
--\everyheadingmarks bottom
--\everyfootingmarks bottom
--
--% @headings double      turns headings on for double-sided printing.
--% @headings single      turns headings on for single-sided printing.
--% @headings off         turns them off.
--% @headings on          same as @headings double, retained for compatibility.
--% @headings after       turns on double-sided headings after this page.
--% @headings doubleafter turns on double-sided headings after this page.
--% @headings singleafter turns on single-sided headings after this page.
--% By default, they are off at the start of a document,
--% and turned `on' after @end titlepage.
--
--\def\headings #1 {\csname HEADINGS#1\endcsname}
--
--\def\headingsoff{% non-global headings elimination
--  \evenheadline={\hfil}\evenfootline={\hfil}%
--   \oddheadline={\hfil}\oddfootline={\hfil}%
--}
--
--\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
--\HEADINGSoff  % it's the default
--
--% When we turn headings on, set the page number to 1.
--% For double-sided printing, put current file name in lower left corner,
--% chapter name on inside top of right hand pages, document
--% title on inside top of left hand pages, and page numbers on outside top
--% edge of all pages.
--\def\HEADINGSdouble{%
--\global\pageno=1
--\global\evenfootline={\hfil}
--\global\oddfootline={\hfil}
--\global\evenheadline={\line{\folio\hfil\thistitle}}
--\global\oddheadline={\line{\thischapter\hfil\folio}}
--\global\let\contentsalignmacro = \chapoddpage
--}
--\let\contentsalignmacro = \chappager
--
--% For single-sided printing, chapter title goes across top left of page,
--% page number on top right.
--\def\HEADINGSsingle{%
--\global\pageno=1
--\global\evenfootline={\hfil}
--\global\oddfootline={\hfil}
--\global\evenheadline={\line{\thischapter\hfil\folio}}
--\global\oddheadline={\line{\thischapter\hfil\folio}}
--\global\let\contentsalignmacro = \chappager
--}
--\def\HEADINGSon{\HEADINGSdouble}
--
--\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
--\let\HEADINGSdoubleafter=\HEADINGSafter
--\def\HEADINGSdoublex{%
--\global\evenfootline={\hfil}
--\global\oddfootline={\hfil}
--\global\evenheadline={\line{\folio\hfil\thistitle}}
--\global\oddheadline={\line{\thischapter\hfil\folio}}
--\global\let\contentsalignmacro = \chapoddpage
--}
--
--\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
--\def\HEADINGSsinglex{%
--\global\evenfootline={\hfil}
--\global\oddfootline={\hfil}
--\global\evenheadline={\line{\thischapter\hfil\folio}}
--\global\oddheadline={\line{\thischapter\hfil\folio}}
--\global\let\contentsalignmacro = \chappager
--}
--
--% Subroutines used in generating headings
--% This produces Day Month Year style of output.
--% Only define if not already defined, in case a txi-??.tex file has set
--% up a different format (e.g., txi-cs.tex does this).
--\ifx\today\thisisundefined
--\def\today{%
--  \number\day\space
--  \ifcase\month
--  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
--  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
--  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
--  \fi
--  \space\number\year}
--\fi
--
--% @settitle line...  specifies the title of the document, for headings.
--% It generates no output of its own.
--\def\thistitle{\putwordNoTitle}
--\def\settitle{\parsearg{\gdef\thistitle}}
--
--
--\message{tables,}
--% Tables -- @table, @ftable, @vtable, @item(x).
--
--% default indentation of table text
--\newdimen\tableindent \tableindent=.8in
--% default indentation of @itemize and @enumerate text
--\newdimen\itemindent  \itemindent=.3in
--% margin between end of table item and start of table text.
--\newdimen\itemmargin  \itemmargin=.1in
--
--% used internally for \itemindent minus \itemmargin
--\newdimen\itemmax
--
--% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
--% these defs.
--% They also define \itemindex
--% to index the item name in whatever manner is desired (perhaps none).
--
--\newif\ifitemxneedsnegativevskip
--
--\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
--
--\def\internalBitem{\smallbreak \parsearg\itemzzz}
--\def\internalBitemx{\itemxpar \parsearg\itemzzz}
--
--\def\itemzzz #1{\begingroup %
--  \advance\hsize by -\rightskip
--  \advance\hsize by -\tableindent
--  \setbox0=\hbox{\itemindicate{#1}}%
--  \itemindex{#1}%
--  \nobreak % This prevents a break before @itemx.
--  %
--  % If the item text does not fit in the space we have, put it on a line
--  % by itself, and do not allow a page break either before or after that
--  % line.  We do not start a paragraph here because then if the next
--  % command is, e.g., @kindex, the whatsit would get put into the
--  % horizontal list on a line by itself, resulting in extra blank space.
--  \ifdim \wd0>\itemmax
--    %
--    % Make this a paragraph so we get the \parskip glue and wrapping,
--    % but leave it ragged-right.
--    \begingroup
--      \advance\leftskip by-\tableindent
--      \advance\hsize by\tableindent
--      \advance\rightskip by0pt plus1fil\relax
--      \leavevmode\unhbox0\par
--    \endgroup
--    %
--    % We're going to be starting a paragraph, but we don't want the
--    % \parskip glue -- logically it's part of the @item we just started.
--    \nobreak \vskip-\parskip
--    %
--    % Stop a page break at the \parskip glue coming up.  However, if
--    % what follows is an environment such as @example, there will be no
--    % \parskip glue; then the negative vskip we just inserted would
--    % cause the example and the item to crash together.  So we use this
--    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
--    % \parskip glue after all.  Section titles are handled this way also.
--    %
--    \penalty 10001
--    \endgroup
--    \itemxneedsnegativevskipfalse
--  \else
--    % The item text fits into the space.  Start a paragraph, so that the
--    % following text (if any) will end up on the same line.
--    \noindent
--    % Do this with kerns and \unhbox so that if there is a footnote in
--    % the item text, it can migrate to the main vertical list and
--    % eventually be printed.
--    \nobreak\kern-\tableindent
--    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
--    \unhbox0
--    \nobreak\kern\dimen0
--    \endgroup
--    \itemxneedsnegativevskiptrue
--  \fi
--}
--
--\def\item{\errmessage{@item while not in a list environment}}
--\def\itemx{\errmessage{@itemx while not in a list environment}}
--
--% @table, @ftable, @vtable.
--\envdef\table{%
--  \let\itemindex\gobble
--  \tablecheck{table}%
--}
--\envdef\ftable{%
--  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
--  \tablecheck{ftable}%
--}
--\envdef\vtable{%
--  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
--  \tablecheck{vtable}%
--}
--\def\tablecheck#1{%
--  \ifnum \the\catcode`\^^M=\active
--    \endgroup
--    \errmessage{This command won't work in this context; perhaps the problem is
--      that we are \inenvironment\thisenv}%
--    \def\next{\doignore{#1}}%
--  \else
--    \let\next\tablex
--  \fi
--  \next
--}
--\def\tablex#1{%
--  \def\itemindicate{#1}%
--  \parsearg\tabley
--}
--\def\tabley#1{%
--  {%
--    \makevalueexpandable
--    \edef\temp{\noexpand\tablez #1\space\space\space}%
--    \expandafter
--  }\temp \endtablez
--}
--\def\tablez #1 #2 #3 #4\endtablez{%
--  \aboveenvbreak
--  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
--  \ifnum 0#2>0 \tableindent=#2\mil \fi
--  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
--  \itemmax=\tableindent
--  \advance \itemmax by -\itemmargin
--  \advance \leftskip by \tableindent
--  \exdentamount=\tableindent
--  \parindent = 0pt
--  \parskip = \smallskipamount
--  \ifdim \parskip=0pt \parskip=2pt \fi
--  \let\item = \internalBitem
--  \let\itemx = \internalBitemx
--}
--\def\Etable{\endgraf\afterenvbreak}
--\let\Eftable\Etable
--\let\Evtable\Etable
--\let\Eitemize\Etable
--\let\Eenumerate\Etable
--
--% This is the counter used by @enumerate, which is really @itemize
--
--\newcount \itemno
--
--\envdef\itemize{\parsearg\doitemize}
--
--\def\doitemize#1{%
--  \aboveenvbreak
--  \itemmax=\itemindent
--  \advance\itemmax by -\itemmargin
--  \advance\leftskip by \itemindent
--  \exdentamount=\itemindent
--  \parindent=0pt
--  \parskip=\smallskipamount
--  \ifdim\parskip=0pt \parskip=2pt \fi
--  %
--  % Try typesetting the item mark that if the document erroneously says
--  % something like @itemize @samp (intending @table), there's an error
--  % right away at the @itemize.  It's not the best error message in the
--  % world, but it's better than leaving it to the @item.  This means if
--  % the user wants an empty mark, they have to say @w{} not just @w.
--  \def\itemcontents{#1}%
--  \setbox0 = \hbox{\itemcontents}%
--  %
--  % @itemize with no arg is equivalent to @itemize @bullet.
--  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
--  %
--  \let\item=\itemizeitem
--}
--
--% Definition of @item while inside @itemize and @enumerate.
--%
--\def\itemizeitem{%
--  \advance\itemno by 1  % for enumerations
--  {\let\par=\endgraf \smallbreak}% reasonable place to break
--  {%
--   % If the document has an @itemize directly after a section title, a
--   % \nobreak will be last on the list, and \sectionheading will have
--   % done a \vskip-\parskip.  In that case, we don't want to zero
--   % parskip, or the item text will crash with the heading.  On the
--   % other hand, when there is normal text preceding the item (as there
--   % usually is), we do want to zero parskip, or there would be too much
--   % space.  In that case, we won't have a \nobreak before.  At least
--   % that's the theory.
--   \ifnum\lastpenalty<10000 \parskip=0in \fi
--   \noindent
--   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
--   %
--   \vadjust{\penalty 1200}}% not good to break after first line of item.
--  \flushcr
--}
--
--% \splitoff TOKENS\endmark defines \first to be the first token in
--% TOKENS, and \rest to be the remainder.
--%
--\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
--
--% Allow an optional argument of an uppercase letter, lowercase letter,
--% or number, to specify the first label in the enumerated list.  No
--% argument is the same as `1'.
--%
--\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
--\def\enumeratey #1 #2\endenumeratey{%
--  % If we were given no argument, pretend we were given `1'.
--  \def\thearg{#1}%
--  \ifx\thearg\empty \def\thearg{1}\fi
--  %
--  % Detect if the argument is a single token.  If so, it might be a
--  % letter.  Otherwise, the only valid thing it can be is a number.
--  % (We will always have one token, because of the test we just made.
--  % This is a good thing, since \splitoff doesn't work given nothing at
--  % all -- the first parameter is undelimited.)
--  \expandafter\splitoff\thearg\endmark
--  \ifx\rest\empty
--    % Only one token in the argument.  It could still be anything.
--    % A ``lowercase letter'' is one whose \lccode is nonzero.
--    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
--    %   not equal to itself.
--    % Otherwise, we assume it's a number.
--    %
--    % We need the \relax at the end of the \ifnum lines to stop TeX from
--    % continuing to look for a <number>.
--    %
--    \ifnum\lccode\expandafter`\thearg=0\relax
--      \numericenumerate % a number (we hope)
--    \else
--      % It's a letter.
--      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
--        \lowercaseenumerate % lowercase letter
--      \else
--        \uppercaseenumerate % uppercase letter
--      \fi
--    \fi
--  \else
--    % Multiple tokens in the argument.  We hope it's a number.
--    \numericenumerate
--  \fi
--}
--
--% An @enumerate whose labels are integers.  The starting integer is
--% given in \thearg.
--%
--\def\numericenumerate{%
--  \itemno = \thearg
--  \startenumeration{\the\itemno}%
--}
--
--% The starting (lowercase) letter is in \thearg.
--\def\lowercaseenumerate{%
--  \itemno = \expandafter`\thearg
--  \startenumeration{%
--    % Be sure we're not beyond the end of the alphabet.
--    \ifnum\itemno=0
--      \errmessage{No more lowercase letters in @enumerate; get a bigger
--                  alphabet}%
--    \fi
--    \char\lccode\itemno
--  }%
--}
--
--% The starting (uppercase) letter is in \thearg.
--\def\uppercaseenumerate{%
--  \itemno = \expandafter`\thearg
--  \startenumeration{%
--    % Be sure we're not beyond the end of the alphabet.
--    \ifnum\itemno=0
--      \errmessage{No more uppercase letters in @enumerate; get a bigger
--                  alphabet}
--    \fi
--    \char\uccode\itemno
--  }%
--}
--
--% Call \doitemize, adding a period to the first argument and supplying the
--% common last two arguments.  Also subtract one from the initial value in
--% \itemno, since @item increments \itemno.
--%
--\def\startenumeration#1{%
--  \advance\itemno by -1
--  \doitemize{#1.}\flushcr
--}
--
--% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
--% to @enumerate.
--%
--\def\alphaenumerate{\enumerate{a}}
--\def\capsenumerate{\enumerate{A}}
--\def\Ealphaenumerate{\Eenumerate}
--\def\Ecapsenumerate{\Eenumerate}
--
--
--% @multitable macros
--% Amy Hendrickson, 8/18/94, 3/6/96
--%
--% @multitable ... @end multitable will make as many columns as desired.
--% Contents of each column will wrap at width given in preamble.  Width
--% can be specified either with sample text given in a template line,
--% or in percent of \hsize, the current width of text on page.
--
--% Table can continue over pages but will only break between lines.
--
--% To make preamble:
--%
--% Either define widths of columns in terms of percent of \hsize:
--%   @multitable @columnfractions .25 .3 .45
--%   @item ...
--%
--%   Numbers following @columnfractions are the percent of the total
--%   current hsize to be used for each column. You may use as many
--%   columns as desired.
--
--
--% Or use a template:
--%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
--%   @item ...
--%   using the widest term desired in each column.
--
--% Each new table line starts with @item, each subsequent new column
--% starts with @tab. Empty columns may be produced by supplying @tab's
--% with nothing between them for as many times as empty columns are needed,
--% ie, @tab at tab@tab will produce two empty columns.
--
--% @item, @tab do not need to be on their own lines, but it will not hurt
--% if they are.
--
--% Sample multitable:
--
--%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
--%   @item first col stuff @tab second col stuff @tab third col
--%   @item
--%   first col stuff
--%   @tab
--%   second col stuff
--%   @tab
--%   third col
--%   @item first col stuff @tab second col stuff
--%   @tab Many paragraphs of text may be used in any column.
--%
--%         They will wrap at the width determined by the template.
--%   @item at tab@tab This will be in third column.
--%   @end multitable
--
--% Default dimensions may be reset by user.
--% @multitableparskip is vertical space between paragraphs in table.
--% @multitableparindent is paragraph indent in table.
--% @multitablecolmargin is horizontal space to be left between columns.
--% @multitablelinespace is space to leave between table items, baseline
--%                                                            to baseline.
--%   0pt means it depends on current normal line spacing.
--%
--\newskip\multitableparskip
--\newskip\multitableparindent
--\newdimen\multitablecolspace
--\newskip\multitablelinespace
--\multitableparskip=0pt
--\multitableparindent=6pt
--\multitablecolspace=12pt
--\multitablelinespace=0pt
--
--% Macros used to set up halign preamble:
--%
--\let\endsetuptable\relax
--\def\xendsetuptable{\endsetuptable}
--\let\columnfractions\relax
--\def\xcolumnfractions{\columnfractions}
--\newif\ifsetpercent
--
--% #1 is the @columnfraction, usually a decimal number like .5, but might
--% be just 1.  We just use it, whatever it is.
--%
--\def\pickupwholefraction#1 {%
--  \global\advance\colcount by 1
--  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
--  \setuptable
--}
--
--\newcount\colcount
--\def\setuptable#1{%
--  \def\firstarg{#1}%
--  \ifx\firstarg\xendsetuptable
--    \let\go = \relax
--  \else
--    \ifx\firstarg\xcolumnfractions
--      \global\setpercenttrue
--    \else
--      \ifsetpercent
--         \let\go\pickupwholefraction
--      \else
--         \global\advance\colcount by 1
--         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
--                   % separator; typically that is always in the input, anyway.
--         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
--      \fi
--    \fi
--    \ifx\go\pickupwholefraction
--      % Put the argument back for the \pickupwholefraction call, so
--      % we'll always have a period there to be parsed.
--      \def\go{\pickupwholefraction#1}%
--    \else
--      \let\go = \setuptable
--    \fi%
--  \fi
--  \go
--}
--
--% multitable-only commands.
--%
--% @headitem starts a heading row, which we typeset in bold.
--% Assignments have to be global since we are inside the implicit group
--% of an alignment entry.  \everycr resets \everytab so we don't have to
--% undo it ourselves.
--\def\headitemfont{\b}% for people to use in the template row; not changeable
--\def\headitem{%
--  \checkenv\multitable
--  \crcr
--  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
--  \the\everytab % for the first item
--}%
--%
--% A \tab used to include \hskip1sp.  But then the space in a template
--% line is not enough.  That is bad.  So let's go back to just `&' until
--% we again encounter the problem the 1sp was intended to solve.
--%					--karl, nathan at acm.org, 20apr99.
--\def\tab{\checkenv\multitable &\the\everytab}%
--
--% @multitable ... @end multitable definitions:
--%
--\newtoks\everytab  % insert after every tab.
--%
--\envdef\multitable{%
--  \vskip\parskip
--  \startsavinginserts
--  %
--  % @item within a multitable starts a normal row.
--  % We use \def instead of \let so that if one of the multitable entries
--  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
--  % \endtemplate) expanding \doitemize.
--  \def\item{\crcr}%
--  %
--  \tolerance=9500
--  \hbadness=9500
--  \setmultitablespacing
--  \parskip=\multitableparskip
--  \parindent=\multitableparindent
--  \overfullrule=0pt
--  \global\colcount=0
--  %
--  \everycr = {%
--    \noalign{%
--      \global\everytab={}%
--      \global\colcount=0 % Reset the column counter.
--      % Check for saved footnotes, etc.
--      \checkinserts
--      % Keeps underfull box messages off when table breaks over pages.
--      %\filbreak
--	% Maybe so, but it also creates really weird page breaks when the
--	% table breaks over pages. Wouldn't \vfil be better?  Wait until the
--	% problem manifests itself, so it can be fixed for real --karl.
--    }%
--  }%
--  %
--  \parsearg\domultitable
--}
--\def\domultitable#1{%
--  % To parse everything between @multitable and @item:
--  \setuptable#1 \endsetuptable
--  %
--  % This preamble sets up a generic column definition, which will
--  % be used as many times as user calls for columns.
--  % \vtop will set a single line and will also let text wrap and
--  % continue for many paragraphs if desired.
--  \halign\bgroup &%
--    \global\advance\colcount by 1
--    \multistrut
--    \vtop{%
--      % Use the current \colcount to find the correct column width:
--      \hsize=\expandafter\csname col\the\colcount\endcsname
--      %
--      % In order to keep entries from bumping into each other
--      % we will add a \leftskip of \multitablecolspace to all columns after
--      % the first one.
--      %
--      % If a template has been used, we will add \multitablecolspace
--      % to the width of each template entry.
--      %
--      % If the user has set preamble in terms of percent of \hsize we will
--      % use that dimension as the width of the column, and the \leftskip
--      % will keep entries from bumping into each other.  Table will start at
--      % left margin and final column will justify at right margin.
--      %
--      % Make sure we don't inherit \rightskip from the outer environment.
--      \rightskip=0pt
--      \ifnum\colcount=1
--	% The first column will be indented with the surrounding text.
--	\advance\hsize by\leftskip
--      \else
--	\ifsetpercent \else
--	  % If user has not set preamble in terms of percent of \hsize
--	  % we will advance \hsize by \multitablecolspace.
--	  \advance\hsize by \multitablecolspace
--	\fi
--       % In either case we will make \leftskip=\multitablecolspace:
--      \leftskip=\multitablecolspace
--      \fi
--      % Ignoring space at the beginning and end avoids an occasional spurious
--      % blank line, when TeX decides to break the line at the space before the
--      % box from the multistrut, so the strut ends up on a line by itself.
--      % For example:
--      % @multitable @columnfractions .11 .89
--      % @item @code{#}
--      % @tab Legal holiday which is valid in major parts of the whole country.
--      % Is automatically provided with highlighting sequences respectively
--      % marking characters.
--      \noindent\ignorespaces##\unskip\multistrut
--    }\cr
--}
--\def\Emultitable{%
--  \crcr
--  \egroup % end the \halign
--  \global\setpercentfalse
--}
--
--\def\setmultitablespacing{%
--  \def\multistrut{\strut}% just use the standard line spacing
--  %
--  % Compute \multitablelinespace (if not defined by user) for use in
--  % \multitableparskip calculation.  We used define \multistrut based on
--  % this, but (ironically) that caused the spacing to be off.
--  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
--\ifdim\multitablelinespace=0pt
--\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
--\global\advance\multitablelinespace by-\ht0
--\fi
--% Test to see if parskip is larger than space between lines of
--% table. If not, do nothing.
--%        If so, set to same dimension as multitablelinespace.
--\ifdim\multitableparskip>\multitablelinespace
--\global\multitableparskip=\multitablelinespace
--\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
--                                      % than skip between lines in the table.
--\fi%
--\ifdim\multitableparskip=0pt
--\global\multitableparskip=\multitablelinespace
--\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
--                                      % than skip between lines in the table.
--\fi}
--
--
--\message{conditionals,}
--
--% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
--% @ifnotxml always succeed.  They currently do nothing; we don't
--% attempt to check whether the conditionals are properly nested.  But we
--% have to remember that they are conditionals, so that @end doesn't
--% attempt to close an environment group.
--%
--\def\makecond#1{%
--  \expandafter\let\csname #1\endcsname = \relax
--  \expandafter\let\csname iscond.#1\endcsname = 1
--}
--\makecond{iftex}
--\makecond{ifnotdocbook}
--\makecond{ifnothtml}
--\makecond{ifnotinfo}
--\makecond{ifnotplaintext}
--\makecond{ifnotxml}
--
--% Ignore @ignore, @ifhtml, @ifinfo, and the like.
--%
--\def\direntry{\doignore{direntry}}
--\def\documentdescription{\doignore{documentdescription}}
--\def\docbook{\doignore{docbook}}
--\def\html{\doignore{html}}
--\def\ifdocbook{\doignore{ifdocbook}}
--\def\ifhtml{\doignore{ifhtml}}
--\def\ifinfo{\doignore{ifinfo}}
--\def\ifnottex{\doignore{ifnottex}}
--\def\ifplaintext{\doignore{ifplaintext}}
--\def\ifxml{\doignore{ifxml}}
--\def\ignore{\doignore{ignore}}
--\def\menu{\doignore{menu}}
--\def\xml{\doignore{xml}}
--
--% Ignore text until a line `@end #1', keeping track of nested conditionals.
--%
--% A count to remember the depth of nesting.
--\newcount\doignorecount
--
--\def\doignore#1{\begingroup
--  % Scan in ``verbatim'' mode:
--  \obeylines
--  \catcode`\@ = \other
--  \catcode`\{ = \other
--  \catcode`\} = \other
--  %
--  % Make sure that spaces turn into tokens that match what \doignoretext wants.
--  \spaceisspace
--  %
--  % Count number of #1's that we've seen.
--  \doignorecount = 0
--  %
--  % Swallow text until we reach the matching `@end #1'.
--  \dodoignore{#1}%
--}
--
--{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
--  \obeylines %
--  %
--  \gdef\dodoignore#1{%
--    % #1 contains the command name as a string, e.g., `ifinfo'.
--    %
--    % Define a command to find the next `@end #1'.
--    \long\def\doignoretext##1^^M at end #1{%
--      \doignoretextyyy##1^^M@#1\_STOP_}%
--    %
--    % And this command to find another #1 command, at the beginning of a
--    % line.  (Otherwise, we would consider a line `@c @ifset', for
--    % example, to count as an @ifset for nesting.)
--    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
--    %
--    % And now expand that command.
--    \doignoretext ^^M%
--  }%
--}
--
--\def\doignoreyyy#1{%
--  \def\temp{#1}%
--  \ifx\temp\empty			% Nothing found.
--    \let\next\doignoretextzzz
--  \else					% Found a nested condition, ...
--    \advance\doignorecount by 1
--    \let\next\doignoretextyyy		% ..., look for another.
--    % If we're here, #1 ends with ^^M\ifinfo (for example).
--  \fi
--  \next #1% the token \_STOP_ is present just after this macro.
--}
--
--% We have to swallow the remaining "\_STOP_".
--%
--\def\doignoretextzzz#1{%
--  \ifnum\doignorecount = 0	% We have just found the outermost @end.
--    \let\next\enddoignore
--  \else				% Still inside a nested condition.
--    \advance\doignorecount by -1
--    \let\next\doignoretext      % Look for the next @end.
--  \fi
--  \next
--}
--
--% Finish off ignored text.
--{ \obeylines%
--  % Ignore anything after the last `@end #1'; this matters in verbatim
--  % environments, where otherwise the newline after an ignored conditional
--  % would result in a blank line in the output.
--  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
--}
--
--
--% @set VAR sets the variable VAR to an empty value.
--% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
--%
--% Since we want to separate VAR from REST-OF-LINE (which might be
--% empty), we can't just use \parsearg; we have to insert a space of our
--% own to delimit the rest of the line, and then take it out again if we
--% didn't need it.
--% We rely on the fact that \parsearg sets \catcode`\ =10.
--%
--\parseargdef\set{\setyyy#1 \endsetyyy}
--\def\setyyy#1 #2\endsetyyy{%
--  {%
--    \makevalueexpandable
--    \def\temp{#2}%
--    \edef\next{\gdef\makecsname{SET#1}}%
--    \ifx\temp\empty
--      \next{}%
--    \else
--      \setzzz#2\endsetzzz
--    \fi
--  }%
--}
--% Remove the trailing space \setxxx inserted.
--\def\setzzz#1 \endsetzzz{\next{#1}}
--
--% @clear VAR clears (i.e., unsets) the variable VAR.
--%
--\parseargdef\clear{%
--  {%
--    \makevalueexpandable
--    \global\expandafter\let\csname SET#1\endcsname=\relax
--  }%
--}
--
--% @value{foo} gets the text saved in variable foo.
--\def\value{\begingroup\makevalueexpandable\valuexxx}
--\def\valuexxx#1{\expandablevalue{#1}\endgroup}
--{
--  \catcode`\- = \active \catcode`\_ = \active
--  %
--  \gdef\makevalueexpandable{%
--    \let\value = \expandablevalue
--    % We don't want these characters active, ...
--    \catcode`\-=\other \catcode`\_=\other
--    % ..., but we might end up with active ones in the argument if
--    % we're called from @code, as @code{@value{foo-bar_}}, though.
--    % So \let them to their normal equivalents.
--    \let-\normaldash \let_\normalunderscore
--  }
--}
--
--% We have this subroutine so that we can handle at least some @value's
--% properly in indexes (we call \makevalueexpandable in \indexdummies).
--% The command has to be fully expandable (if the variable is set), since
--% the result winds up in the index file.  This means that if the
--% variable's value contains other Texinfo commands, it's almost certain
--% it will fail (although perhaps we could fix that with sufficient work
--% to do a one-level expansion on the result, instead of complete).
--%
--\def\expandablevalue#1{%
--  \expandafter\ifx\csname SET#1\endcsname\relax
--    {[No value for ``#1'']}%
--    \message{Variable `#1', used in @value, is not set.}%
--  \else
--    \csname SET#1\endcsname
--  \fi
--}
--
--% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
--% with @set.
--%
--% To get special treatment of `@end ifset,' call \makeond and the redefine.
--%
--\makecond{ifset}
--\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
--\def\doifset#1#2{%
--  {%
--    \makevalueexpandable
--    \let\next=\empty
--    \expandafter\ifx\csname SET#2\endcsname\relax
--      #1% If not set, redefine \next.
--    \fi
--    \expandafter
--  }\next
--}
--\def\ifsetfail{\doignore{ifset}}
--
--% @ifclear VAR ... @end executes the `...' iff VAR has never been
--% defined with @set, or has been undefined with @clear.
--%
--% The `\else' inside the `\doifset' parameter is a trick to reuse the
--% above code: if the variable is not set, do nothing, if it is set,
--% then redefine \next to \ifclearfail.
--%
--\makecond{ifclear}
--\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
--\def\ifclearfail{\doignore{ifclear}}
--
--% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
--% without the @) is in fact defined.  We can only feasibly check at the
--% TeX level, so something like `mathcode' is going to considered
--% defined even though it is not a Texinfo command.
--%
--\makecond{ifcommanddefined}
--\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
--%
--\def\doifcmddefined#1#2{{%
--    \makevalueexpandable
--    \let\next=\empty
--    \expandafter\ifx\csname #2\endcsname\relax
--      #1% If not defined, \let\next as above.
--    \fi
--    \expandafter
--  }\next
--}
--\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
--
--% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
--\makecond{ifcommandnotdefined}
--\def\ifcommandnotdefined{%
--  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
--\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
--
--% Set the `txicommandconditionals' variable, so documents have a way to
--% test if the @ifcommand...defined conditionals are available.
--\set txicommandconditionals
--
--% @dircategory CATEGORY  -- specify a category of the dir file
--% which this file should belong to.  Ignore this in TeX.
--\let\dircategory=\comment
--
--% @defininfoenclose.
--\let\definfoenclose=\comment
--
--
--\message{indexing,}
--% Index generation facilities
--
--% Define \newwrite to be identical to plain tex's \newwrite
--% except not \outer, so it can be used within macros and \if's.
--\edef\newwrite{\makecsname{ptexnewwrite}}
--
--% \newindex {foo} defines an index named foo.
--% It automatically defines \fooindex such that
--% \fooindex ...rest of line... puts an entry in the index foo.
--% It also defines \fooindfile to be the number of the output channel for
--% the file that accumulates this index.  The file's extension is foo.
--% The name of an index should be no more than 2 characters long
--% for the sake of vms.
--%
--\def\newindex#1{%
--  \iflinks
--    \expandafter\newwrite \csname#1indfile\endcsname
--    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
--  \fi
--  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
--    \noexpand\doindex{#1}}
--}
--
--% @defindex foo  ==  \newindex{foo}
--%
--\def\defindex{\parsearg\newindex}
--
--% Define @defcodeindex, like @defindex except put all entries in @code.
--%
--\def\defcodeindex{\parsearg\newcodeindex}
--%
--\def\newcodeindex#1{%
--  \iflinks
--    \expandafter\newwrite \csname#1indfile\endcsname
--    \openout \csname#1indfile\endcsname \jobname.#1
--  \fi
--  \expandafter\xdef\csname#1index\endcsname{%
--    \noexpand\docodeindex{#1}}%
--}
--
--
--% @synindex foo bar    makes index foo feed into index bar.
--% Do this instead of @defindex foo if you don't want it as a separate index.
--%
--% @syncodeindex foo bar   similar, but put all entries made for index foo
--% inside @code.
--%
--\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
--\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
--
--% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
--% #3 the target index (bar).
--\def\dosynindex#1#2#3{%
--  % Only do \closeout if we haven't already done it, else we'll end up
--  % closing the target index.
--  \expandafter \ifx\csname donesynindex#2\endcsname \relax
--    % The \closeout helps reduce unnecessary open files; the limit on the
--    % Acorn RISC OS is a mere 16 files.
--    \expandafter\closeout\csname#2indfile\endcsname
--    \expandafter\let\csname donesynindex#2\endcsname = 1
--  \fi
--  % redefine \fooindfile:
--  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
--  \expandafter\let\csname#2indfile\endcsname=\temp
--  % redefine \fooindex:
--  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
--}
--
--% Define \doindex, the driver for all \fooindex macros.
--% Argument #1 is generated by the calling \fooindex macro,
--%  and it is "foo", the name of the index.
--
--% \doindex just uses \parsearg; it calls \doind for the actual work.
--% This is because \doind is more useful to call from other macros.
--
--% There is also \dosubind {index}{topic}{subtopic}
--% which makes an entry in a two-level index such as the operation index.
--
--\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
--\def\singleindexer #1{\doind{\indexname}{#1}}
--
--% like the previous two, but they put @code around the argument.
--\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
--\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
--
--% Take care of Texinfo commands that can appear in an index entry.
--% Since there are some commands we want to expand, and others we don't,
--% we have to laboriously prevent expansion for those that we don't.
--%
--\def\indexdummies{%
--  \escapechar = `\\     % use backslash in output files.
--  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
--  \def\ {\realbackslash\space }%
--  %
--  % Need these unexpandable (because we define \tt as a dummy)
--  % definitions when @{ or @} appear in index entry text.  Also, more
--  % complicated, when \tex is in effect and \{ is a \delimiter again.
--  % We can't use \lbracecmd and \rbracecmd because texindex assumes
--  % braces and backslashes are used only as delimiters.  Perhaps we
--  % should define @lbrace and @rbrace commands a la @comma.
--  \def\{{{\tt\char123}}%
--  \def\}{{\tt\char125}}%
--  %
--  % I don't entirely understand this, but when an index entry is
--  % generated from a macro call, the \endinput which \scanmacro inserts
--  % causes processing to be prematurely terminated.  This is,
--  % apparently, because \indexsorttmp is fully expanded, and \endinput
--  % is an expandable command.  The redefinition below makes \endinput
--  % disappear altogether for that purpose -- although logging shows that
--  % processing continues to some further point.  On the other hand, it
--  % seems \endinput does not hurt in the printed index arg, since that
--  % is still getting written without apparent harm.
--  %
--  % Sample source (mac-idx3.tex, reported by Graham Percival to
--  % help-texinfo, 22may06):
--  % @macro funindex {WORD}
--  % @findex xyz
--  % @end macro
--  % ...
--  % @funindex commtest
--  %
--  % The above is not enough to reproduce the bug, but it gives the flavor.
--  %
--  % Sample whatsit resulting:
--  % . at write3{\entry{xyz}{@folio }{@code {xyz at endinput }}}
--  %
--  % So:
--  \let\endinput = \empty
--  %
--  % Do the redefinitions.
--  \commondummies
--}
--
--% For the aux and toc files, @ is the escape character.  So we want to
--% redefine everything using @ as the escape character (instead of
--% \realbackslash, still used for index files).  When everything uses @,
--% this will be simpler.
--%
--\def\atdummies{%
--  \def\@{@@}%
--  \def\ {@ }%
--  \let\{ = \lbraceatcmd
--  \let\} = \rbraceatcmd
--  %
--  % Do the redefinitions.
--  \commondummies
--  \otherbackslash
--}
--
--% Called from \indexdummies and \atdummies.
--%
--\def\commondummies{%
--  %
--  % \definedummyword defines \#1 as \string\#1\space, thus effectively
--  % preventing its expansion.  This is used only for control words,
--  % not control letters, because the \space would be incorrect for
--  % control characters, but is needed to separate the control word
--  % from whatever follows.
--  %
--  % For control letters, we have \definedummyletter, which omits the
--  % space.
--  %
--  % These can be used both for control words that take an argument and
--  % those that do not.  If it is followed by {arg} in the input, then
--  % that will dutifully get written to the index (or wherever).
--  %
--  \def\definedummyword  ##1{\def##1{\string##1\space}}%
--  \def\definedummyletter##1{\def##1{\string##1}}%
--  \let\definedummyaccent\definedummyletter
--  %
--  \commondummiesnofonts
--  %
--  \definedummyletter\_%
--  \definedummyletter\-%
--  %
--  % Non-English letters.
--  \definedummyword\AA
--  \definedummyword\AE
--  \definedummyword\DH
--  \definedummyword\L
--  \definedummyword\O
--  \definedummyword\OE
--  \definedummyword\TH
--  \definedummyword\aa
--  \definedummyword\ae
--  \definedummyword\dh
--  \definedummyword\exclamdown
--  \definedummyword\l
--  \definedummyword\o
--  \definedummyword\oe
--  \definedummyword\ordf
--  \definedummyword\ordm
--  \definedummyword\questiondown
--  \definedummyword\ss
--  \definedummyword\th
--  %
--  % Although these internal commands shouldn't show up, sometimes they do.
--  \definedummyword\bf
--  \definedummyword\gtr
--  \definedummyword\hat
--  \definedummyword\less
--  \definedummyword\sf
--  \definedummyword\sl
--  \definedummyword\tclose
--  \definedummyword\tt
--  %
--  \definedummyword\LaTeX
--  \definedummyword\TeX
--  %
--  % Assorted special characters.
--  \definedummyword\arrow
--  \definedummyword\bullet
--  \definedummyword\comma
--  \definedummyword\copyright
--  \definedummyword\registeredsymbol
--  \definedummyword\dots
--  \definedummyword\enddots
--  \definedummyword\entrybreak
--  \definedummyword\equiv
--  \definedummyword\error
--  \definedummyword\euro
--  \definedummyword\expansion
--  \definedummyword\geq
--  \definedummyword\guillemetleft
--  \definedummyword\guillemetright
--  \definedummyword\guilsinglleft
--  \definedummyword\guilsinglright
--  \definedummyword\lbracechar
--  \definedummyword\leq
--  \definedummyword\minus
--  \definedummyword\ogonek
--  \definedummyword\pounds
--  \definedummyword\point
--  \definedummyword\print
--  \definedummyword\quotedblbase
--  \definedummyword\quotedblleft
--  \definedummyword\quotedblright
--  \definedummyword\quoteleft
--  \definedummyword\quoteright
--  \definedummyword\quotesinglbase
--  \definedummyword\rbracechar
--  \definedummyword\result
--  \definedummyword\textdegree
--  %
--  % We want to disable all macros so that they are not expanded by \write.
--  \macrolist
--  %
--  \normalturnoffactive
--  %
--  % Handle some cases of @value -- where it does not contain any
--  % (non-fully-expandable) commands.
--  \makevalueexpandable
--}
--
--% \commondummiesnofonts: common to \commondummies and \indexnofonts.
--%
--\def\commondummiesnofonts{%
--  % Control letters and accents.
--  \definedummyletter\!%
--  \definedummyaccent\"%
--  \definedummyaccent\'%
--  \definedummyletter\*%
--  \definedummyaccent\,%
--  \definedummyletter\.%
--  \definedummyletter\/%
--  \definedummyletter\:%
--  \definedummyaccent\=%
--  \definedummyletter\?%
--  \definedummyaccent\^%
--  \definedummyaccent\`%
--  \definedummyaccent\~%
--  \definedummyword\u
--  \definedummyword\v
--  \definedummyword\H
--  \definedummyword\dotaccent
--  \definedummyword\ogonek
--  \definedummyword\ringaccent
--  \definedummyword\tieaccent
--  \definedummyword\ubaraccent
--  \definedummyword\udotaccent
--  \definedummyword\dotless
--  %
--  % Texinfo font commands.
--  \definedummyword\b
--  \definedummyword\i
--  \definedummyword\r
--  \definedummyword\sansserif
--  \definedummyword\sc
--  \definedummyword\slanted
--  \definedummyword\t
--  %
--  % Commands that take arguments.
--  \definedummyword\abbr
--  \definedummyword\acronym
--  \definedummyword\anchor
--  \definedummyword\cite
--  \definedummyword\code
--  \definedummyword\command
--  \definedummyword\dfn
--  \definedummyword\dmn
--  \definedummyword\email
--  \definedummyword\emph
--  \definedummyword\env
--  \definedummyword\file
--  \definedummyword\image
--  \definedummyword\indicateurl
--  \definedummyword\inforef
--  \definedummyword\kbd
--  \definedummyword\key
--  \definedummyword\math
--  \definedummyword\option
--  \definedummyword\pxref
--  \definedummyword\ref
--  \definedummyword\samp
--  \definedummyword\strong
--  \definedummyword\tie
--  \definedummyword\uref
--  \definedummyword\url
--  \definedummyword\var
--  \definedummyword\verb
--  \definedummyword\w
--  \definedummyword\xref
--}
--
--% \indexnofonts is used when outputting the strings to sort the index
--% by, and when constructing control sequence names.  It eliminates all
--% control sequences and just writes whatever the best ASCII sort string
--% would be for a given command (usually its argument).
--%
--\def\indexnofonts{%
--  % Accent commands should become @asis.
--  \def\definedummyaccent##1{\let##1\asis}%
--  % We can just ignore other control letters.
--  \def\definedummyletter##1{\let##1\empty}%
--  % All control words become @asis by default; overrides below.
--  \let\definedummyword\definedummyaccent
--  %
--  \commondummiesnofonts
--  %
--  % Don't no-op \tt, since it isn't a user-level command
--  % and is used in the definitions of the active chars like <, >, |, etc.
--  % Likewise with the other plain tex font commands.
--  %\let\tt=\asis
--  %
--  \def\ { }%
--  \def\@{@}%
--  \def\_{\normalunderscore}%
--  \def\-{}% @- shouldn't affect sorting
--  %
--  % Unfortunately, texindex is not prepared to handle braces in the
--  % content at all.  So for index sorting, we map @{ and @} to strings
--  % starting with |, since that ASCII character is between ASCII { and }.
--  \def\{{|a}%
--  \def\lbracechar{|a}%
--  %
--  \def\}{|b}%
--  \def\rbracechar{|b}%
--  %
--  % Non-English letters.
--  \def\AA{AA}%
--  \def\AE{AE}%
--  \def\DH{DZZ}%
--  \def\L{L}%
--  \def\OE{OE}%
--  \def\O{O}%
--  \def\TH{ZZZ}%
--  \def\aa{aa}%
--  \def\ae{ae}%
--  \def\dh{dzz}%
--  \def\exclamdown{!}%
--  \def\l{l}%
--  \def\oe{oe}%
--  \def\ordf{a}%
--  \def\ordm{o}%
--  \def\o{o}%
--  \def\questiondown{?}%
--  \def\ss{ss}%
--  \def\th{zzz}%
--  %
--  \def\LaTeX{LaTeX}%
--  \def\TeX{TeX}%
--  %
--  % Assorted special characters.
--  % (The following {} will end up in the sort string, but that's ok.)
--  \def\arrow{->}%
--  \def\bullet{bullet}%
--  \def\comma{,}%
--  \def\copyright{copyright}%
--  \def\dots{...}%
--  \def\enddots{...}%
--  \def\equiv{==}%
--  \def\error{error}%
--  \def\euro{euro}%
--  \def\expansion{==>}%
--  \def\geq{>=}%
--  \def\guillemetleft{<<}%
--  \def\guillemetright{>>}%
--  \def\guilsinglleft{<}%
--  \def\guilsinglright{>}%
--  \def\leq{<=}%
--  \def\minus{-}%
--  \def\point{.}%
--  \def\pounds{pounds}%
--  \def\print{-|}%
--  \def\quotedblbase{"}%
--  \def\quotedblleft{"}%
--  \def\quotedblright{"}%
--  \def\quoteleft{`}%
--  \def\quoteright{'}%
--  \def\quotesinglbase{,}%
--  \def\registeredsymbol{R}%
--  \def\result{=>}%
--  \def\textdegree{o}%
--  %
--  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
--  \else \indexlquoteignore \fi
--  %
--  % We need to get rid of all macros, leaving only the arguments (if present).
--  % Of course this is not nearly correct, but it is the best we can do for now.
--  % makeinfo does not expand macros in the argument to @deffn, which ends up
--  % writing an index entry, and texindex isn't prepared for an index sort entry
--  % that starts with \.
--  %
--  % Since macro invocations are followed by braces, we can just redefine them
--  % to take a single TeX argument.  The case of a macro invocation that
--  % goes to end-of-line is not handled.
--  %
--  \macrolist
--}
--
--% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
--% ignore left quotes in the sort term.
--{\catcode`\`=\active
-- \gdef\indexlquoteignore{\let`=\empty}}
--
--\let\indexbackslash=0  %overridden during \printindex.
--\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
--
--% Most index entries go through here, but \dosubind is the general case.
--% #1 is the index name, #2 is the entry text.
--\def\doind#1#2{\dosubind{#1}{#2}{}}
--
--% Workhorse for all \fooindexes.
--% #1 is name of index, #2 is stuff to put there, #3 is subentry --
--% empty if called from \doind, as we usually are (the main exception
--% is with most defuns, which call us directly).
--%
--\def\dosubind#1#2#3{%
--  \iflinks
--  {%
--    % Store the main index entry text (including the third arg).
--    \toks0 = {#2}%
--    % If third arg is present, precede it with a space.
--    \def\thirdarg{#3}%
--    \ifx\thirdarg\empty \else
--      \toks0 = \expandafter{\the\toks0 \space #3}%
--    \fi
--    %
--    \edef\writeto{\csname#1indfile\endcsname}%
--    %
--    \safewhatsit\dosubindwrite
--  }%
--  \fi
--}
--
--% Write the entry in \toks0 to the index file:
--%
--\def\dosubindwrite{%
--  % Put the index entry in the margin if desired.
--  \ifx\SETmarginindex\relax\else
--    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
--  \fi
--  %
--  % Remember, we are within a group.
--  \indexdummies % Must do this here, since \bf, etc expand at this stage
--  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
--      % so it will be output as is; and it will print as backslash.
--  %
--  % Process the index entry with all font commands turned off, to
--  % get the string to sort by.
--  {\indexnofonts
--   \edef\temp{\the\toks0}% need full expansion
--   \xdef\indexsorttmp{\temp}%
--  }%
--  %
--  % Set up the complete index entry, with both the sort key and
--  % the original text, including any font commands.  We write
--  % three arguments to \entry to the .?? file (four in the
--  % subentry case), texindex reduces to two when writing the .??s
--  % sorted result.
--  \edef\temp{%
--    \write\writeto{%
--      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
--  }%
--  \temp
--}
--
--% Take care of unwanted page breaks/skips around a whatsit:
--%
--% If a skip is the last thing on the list now, preserve it
--% by backing up by \lastskip, doing the \write, then inserting
--% the skip again.  Otherwise, the whatsit generated by the
--% \write or \pdfdest will make \lastskip zero.  The result is that
--% sequences like this:
--% @end defun
--% @tindex whatever
--% @defun ...
--% will have extra space inserted, because the \medbreak in the
--% start of the @defun won't see the skip inserted by the @end of
--% the previous defun.
--%
--% But don't do any of this if we're not in vertical mode.  We
--% don't want to do a \vskip and prematurely end a paragraph.
--%
--% Avoid page breaks due to these extra skips, too.
--%
--% But wait, there is a catch there:
--% We'll have to check whether \lastskip is zero skip.  \ifdim is not
--% sufficient for this purpose, as it ignores stretch and shrink parts
--% of the skip.  The only way seems to be to check the textual
--% representation of the skip.
--%
--% The following is almost like \def\zeroskipmacro{0.0pt} except that
--% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
--%
--\edef\zeroskipmacro{\expandafter\the\csname z at skip\endcsname}
--%
--\newskip\whatsitskip
--\newcount\whatsitpenalty
--%
--% ..., ready, GO:
--%
--\def\safewhatsit#1{\ifhmode
--  #1%
-- \else
--  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
--  \whatsitskip = \lastskip
--  \edef\lastskipmacro{\the\lastskip}%
--  \whatsitpenalty = \lastpenalty
--  %
--  % If \lastskip is nonzero, that means the last item was a
--  % skip.  And since a skip is discardable, that means this
--  % -\whatsitskip glue we're inserting is preceded by a
--  % non-discardable item, therefore it is not a potential
--  % breakpoint, therefore no \nobreak needed.
--  \ifx\lastskipmacro\zeroskipmacro
--  \else
--    \vskip-\whatsitskip
--  \fi
--  %
--  #1%
--  %
--  \ifx\lastskipmacro\zeroskipmacro
--    % If \lastskip was zero, perhaps the last item was a penalty, and
--    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
--    % to re-insert the same penalty (values >10000 are used for various
--    % signals); since we just inserted a non-discardable item, any
--    % following glue (such as a \parskip) would be a breakpoint.  For example:
--    %   @deffn deffn-whatever
--    %   @vindex index-whatever
--    %   Description.
--    % would allow a break between the index-whatever whatsit
--    % and the "Description." paragraph.
--    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
--  \else
--    % On the other hand, if we had a nonzero \lastskip,
--    % this make-up glue would be preceded by a non-discardable item
--    % (the whatsit from the \write), so we must insert a \nobreak.
--    \nobreak\vskip\whatsitskip
--  \fi
--\fi}
--
--% The index entry written in the file actually looks like
--%  \entry {sortstring}{page}{topic}
--% or
--%  \entry {sortstring}{page}{topic}{subtopic}
--% The texindex program reads in these files and writes files
--% containing these kinds of lines:
--%  \initial {c}
--%     before the first topic whose initial is c
--%  \entry {topic}{pagelist}
--%     for a topic that is used without subtopics
--%  \primary {topic}
--%     for the beginning of a topic that is used with subtopics
--%  \secondary {subtopic}{pagelist}
--%     for each subtopic.
--
--% Define the user-accessible indexing commands
--% @findex, @vindex, @kindex, @cindex.
--
--\def\findex {\fnindex}
--\def\kindex {\kyindex}
--\def\cindex {\cpindex}
--\def\vindex {\vrindex}
--\def\tindex {\tpindex}
--\def\pindex {\pgindex}
--
--\def\cindexsub {\begingroup\obeylines\cindexsub}
--{\obeylines %
--\gdef\cindexsub "#1" #2^^M{\endgroup %
--\dosubind{cp}{#2}{#1}}}
--
--% Define the macros used in formatting output of the sorted index material.
--
--% @printindex causes a particular index (the ??s file) to get printed.
--% It does not print any chapter heading (usually an @unnumbered).
--%
--\parseargdef\printindex{\begingroup
--  \dobreak \chapheadingskip{10000}%
--  %
--  \smallfonts \rm
--  \tolerance = 9500
--  \plainfrenchspacing
--  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
--  %
--  % See if the index file exists and is nonempty.
--  % Change catcode of @ here so that if the index file contains
--  % \initial {@}
--  % as its first line, TeX doesn't complain about mismatched braces
--  % (because it thinks @} is a control sequence).
--  \catcode`\@ = 11
--  \openin 1 \jobname.#1s
--  \ifeof 1
--    % \enddoublecolumns gets confused if there is no text in the index,
--    % and it loses the chapter title and the aux file entries for the
--    % index.  The easiest way to prevent this problem is to make sure
--    % there is some text.
--    \putwordIndexNonexistent
--  \else
--    %
--    % If the index file exists but is empty, then \openin leaves \ifeof
--    % false.  We have to make TeX try to read something from the file, so
--    % it can discover if there is anything in it.
--    \read 1 to \temp
--    \ifeof 1
--      \putwordIndexIsEmpty
--    \else
--      % Index files are almost Texinfo source, but we use \ as the escape
--      % character.  It would be better to use @, but that's too big a change
--      % to make right now.
--      \def\indexbackslash{\backslashcurfont}%
--      \catcode`\\ = 0
--      \escapechar = `\\
--      \begindoublecolumns
--      \input \jobname.#1s
--      \enddoublecolumns
--    \fi
--  \fi
--  \closein 1
--\endgroup}
--
--% These macros are used by the sorted index file itself.
--% Change them to control the appearance of the index.
--
--\def\initial#1{{%
--  % Some minor font changes for the special characters.
--  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
--  %
--  % Remove any glue we may have, we'll be inserting our own.
--  \removelastskip
--  %
--  % We like breaks before the index initials, so insert a bonus.
--  \nobreak
--  \vskip 0pt plus 3\baselineskip
--  \penalty 0
--  \vskip 0pt plus -3\baselineskip
--  %
--  % Typeset the initial.  Making this add up to a whole number of
--  % baselineskips increases the chance of the dots lining up from column
--  % to column.  It still won't often be perfect, because of the stretch
--  % we need before each entry, but it's better.
--  %
--  % No shrink because it confuses \balancecolumns.
--  \vskip 1.67\baselineskip plus .5\baselineskip
--  \leftline{\secbf #1}%
--  % Do our best not to break after the initial.
--  \nobreak
--  \vskip .33\baselineskip plus .1\baselineskip
--}}
--
--% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
--% then page number (#2) flushed to the right margin.  It is used for index
--% and table of contents entries.  The paragraph is indented by \leftskip.
--%
--% A straightforward implementation would start like this:
--%	\def\entry#1#2{...
--% But this freezes the catcodes in the argument, and can cause problems to
--% @code, which sets - active.  This problem was fixed by a kludge---
--% ``-'' was active throughout whole index, but this isn't really right.
--% The right solution is to prevent \entry from swallowing the whole text.
--%                                 --kasal, 21nov03
--\def\entry{%
--  \begingroup
--    %
--    % Start a new paragraph if necessary, so our assignments below can't
--    % affect previous text.
--    \par
--    %
--    % Do not fill out the last line with white space.
--    \parfillskip = 0in
--    %
--    % No extra space above this paragraph.
--    \parskip = 0in
--    %
--    % Do not prefer a separate line ending with a hyphen to fewer lines.
--    \finalhyphendemerits = 0
--    %
--    % \hangindent is only relevant when the entry text and page number
--    % don't both fit on one line.  In that case, bob suggests starting the
--    % dots pretty far over on the line.  Unfortunately, a large
--    % indentation looks wrong when the entry text itself is broken across
--    % lines.  So we use a small indentation and put up with long leaders.
--    %
--    % \hangafter is reset to 1 (which is the value we want) at the start
--    % of each paragraph, so we need not do anything with that.
--    \hangindent = 2em
--    %
--    % When the entry text needs to be broken, just fill out the first line
--    % with blank space.
--    \rightskip = 0pt plus1fil
--    %
--    % A bit of stretch before each entry for the benefit of balancing
--    % columns.
--    \vskip 0pt plus1pt
--    %
--    % When reading the text of entry, convert explicit line breaks
--    % from @* into spaces.  The user might give these in long section
--    % titles, for instance.
--    \def\*{\unskip\space\ignorespaces}%
--    \def\entrybreak{\hfil\break}%
--    %
--    % Swallow the left brace of the text (first parameter):
--    \afterassignment\doentry
--    \let\temp =
--}
--\def\entrybreak{\unskip\space\ignorespaces}%
--\def\doentry{%
--    \bgroup % Instead of the swallowed brace.
--      \noindent
--      \aftergroup\finishentry
--      % And now comes the text of the entry.
--}
--\def\finishentry#1{%
--    % #1 is the page number.
--    %
--    % The following is kludged to not output a line of dots in the index if
--    % there are no page numbers.  The next person who breaks this will be
--    % cursed by a Unix daemon.
--    \setbox\boxA = \hbox{#1}%
--    \ifdim\wd\boxA = 0pt
--      \ %
--    \else
--      %
--      % If we must, put the page number on a line of its own, and fill out
--      % this line with blank space.  (The \hfil is overwhelmed with the
--      % fill leaders glue in \indexdotfill if the page number does fit.)
--      \hfil\penalty50
--      \null\nobreak\indexdotfill % Have leaders before the page number.
--      %
--      % The `\ ' here is removed by the implicit \unskip that TeX does as
--      % part of (the primitive) \par.  Without it, a spurious underfull
--      % \hbox ensues.
--      \ifpdf
--	\pdfgettoks#1.%
--	\ \the\toksA
--      \else
--	\ #1%
--      \fi
--    \fi
--    \par
--  \endgroup
--}
--
--% Like plain.tex's \dotfill, except uses up at least 1 em.
--\def\indexdotfill{\cleaders
--  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
--
--\def\primary #1{\line{#1\hfil}}
--
--\newskip\secondaryindent \secondaryindent=0.5cm
--\def\secondary#1#2{{%
--  \parfillskip=0in
--  \parskip=0in
--  \hangindent=1in
--  \hangafter=1
--  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
--  \ifpdf
--    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
--  \else
--    #2
--  \fi
--  \par
--}}
--
--% Define two-column mode, which we use to typeset indexes.
--% Adapted from the TeXbook, page 416, which is to say,
--% the manmac.tex format used to print the TeXbook itself.
--\catcode`\@=11
--
--\newbox\partialpage
--\newdimen\doublecolumnhsize
--
--\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
--  % Grab any single-column material above us.
--  \output = {%
--    %
--    % Here is a possibility not foreseen in manmac: if we accumulate a
--    % whole lot of material, we might end up calling this \output
--    % routine twice in a row (see the doublecol-lose test, which is
--    % essentially a couple of indexes with @setchapternewpage off).  In
--    % that case we just ship out what is in \partialpage with the normal
--    % output routine.  Generally, \partialpage will be empty when this
--    % runs and this will be a no-op.  See the indexspread.tex test case.
--    \ifvoid\partialpage \else
--      \onepageout{\pagecontents\partialpage}%
--    \fi
--    %
--    \global\setbox\partialpage = \vbox{%
--      % Unvbox the main output page.
--      \unvbox\PAGE
--      \kern-\topskip \kern\baselineskip
--    }%
--  }%
--  \eject % run that output routine to set \partialpage
--  %
--  % Use the double-column output routine for subsequent pages.
--  \output = {\doublecolumnout}%
--  %
--  % Change the page size parameters.  We could do this once outside this
--  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
--  % format, but then we repeat the same computation.  Repeating a couple
--  % of assignments once per index is clearly meaningless for the
--  % execution time, so we may as well do it in one place.
--  %
--  % First we halve the line length, less a little for the gutter between
--  % the columns.  We compute the gutter based on the line length, so it
--  % changes automatically with the paper format.  The magic constant
--  % below is chosen so that the gutter has the same value (well, +-<1pt)
--  % as it did when we hard-coded it.
--  %
--  % We put the result in a separate register, \doublecolumhsize, so we
--  % can restore it in \pagesofar, after \hsize itself has (potentially)
--  % been clobbered.
--  %
--  \doublecolumnhsize = \hsize
--    \advance\doublecolumnhsize by -.04154\hsize
--    \divide\doublecolumnhsize by 2
--  \hsize = \doublecolumnhsize
--  %
--  % Double the \vsize as well.  (We don't need a separate register here,
--  % since nobody clobbers \vsize.)
--  \vsize = 2\vsize
--}
--
--% The double-column output routine for all double-column pages except
--% the last.
--%
--\def\doublecolumnout{%
--  \splittopskip=\topskip \splitmaxdepth=\maxdepth
--  % Get the available space for the double columns -- the normal
--  % (undoubled) page height minus any material left over from the
--  % previous page.
--  \dimen@ = \vsize
--  \divide\dimen@ by 2
--  \advance\dimen@ by -\ht\partialpage
--  %
--  % box0 will be the left-hand column, box2 the right.
--  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
--  \onepageout\pagesofar
--  \unvbox255
--  \penalty\outputpenalty
--}
--%
--% Re-output the contents of the output page -- any previous material,
--% followed by the two boxes we just split, in box0 and box2.
--\def\pagesofar{%
--  \unvbox\partialpage
--  %
--  \hsize = \doublecolumnhsize
--  \wd0=\hsize \wd2=\hsize
--  \hbox to\pagewidth{\box0\hfil\box2}%
--}
--%
--% All done with double columns.
--\def\enddoublecolumns{%
--  % The following penalty ensures that the page builder is exercised
--  % _before_ we change the output routine.  This is necessary in the
--  % following situation:
--  %
--  % The last section of the index consists only of a single entry.
--  % Before this section, \pagetotal is less than \pagegoal, so no
--  % break occurs before the last section starts.  However, the last
--  % section, consisting of \initial and the single \entry, does not
--  % fit on the page and has to be broken off.  Without the following
--  % penalty the page builder will not be exercised until \eject
--  % below, and by that time we'll already have changed the output
--  % routine to the \balancecolumns version, so the next-to-last
--  % double-column page will be processed with \balancecolumns, which
--  % is wrong:  The two columns will go to the main vertical list, with
--  % the broken-off section in the recent contributions.  As soon as
--  % the output routine finishes, TeX starts reconsidering the page
--  % break.  The two columns and the broken-off section both fit on the
--  % page, because the two columns now take up only half of the page
--  % goal.  When TeX sees \eject from below which follows the final
--  % section, it invokes the new output routine that we've set after
--  % \balancecolumns below; \onepageout will try to fit the two columns
--  % and the final section into the vbox of \pageheight (see
--  % \pagebody), causing an overfull box.
--  %
--  % Note that glue won't work here, because glue does not exercise the
--  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
--  \penalty0
--  %
--  \output = {%
--    % Split the last of the double-column material.  Leave it on the
--    % current page, no automatic page break.
--    \balancecolumns
--    %
--    % If we end up splitting too much material for the current page,
--    % though, there will be another page break right after this \output
--    % invocation ends.  Having called \balancecolumns once, we do not
--    % want to call it again.  Therefore, reset \output to its normal
--    % definition right away.  (We hope \balancecolumns will never be
--    % called on to balance too much material, but if it is, this makes
--    % the output somewhat more palatable.)
--    \global\output = {\onepageout{\pagecontents\PAGE}}%
--  }%
--  \eject
--  \endgroup % started in \begindoublecolumns
--  %
--  % \pagegoal was set to the doubled \vsize above, since we restarted
--  % the current page.  We're now back to normal single-column
--  % typesetting, so reset \pagegoal to the normal \vsize (after the
--  % \endgroup where \vsize got restored).
--  \pagegoal = \vsize
--}
--%
--% Called at the end of the double column material.
--\def\balancecolumns{%
--  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
--  \dimen@ = \ht0
--  \advance\dimen@ by \topskip
--  \advance\dimen@ by-\baselineskip
--  \divide\dimen@ by 2 % target to split to
--  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen at .}%
--  \splittopskip = \topskip
--  % Loop until we get a decent breakpoint.
--  {%
--    \vbadness = 10000
--    \loop
--      \global\setbox3 = \copy0
--      \global\setbox1 = \vsplit3 to \dimen@
--    \ifdim\ht3>\dimen@
--      \global\advance\dimen@ by 1pt
--    \repeat
--  }%
--  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
--  \setbox0=\vbox to\dimen@{\unvbox1}%
--  \setbox2=\vbox to\dimen@{\unvbox3}%
--  %
--  \pagesofar
--}
--\catcode`\@ = \other
--
--
--\message{sectioning,}
--% Chapters, sections, etc.
--
--% Let's start with @part.
--\outer\parseargdef\part{\partzzz{#1}}
--\def\partzzz#1{%
--  \chapoddpage
--  \null
--  \vskip.3\vsize  % move it down on the page a bit
--  \begingroup
--    \noindent \titlefonts\rmisbold #1\par % the text
--    \let\lastnode=\empty      % no node to associate with
--    \writetocentry{part}{#1}{}% but put it in the toc
--    \headingsoff              % no headline or footline on the part page
--    \chapoddpage
--  \endgroup
--}
--
--% \unnumberedno is an oxymoron.  But we count the unnumbered
--% sections so that we can refer to them unambiguously in the pdf
--% outlines by their "section number".  We avoid collisions with chapter
--% numbers by starting them at 10000.  (If a document ever has 10000
--% chapters, we're in trouble anyway, I'm sure.)
--\newcount\unnumberedno \unnumberedno = 10000
--\newcount\chapno
--\newcount\secno        \secno=0
--\newcount\subsecno     \subsecno=0
--\newcount\subsubsecno  \subsubsecno=0
--
--% This counter is funny since it counts through charcodes of letters A, B, ...
--\newcount\appendixno  \appendixno = `\@
--%
--% \def\appendixletter{\char\the\appendixno}
--% We do the following ugly conditional instead of the above simple
--% construct for the sake of pdftex, which needs the actual
--% letter in the expansion, not just typeset.
--%
--\def\appendixletter{%
--  \ifnum\appendixno=`A A%
--  \else\ifnum\appendixno=`B B%
--  \else\ifnum\appendixno=`C C%
--  \else\ifnum\appendixno=`D D%
--  \else\ifnum\appendixno=`E E%
--  \else\ifnum\appendixno=`F F%
--  \else\ifnum\appendixno=`G G%
--  \else\ifnum\appendixno=`H H%
--  \else\ifnum\appendixno=`I I%
--  \else\ifnum\appendixno=`J J%
--  \else\ifnum\appendixno=`K K%
--  \else\ifnum\appendixno=`L L%
--  \else\ifnum\appendixno=`M M%
--  \else\ifnum\appendixno=`N N%
--  \else\ifnum\appendixno=`O O%
--  \else\ifnum\appendixno=`P P%
--  \else\ifnum\appendixno=`Q Q%
--  \else\ifnum\appendixno=`R R%
--  \else\ifnum\appendixno=`S S%
--  \else\ifnum\appendixno=`T T%
--  \else\ifnum\appendixno=`U U%
--  \else\ifnum\appendixno=`V V%
--  \else\ifnum\appendixno=`W W%
--  \else\ifnum\appendixno=`X X%
--  \else\ifnum\appendixno=`Y Y%
--  \else\ifnum\appendixno=`Z Z%
--  % The \the is necessary, despite appearances, because \appendixletter is
--  % expanded while writing the .toc file.  \char\appendixno is not
--  % expandable, thus it is written literally, thus all appendixes come out
--  % with the same letter (or @) in the toc without it.
--  \else\char\the\appendixno
--  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
--  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
--
--% Each @chapter defines these (using marks) as the number+name, number
--% and name of the chapter.  Page headings and footings can use
--% these.  @section does likewise.
--\def\thischapter{}
--\def\thischapternum{}
--\def\thischaptername{}
--\def\thissection{}
--\def\thissectionnum{}
--\def\thissectionname{}
--
--\newcount\absseclevel % used to calculate proper heading level
--\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
--
--% @raisesections: treat @section as chapter, @subsection as section, etc.
--\def\raisesections{\global\advance\secbase by -1}
--\let\up=\raisesections % original BFox name
--
--% @lowersections: treat @chapter as section, @section as subsection, etc.
--\def\lowersections{\global\advance\secbase by 1}
--\let\down=\lowersections % original BFox name
--
--% we only have subsub.
--\chardef\maxseclevel = 3
--%
--% A numbered section within an unnumbered changes to unnumbered too.
--% To achieve this, remember the "biggest" unnum. sec. we are currently in:
--\chardef\unnlevel = \maxseclevel
--%
--% Trace whether the current chapter is an appendix or not:
--% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
--\def\chapheadtype{N}
--
--% Choose a heading macro
--% #1 is heading type
--% #2 is heading level
--% #3 is text for heading
--\def\genhead#1#2#3{%
--  % Compute the abs. sec. level:
--  \absseclevel=#2
--  \advance\absseclevel by \secbase
--  % Make sure \absseclevel doesn't fall outside the range:
--  \ifnum \absseclevel < 0
--    \absseclevel = 0
--  \else
--    \ifnum \absseclevel > 3
--      \absseclevel = 3
--    \fi
--  \fi
--  % The heading type:
--  \def\headtype{#1}%
--  \if \headtype U%
--    \ifnum \absseclevel < \unnlevel
--      \chardef\unnlevel = \absseclevel
--    \fi
--  \else
--    % Check for appendix sections:
--    \ifnum \absseclevel = 0
--      \edef\chapheadtype{\headtype}%
--    \else
--      \if \headtype A\if \chapheadtype N%
--	\errmessage{@appendix... within a non-appendix chapter}%
--      \fi\fi
--    \fi
--    % Check for numbered within unnumbered:
--    \ifnum \absseclevel > \unnlevel
--      \def\headtype{U}%
--    \else
--      \chardef\unnlevel = 3
--    \fi
--  \fi
--  % Now print the heading:
--  \if \headtype U%
--    \ifcase\absseclevel
--	\unnumberedzzz{#3}%
--    \or \unnumberedseczzz{#3}%
--    \or \unnumberedsubseczzz{#3}%
--    \or \unnumberedsubsubseczzz{#3}%
--    \fi
--  \else
--    \if \headtype A%
--      \ifcase\absseclevel
--	  \appendixzzz{#3}%
--      \or \appendixsectionzzz{#3}%
--      \or \appendixsubseczzz{#3}%
--      \or \appendixsubsubseczzz{#3}%
--      \fi
--    \else
--      \ifcase\absseclevel
--	  \chapterzzz{#3}%
--      \or \seczzz{#3}%
--      \or \numberedsubseczzz{#3}%
--      \or \numberedsubsubseczzz{#3}%
--      \fi
--    \fi
--  \fi
--  \suppressfirstparagraphindent
--}
--
--% an interface:
--\def\numhead{\genhead N}
--\def\apphead{\genhead A}
--\def\unnmhead{\genhead U}
--
--% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
--% all lower-level sectioning counters to zero.
--%
--% Also set \chaplevelprefix, which we prepend to @float sequence numbers
--% (e.g., figures), q.v.  By default (before any chapter), that is empty.
--\let\chaplevelprefix = \empty
--%
--\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
--\def\chapterzzz#1{%
--  % section resetting is \global in case the chapter is in a group, such
--  % as an @include file.
--  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
--    \global\advance\chapno by 1
--  %
--  % Used for \float.
--  \gdef\chaplevelprefix{\the\chapno.}%
--  \resetallfloatnos
--  %
--  % \putwordChapter can contain complex things in translations.
--  \toks0=\expandafter{\putwordChapter}%
--  \message{\the\toks0 \space \the\chapno}%
--  %
--  % Write the actual heading.
--  \chapmacro{#1}{Ynumbered}{\the\chapno}%
--  %
--  % So @section and the like are numbered underneath this chapter.
--  \global\let\section = \numberedsec
--  \global\let\subsection = \numberedsubsec
--  \global\let\subsubsection = \numberedsubsubsec
--}
--
--\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
--%
--\def\appendixzzz#1{%
--  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
--    \global\advance\appendixno by 1
--  \gdef\chaplevelprefix{\appendixletter.}%
--  \resetallfloatnos
--  %
--  % \putwordAppendix can contain complex things in translations.
--  \toks0=\expandafter{\putwordAppendix}%
--  \message{\the\toks0 \space \appendixletter}%
--  %
--  \chapmacro{#1}{Yappendix}{\appendixletter}%
--  %
--  \global\let\section = \appendixsec
--  \global\let\subsection = \appendixsubsec
--  \global\let\subsubsection = \appendixsubsubsec
--}
--
--% normally unnmhead0 calls unnumberedzzz:
--\outer\parseargdef\unnumbered{\unnmhead0{#1}}
--\def\unnumberedzzz#1{%
--  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
--    \global\advance\unnumberedno by 1
--  %
--  % Since an unnumbered has no number, no prefix for figures.
--  \global\let\chaplevelprefix = \empty
--  \resetallfloatnos
--  %
--  % This used to be simply \message{#1}, but TeX fully expands the
--  % argument to \message.  Therefore, if #1 contained @-commands, TeX
--  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
--  % expanded @cite (which turns out to cause errors because \cite is meant
--  % to be executed, not expanded).
--  %
--  % Anyway, we don't want the fully-expanded definition of @cite to appear
--  % as a result of the \message, we just want `@cite' itself.  We use
--  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
--  % simply yielding the contents of <toks register>.  (We also do this for
--  % the toc entries.)
--  \toks0 = {#1}%
--  \message{(\the\toks0)}%
--  %
--  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
--  %
--  \global\let\section = \unnumberedsec
--  \global\let\subsection = \unnumberedsubsec
--  \global\let\subsubsection = \unnumberedsubsubsec
--}
--
--% @centerchap is like @unnumbered, but the heading is centered.
--\outer\parseargdef\centerchap{%
--  % Well, we could do the following in a group, but that would break
--  % an assumption that \chapmacro is called at the outermost level.
--  % Thus we are safer this way:		--kasal, 24feb04
--  \let\centerparametersmaybe = \centerparameters
--  \unnmhead0{#1}%
--  \let\centerparametersmaybe = \relax
--}
--
--% @top is like @unnumbered.
--\let\top\unnumbered
--
--% Sections.
--%
--\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
--\def\seczzz#1{%
--  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
--  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
--}
--
--% normally calls appendixsectionzzz:
--\outer\parseargdef\appendixsection{\apphead1{#1}}
--\def\appendixsectionzzz#1{%
--  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
--  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
--}
--\let\appendixsec\appendixsection
--
--% normally calls unnumberedseczzz:
--\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
--\def\unnumberedseczzz#1{%
--  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
--  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
--}
--
--% Subsections.
--%
--% normally calls numberedsubseczzz:
--\outer\parseargdef\numberedsubsec{\numhead2{#1}}
--\def\numberedsubseczzz#1{%
--  \global\subsubsecno=0  \global\advance\subsecno by 1
--  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
--}
--
--% normally calls appendixsubseczzz:
--\outer\parseargdef\appendixsubsec{\apphead2{#1}}
--\def\appendixsubseczzz#1{%
--  \global\subsubsecno=0  \global\advance\subsecno by 1
--  \sectionheading{#1}{subsec}{Yappendix}%
--                 {\appendixletter.\the\secno.\the\subsecno}%
--}
--
--% normally calls unnumberedsubseczzz:
--\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
--\def\unnumberedsubseczzz#1{%
--  \global\subsubsecno=0  \global\advance\subsecno by 1
--  \sectionheading{#1}{subsec}{Ynothing}%
--                 {\the\unnumberedno.\the\secno.\the\subsecno}%
--}
--
--% Subsubsections.
--%
--% normally numberedsubsubseczzz:
--\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
--\def\numberedsubsubseczzz#1{%
--  \global\advance\subsubsecno by 1
--  \sectionheading{#1}{subsubsec}{Ynumbered}%
--                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
--}
--
--% normally appendixsubsubseczzz:
--\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
--\def\appendixsubsubseczzz#1{%
--  \global\advance\subsubsecno by 1
--  \sectionheading{#1}{subsubsec}{Yappendix}%
--                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
--}
--
--% normally unnumberedsubsubseczzz:
--\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
--\def\unnumberedsubsubseczzz#1{%
--  \global\advance\subsubsecno by 1
--  \sectionheading{#1}{subsubsec}{Ynothing}%
--                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
--}
--
--% These macros control what the section commands do, according
--% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
--% Define them by default for a numbered chapter.
--\let\section = \numberedsec
--\let\subsection = \numberedsubsec
--\let\subsubsection = \numberedsubsubsec
--
--% Define @majorheading, @heading and @subheading
--
--\def\majorheading{%
--  {\advance\chapheadingskip by 10pt \chapbreak }%
--  \parsearg\chapheadingzzz
--}
--
--\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
--\def\chapheadingzzz#1{%
--  \vbox{\chapfonts \raggedtitlesettings #1\par}%
--  \nobreak\bigskip \nobreak
--  \suppressfirstparagraphindent
--}
--
--% @heading, @subheading, @subsubheading.
--\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
--  \suppressfirstparagraphindent}
--\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
--  \suppressfirstparagraphindent}
--\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
--  \suppressfirstparagraphindent}
--
--% These macros generate a chapter, section, etc. heading only
--% (including whitespace, linebreaking, etc. around it),
--% given all the information in convenient, parsed form.
--
--% Args are the skip and penalty (usually negative)
--\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
--
--% Parameter controlling skip before chapter headings (if needed)
--\newskip\chapheadingskip
--
--% Define plain chapter starts, and page on/off switching for it.
--\def\chapbreak{\dobreak \chapheadingskip {-4000}}
--\def\chappager{\par\vfill\supereject}
--% Because \domark is called before \chapoddpage, the filler page will
--% get the headings for the next chapter, which is wrong.  But we don't
--% care -- we just disable all headings on the filler page.
--\def\chapoddpage{%
--  \chappager
--  \ifodd\pageno \else
--    \begingroup
--      \headingsoff
--      \null
--      \chappager
--    \endgroup
--  \fi
--}
--
--\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
--
--\def\CHAPPAGoff{%
--\global\let\contentsalignmacro = \chappager
--\global\let\pchapsepmacro=\chapbreak
--\global\let\pagealignmacro=\chappager}
--
--\def\CHAPPAGon{%
--\global\let\contentsalignmacro = \chappager
--\global\let\pchapsepmacro=\chappager
--\global\let\pagealignmacro=\chappager
--\global\def\HEADINGSon{\HEADINGSsingle}}
--
--\def\CHAPPAGodd{%
--\global\let\contentsalignmacro = \chapoddpage
--\global\let\pchapsepmacro=\chapoddpage
--\global\let\pagealignmacro=\chapoddpage
--\global\def\HEADINGSon{\HEADINGSdouble}}
--
--\CHAPPAGon
--
--% Chapter opening.
--%
--% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
--% Yappendix, Yomitfromtoc), #3 the chapter number.
--%
--% To test against our argument.
--\def\Ynothingkeyword{Ynothing}
--\def\Yomitfromtockeyword{Yomitfromtoc}
--\def\Yappendixkeyword{Yappendix}
--%
--\def\chapmacro#1#2#3{%
--  % Insert the first mark before the heading break (see notes for \domark).
--  \let\prevchapterdefs=\lastchapterdefs
--  \let\prevsectiondefs=\lastsectiondefs
--  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
--                        \gdef\thissection{}}%
--  %
--  \def\temptype{#2}%
--  \ifx\temptype\Ynothingkeyword
--    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
--                          \gdef\thischapter{\thischaptername}}%
--  \else\ifx\temptype\Yomitfromtockeyword
--    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
--                          \gdef\thischapter{}}%
--  \else\ifx\temptype\Yappendixkeyword
--    \toks0={#1}%
--    \xdef\lastchapterdefs{%
--      \gdef\noexpand\thischaptername{\the\toks0}%
--      \gdef\noexpand\thischapternum{\appendixletter}%
--      % \noexpand\putwordAppendix avoids expanding indigestible
--      % commands in some of the translations.
--      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
--                                 \noexpand\thischapternum:
--                                 \noexpand\thischaptername}%
--    }%
--  \else
--    \toks0={#1}%
--    \xdef\lastchapterdefs{%
--      \gdef\noexpand\thischaptername{\the\toks0}%
--      \gdef\noexpand\thischapternum{\the\chapno}%
--      % \noexpand\putwordChapter avoids expanding indigestible
--      % commands in some of the translations.
--      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
--                                 \noexpand\thischapternum:
--                                 \noexpand\thischaptername}%
--    }%
--  \fi\fi\fi
--  %
--  % Output the mark.  Pass it through \safewhatsit, to take care of
--  % the preceding space.
--  \safewhatsit\domark
--  %
--  % Insert the chapter heading break.
--  \pchapsepmacro
--  %
--  % Now the second mark, after the heading break.  No break points
--  % between here and the heading.
--  \let\prevchapterdefs=\lastchapterdefs
--  \let\prevsectiondefs=\lastsectiondefs
--  \domark
--  %
--  {%
--    \chapfonts \rmisbold
--    %
--    % Have to define \lastsection before calling \donoderef, because the
--    % xref code eventually uses it.  On the other hand, it has to be called
--    % after \pchapsepmacro, or the headline will change too soon.
--    \gdef\lastsection{#1}%
--    %
--    % Only insert the separating space if we have a chapter/appendix
--    % number, and don't print the unnumbered ``number''.
--    \ifx\temptype\Ynothingkeyword
--      \setbox0 = \hbox{}%
--      \def\toctype{unnchap}%
--    \else\ifx\temptype\Yomitfromtockeyword
--      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
--      \def\toctype{omit}%
--    \else\ifx\temptype\Yappendixkeyword
--      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
--      \def\toctype{app}%
--    \else
--      \setbox0 = \hbox{#3\enspace}%
--      \def\toctype{numchap}%
--    \fi\fi\fi
--    %
--    % Write the toc entry for this chapter.  Must come before the
--    % \donoderef, because we include the current node name in the toc
--    % entry, and \donoderef resets it to empty.
--    \writetocentry{\toctype}{#1}{#3}%
--    %
--    % For pdftex, we have to write out the node definition (aka, make
--    % the pdfdest) after any page break, but before the actual text has
--    % been typeset.  If the destination for the pdf outline is after the
--    % text, then jumping from the outline may wind up with the text not
--    % being visible, for instance under high magnification.
--    \donoderef{#2}%
--    %
--    % Typeset the actual heading.
--    \nobreak % Avoid page breaks at the interline glue.
--    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
--          \unhbox0 #1\par}%
--  }%
--  \nobreak\bigskip % no page break after a chapter title
--  \nobreak
--}
--
--% @centerchap -- centered and unnumbered.
--\let\centerparametersmaybe = \relax
--\def\centerparameters{%
--  \advance\rightskip by 3\rightskip
--  \leftskip = \rightskip
--  \parfillskip = 0pt
--}
--
--
--% I don't think this chapter style is supported any more, so I'm not
--% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
--%
--\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
--%
--\def\unnchfopen #1{%
--  \chapoddpage
--  \vbox{\chapfonts \raggedtitlesettings #1\par}%
--  \nobreak\bigskip\nobreak
--}
--\def\chfopen #1#2{\chapoddpage {\chapfonts
--\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
--\par\penalty 5000 %
--}
--\def\centerchfopen #1{%
--  \chapoddpage
--  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
--  \nobreak\bigskip \nobreak
--}
--\def\CHAPFopen{%
--  \global\let\chapmacro=\chfopen
--  \global\let\centerchapmacro=\centerchfopen}
--
--
--% Section titles.  These macros combine the section number parts and
--% call the generic \sectionheading to do the printing.
--%
--\newskip\secheadingskip
--\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
--
--% Subsection titles.
--\newskip\subsecheadingskip
--\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
--
--% Subsubsection titles.
--\def\subsubsecheadingskip{\subsecheadingskip}
--\def\subsubsecheadingbreak{\subsecheadingbreak}
--
--
--% Print any size, any type, section title.
--%
--% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
--% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
--% section number.
--%
--\def\seckeyword{sec}
--%
--\def\sectionheading#1#2#3#4{%
--  {%
--    \checkenv{}% should not be in an environment.
--    %
--    % Switch to the right set of fonts.
--    \csname #2fonts\endcsname \rmisbold
--    %
--    \def\sectionlevel{#2}%
--    \def\temptype{#3}%
--    %
--    % Insert first mark before the heading break (see notes for \domark).
--    \let\prevsectiondefs=\lastsectiondefs
--    \ifx\temptype\Ynothingkeyword
--      \ifx\sectionlevel\seckeyword
--        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
--                              \gdef\thissection{\thissectionname}}%
--      \fi
--    \else\ifx\temptype\Yomitfromtockeyword
--      % Don't redefine \thissection.
--    \else\ifx\temptype\Yappendixkeyword
--      \ifx\sectionlevel\seckeyword
--        \toks0={#1}%
--        \xdef\lastsectiondefs{%
--          \gdef\noexpand\thissectionname{\the\toks0}%
--          \gdef\noexpand\thissectionnum{#4}%
--          % \noexpand\putwordSection avoids expanding indigestible
--          % commands in some of the translations.
--          \gdef\noexpand\thissection{\noexpand\putwordSection{}
--                                     \noexpand\thissectionnum:
--                                     \noexpand\thissectionname}%
--        }%
--      \fi
--    \else
--      \ifx\sectionlevel\seckeyword
--        \toks0={#1}%
--        \xdef\lastsectiondefs{%
--          \gdef\noexpand\thissectionname{\the\toks0}%
--          \gdef\noexpand\thissectionnum{#4}%
--          % \noexpand\putwordSection avoids expanding indigestible
--          % commands in some of the translations.
--          \gdef\noexpand\thissection{\noexpand\putwordSection{}
--                                     \noexpand\thissectionnum:
--                                     \noexpand\thissectionname}%
--        }%
--      \fi
--    \fi\fi\fi
--    %
--    % Go into vertical mode.  Usually we'll already be there, but we
--    % don't want the following whatsit to end up in a preceding paragraph
--    % if the document didn't happen to have a blank line.
--    \par
--    %
--    % Output the mark.  Pass it through \safewhatsit, to take care of
--    % the preceding space.
--    \safewhatsit\domark
--    %
--    % Insert space above the heading.
--    \csname #2headingbreak\endcsname
--    %
--    % Now the second mark, after the heading break.  No break points
--    % between here and the heading.
--    \let\prevsectiondefs=\lastsectiondefs
--    \domark
--    %
--    % Only insert the space after the number if we have a section number.
--    \ifx\temptype\Ynothingkeyword
--      \setbox0 = \hbox{}%
--      \def\toctype{unn}%
--      \gdef\lastsection{#1}%
--    \else\ifx\temptype\Yomitfromtockeyword
--      % for @headings -- no section number, don't include in toc,
--      % and don't redefine \lastsection.
--      \setbox0 = \hbox{}%
--      \def\toctype{omit}%
--      \let\sectionlevel=\empty
--    \else\ifx\temptype\Yappendixkeyword
--      \setbox0 = \hbox{#4\enspace}%
--      \def\toctype{app}%
--      \gdef\lastsection{#1}%
--    \else
--      \setbox0 = \hbox{#4\enspace}%
--      \def\toctype{num}%
--      \gdef\lastsection{#1}%
--    \fi\fi\fi
--    %
--    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
--    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
--    %
--    % Write the node reference (= pdf destination for pdftex).
--    % Again, see comments in \chapmacro.
--    \donoderef{#3}%
--    %
--    % Interline glue will be inserted when the vbox is completed.
--    % That glue will be a valid breakpoint for the page, since it'll be
--    % preceded by a whatsit (usually from the \donoderef, or from the
--    % \writetocentry if there was no node).  We don't want to allow that
--    % break, since then the whatsits could end up on page n while the
--    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
--    \nobreak
--    %
--    % Output the actual section heading.
--    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
--          \hangindent=\wd0  % zero if no section number
--          \unhbox0 #1}%
--  }%
--  % Add extra space after the heading -- half of whatever came above it.
--  % Don't allow stretch, though.
--  \kern .5 \csname #2headingskip\endcsname
--  %
--  % Do not let the kern be a potential breakpoint, as it would be if it
--  % was followed by glue.
--  \nobreak
--  %
--  % We'll almost certainly start a paragraph next, so don't let that
--  % glue accumulate.  (Not a breakpoint because it's preceded by a
--  % discardable item.)  However, when a paragraph is not started next
--  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
--  % or the negative glue will cause weirdly wrong output, typically
--  % obscuring the section heading with something else.
--  \vskip-\parskip
--  %
--  % This is so the last item on the main vertical list is a known
--  % \penalty > 10000, so \startdefun, etc., can recognize the situation
--  % and do the needful.
--  \penalty 10001
--}
--
--
--\message{toc,}
--% Table of contents.
--\newwrite\tocfile
--
--% Write an entry to the toc file, opening it if necessary.
--% Called from @chapter, etc.
--%
--% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
--% We append the current node name (if any) and page number as additional
--% arguments for the \{chap,sec,...}entry macros which will eventually
--% read this.  The node name is used in the pdf outlines as the
--% destination to jump to.
--%
--% We open the .toc file for writing here instead of at @setfilename (or
--% any other fixed time) so that @contents can be anywhere in the document.
--% But if #1 is `omit', then we don't do anything.  This is used for the
--% table of contents chapter openings themselves.
--%
--\newif\iftocfileopened
--\def\omitkeyword{omit}%
--%
--\def\writetocentry#1#2#3{%
--  \edef\writetoctype{#1}%
--  \ifx\writetoctype\omitkeyword \else
--    \iftocfileopened\else
--      \immediate\openout\tocfile = \jobname.toc
--      \global\tocfileopenedtrue
--    \fi
--    %
--    \iflinks
--      {\atdummies
--       \edef\temp{%
--         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
--       \temp
--      }%
--    \fi
--  \fi
--  %
--  % Tell \shipout to create a pdf destination on each page, if we're
--  % writing pdf.  These are used in the table of contents.  We can't
--  % just write one on every page because the title pages are numbered
--  % 1 and 2 (the page numbers aren't printed), and so are the first
--  % two pages of the document.  Thus, we'd have two destinations named
--  % `1', and two named `2'.
--  \ifpdf \global\pdfmakepagedesttrue \fi
--}
--
--
--% These characters do not print properly in the Computer Modern roman
--% fonts, so we must take special care.  This is more or less redundant
--% with the Texinfo input format setup at the end of this file.
--%
--\def\activecatcodes{%
--  \catcode`\"=\active
--  \catcode`\$=\active
--  \catcode`\<=\active
--  \catcode`\>=\active
--  \catcode`\\=\active
--  \catcode`\^=\active
--  \catcode`\_=\active
--  \catcode`\|=\active
--  \catcode`\~=\active
--}
--
--
--% Read the toc file, which is essentially Texinfo input.
--\def\readtocfile{%
--  \setupdatafile
--  \activecatcodes
--  \input \tocreadfilename
--}
--
--\newskip\contentsrightmargin \contentsrightmargin=1in
--\newcount\savepageno
--\newcount\lastnegativepageno \lastnegativepageno = -1
--
--% Prepare to read what we've written to \tocfile.
--%
--\def\startcontents#1{%
--  % If @setchapternewpage on, and @headings double, the contents should
--  % start on an odd page, unlike chapters.  Thus, we maintain
--  % \contentsalignmacro in parallel with \pagealignmacro.
--  % From: Torbjorn Granlund <tege at matematik.su.se>
--  \contentsalignmacro
--  \immediate\closeout\tocfile
--  %
--  % Don't need to put `Contents' or `Short Contents' in the headline.
--  % It is abundantly clear what they are.
--  \chapmacro{#1}{Yomitfromtoc}{}%
--  %
--  \savepageno = \pageno
--  \begingroup                  % Set up to handle contents files properly.
--    \raggedbottom              % Worry more about breakpoints than the bottom.
--    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
--    %
--    % Roman numerals for page numbers.
--    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
--}
--
--% redefined for the two-volume lispref.  We always output on
--% \jobname.toc even if this is redefined.
--%
--\def\tocreadfilename{\jobname.toc}
--
--% Normal (long) toc.
--%
--\def\contents{%
--  \startcontents{\putwordTOC}%
--    \openin 1 \tocreadfilename\space
--    \ifeof 1 \else
--      \readtocfile
--    \fi
--    \vfill \eject
--    \contentsalignmacro % in case @setchapternewpage odd is in effect
--    \ifeof 1 \else
--      \pdfmakeoutlines
--    \fi
--    \closein 1
--  \endgroup
--  \lastnegativepageno = \pageno
--  \global\pageno = \savepageno
--}
--
--% And just the chapters.
--\def\summarycontents{%
--  \startcontents{\putwordShortTOC}%
--    %
--    \let\partentry = \shortpartentry
--    \let\numchapentry = \shortchapentry
--    \let\appentry = \shortchapentry
--    \let\unnchapentry = \shortunnchapentry
--    % We want a true roman here for the page numbers.
--    \secfonts
--    \let\rm=\shortcontrm \let\bf=\shortcontbf
--    \let\sl=\shortcontsl \let\tt=\shortconttt
--    \rm
--    \hyphenpenalty = 10000
--    \advance\baselineskip by 1pt % Open it up a little.
--    \def\numsecentry##1##2##3##4{}
--    \let\appsecentry = \numsecentry
--    \let\unnsecentry = \numsecentry
--    \let\numsubsecentry = \numsecentry
--    \let\appsubsecentry = \numsecentry
--    \let\unnsubsecentry = \numsecentry
--    \let\numsubsubsecentry = \numsecentry
--    \let\appsubsubsecentry = \numsecentry
--    \let\unnsubsubsecentry = \numsecentry
--    \openin 1 \tocreadfilename\space
--    \ifeof 1 \else
--      \readtocfile
--    \fi
--    \closein 1
--    \vfill \eject
--    \contentsalignmacro % in case @setchapternewpage odd is in effect
--  \endgroup
--  \lastnegativepageno = \pageno
--  \global\pageno = \savepageno
--}
--\let\shortcontents = \summarycontents
--
--% Typeset the label for a chapter or appendix for the short contents.
--% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
--%
--\def\shortchaplabel#1{%
--  % This space should be enough, since a single number is .5em, and the
--  % widest letter (M) is 1em, at least in the Computer Modern fonts.
--  % But use \hss just in case.
--  % (This space doesn't include the extra space that gets added after
--  % the label; that gets put in by \shortchapentry above.)
--  %
--  % We'd like to right-justify chapter numbers, but that looks strange
--  % with appendix letters.  And right-justifying numbers and
--  % left-justifying letters looks strange when there is less than 10
--  % chapters.  Have to read the whole toc once to know how many chapters
--  % there are before deciding ...
--  \hbox to 1em{#1\hss}%
--}
--
--% These macros generate individual entries in the table of contents.
--% The first argument is the chapter or section name.
--% The last argument is the page number.
--% The arguments in between are the chapter number, section number, ...
--
--% Parts, in the main contents.  Replace the part number, which doesn't
--% exist, with an empty box.  Let's hope all the numbers have the same width.
--% Also ignore the page number, which is conventionally not printed.
--\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
--\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
--%
--% Parts, in the short toc.
--\def\shortpartentry#1#2#3#4{%
--  \penalty-300
--  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
--  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
--}
--
--% Chapters, in the main contents.
--\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
--%
--% Chapters, in the short toc.
--% See comments in \dochapentry re vbox and related settings.
--\def\shortchapentry#1#2#3#4{%
--  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
--}
--
--% Appendices, in the main contents.
--% Need the word Appendix, and a fixed-size box.
--%
--\def\appendixbox#1{%
--  % We use M since it's probably the widest letter.
--  \setbox0 = \hbox{\putwordAppendix{} M}%
--  \hbox to \wd0{\putwordAppendix{} #1\hss}}
--%
--\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
--
--% Unnumbered chapters.
--\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
--\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
--
--% Sections.
--\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
--\let\appsecentry=\numsecentry
--\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
--
--% Subsections.
--\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
--\let\appsubsecentry=\numsubsecentry
--\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
--
--% And subsubsections.
--\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
--\let\appsubsubsecentry=\numsubsubsecentry
--\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
--
--% This parameter controls the indentation of the various levels.
--% Same as \defaultparindent.
--\newdimen\tocindent \tocindent = 15pt
--
--% Now for the actual typesetting. In all these, #1 is the text and #2 is the
--% page number.
--%
--% If the toc has to be broken over pages, we want it to be at chapters
--% if at all possible; hence the \penalty.
--\def\dochapentry#1#2{%
--   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
--   \begingroup
--     \chapentryfonts
--     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
--   \endgroup
--   \nobreak\vskip .25\baselineskip plus.1\baselineskip
--}
--
--\def\dosecentry#1#2{\begingroup
--  \secentryfonts \leftskip=\tocindent
--  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
--\endgroup}
--
--\def\dosubsecentry#1#2{\begingroup
--  \subsecentryfonts \leftskip=2\tocindent
--  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
--\endgroup}
--
--\def\dosubsubsecentry#1#2{\begingroup
--  \subsubsecentryfonts \leftskip=3\tocindent
--  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
--\endgroup}
--
--% We use the same \entry macro as for the index entries.
--\let\tocentry = \entry
--
--% Space between chapter (or whatever) number and the title.
--\def\labelspace{\hskip1em \relax}
--
--\def\dopageno#1{{\rm #1}}
--\def\doshortpageno#1{{\rm #1}}
--
--\def\chapentryfonts{\secfonts \rm}
--\def\secentryfonts{\textfonts}
--\def\subsecentryfonts{\textfonts}
--\def\subsubsecentryfonts{\textfonts}
--
--
--\message{environments,}
--% @foo ... @end foo.
--
--% @tex ... @end tex    escapes into raw TeX temporarily.
--% One exception: @ is still an escape character, so that @end tex works.
--% But \@ or @@ will get a plain @ character.
--
--\envdef\tex{%
--  \setupmarkupstyle{tex}%
--  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
--  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
--  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
--  \catcode `\%=14
--  \catcode `\+=\other
--  \catcode `\"=\other
--  \catcode `\|=\other
--  \catcode `\<=\other
--  \catcode `\>=\other
--  \catcode`\`=\other
--  \catcode`\'=\other
--  \escapechar=`\\
--  %
--  % ' is active in math mode (mathcode"8000).  So reset it, and all our
--  % other math active characters (just in case), to plain's definitions.
--  \mathactive
--  %
--  \let\b=\ptexb
--  \let\bullet=\ptexbullet
--  \let\c=\ptexc
--  \let\,=\ptexcomma
--  \let\.=\ptexdot
--  \let\dots=\ptexdots
--  \let\equiv=\ptexequiv
--  \let\!=\ptexexclam
--  \let\i=\ptexi
--  \let\indent=\ptexindent
--  \let\noindent=\ptexnoindent
--  \let\{=\ptexlbrace
--  \let\+=\tabalign
--  \let\}=\ptexrbrace
--  \let\/=\ptexslash
--  \let\*=\ptexstar
--  \let\t=\ptext
--  \expandafter \let\csname top\endcsname=\ptextop  % outer
--  \let\frenchspacing=\plainfrenchspacing
--  %
--  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
--  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
--  \def\@{@}%
--}
--% There is no need to define \Etex.
--
--% Define @lisp ... @end lisp.
--% @lisp environment forms a group so it can rebind things,
--% including the definition of @end lisp (which normally is erroneous).
--
--% Amount to narrow the margins by for @lisp.
--\newskip\lispnarrowing \lispnarrowing=0.4in
--
--% This is the definition that ^^M gets inside @lisp, @example, and other
--% such environments.  \null is better than a space, since it doesn't
--% have any width.
--\def\lisppar{\null\endgraf}
--
--% This space is always present above and below environments.
--\newskip\envskipamount \envskipamount = 0pt
--
--% Make spacing and below environment symmetrical.  We use \parskip here
--% to help in doing that, since in @example-like environments \parskip
--% is reset to zero; thus the \afterenvbreak inserts no space -- but the
--% start of the next paragraph will insert \parskip.
--%
--\def\aboveenvbreak{{%
--  % =10000 instead of <10000 because of a special case in \itemzzz and
--  % \sectionheading, q.v.
--  \ifnum \lastpenalty=10000 \else
--    \advance\envskipamount by \parskip
--    \endgraf
--    \ifdim\lastskip<\envskipamount
--      \removelastskip
--      % it's not a good place to break if the last penalty was \nobreak
--      % or better ...
--      \ifnum\lastpenalty<10000 \penalty-50 \fi
--      \vskip\envskipamount
--    \fi
--  \fi
--}}
--
--\let\afterenvbreak = \aboveenvbreak
--
--% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
--% also clear it, so that its embedded environments do the narrowing again.
--\let\nonarrowing=\relax
--
--% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
--% environment contents.
--\font\circle=lcircle10
--\newdimen\circthick
--\newdimen\cartouter\newdimen\cartinner
--\newskip\normbskip\newskip\normpskip\newskip\normlskip
--\circthick=\fontdimen8\circle
--%
--\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
--\def\ctr{{\hskip 6pt\circle\char'010}}
--\def\cbl{{\circle\char'012\hskip -6pt}}
--\def\cbr{{\hskip 6pt\circle\char'011}}
--\def\carttop{\hbox to \cartouter{\hskip\lskip
--        \ctl\leaders\hrule height\circthick\hfil\ctr
--        \hskip\rskip}}
--\def\cartbot{\hbox to \cartouter{\hskip\lskip
--        \cbl\leaders\hrule height\circthick\hfil\cbr
--        \hskip\rskip}}
--%
--\newskip\lskip\newskip\rskip
--
--\envdef\cartouche{%
--  \ifhmode\par\fi  % can't be in the midst of a paragraph.
--  \startsavinginserts
--  \lskip=\leftskip \rskip=\rightskip
--  \leftskip=0pt\rightskip=0pt % we want these *outside*.
--  \cartinner=\hsize \advance\cartinner by-\lskip
--  \advance\cartinner by-\rskip
--  \cartouter=\hsize
--  \advance\cartouter by 18.4pt	% allow for 3pt kerns on either
--				% side, and for 6pt waste from
--				% each corner char, and rule thickness
--  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
--  % Flag to tell @lisp, etc., not to narrow margin.
--  \let\nonarrowing = t%
--  %
--  % If this cartouche directly follows a sectioning command, we need the
--  % \parskip glue (backspaced over by default) or the cartouche can
--  % collide with the section heading.
--  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
--  %
--  \vbox\bgroup
--      \baselineskip=0pt\parskip=0pt\lineskip=0pt
--      \carttop
--      \hbox\bgroup
--	  \hskip\lskip
--	  \vrule\kern3pt
--	  \vbox\bgroup
--	      \kern3pt
--	      \hsize=\cartinner
--	      \baselineskip=\normbskip
--	      \lineskip=\normlskip
--	      \parskip=\normpskip
--	      \vskip -\parskip
--	      \comment % For explanation, see the end of def\group.
--}
--\def\Ecartouche{%
--              \ifhmode\par\fi
--	      \kern3pt
--	  \egroup
--	  \kern3pt\vrule
--	  \hskip\rskip
--      \egroup
--      \cartbot
--  \egroup
--  \checkinserts
--}
--
--
--% This macro is called at the beginning of all the @example variants,
--% inside a group.
--\newdimen\nonfillparindent
--\def\nonfillstart{%
--  \aboveenvbreak
--  \hfuzz = 12pt % Don't be fussy
--  \sepspaces % Make spaces be word-separators rather than space tokens.
--  \let\par = \lisppar % don't ignore blank lines
--  \obeylines % each line of input is a line of output
--  \parskip = 0pt
--  % Turn off paragraph indentation but redefine \indent to emulate
--  % the normal \indent.
--  \nonfillparindent=\parindent
--  \parindent = 0pt
--  \let\indent\nonfillindent
--  %
--  \emergencystretch = 0pt % don't try to avoid overfull boxes
--  \ifx\nonarrowing\relax
--    \advance \leftskip by \lispnarrowing
--    \exdentamount=\lispnarrowing
--  \else
--    \let\nonarrowing = \relax
--  \fi
--  \let\exdent=\nofillexdent
--}
--
--\begingroup
--\obeyspaces
--% We want to swallow spaces (but not other tokens) after the fake
--% @indent in our nonfill-environments, where spaces are normally
--% active and set to @tie, resulting in them not being ignored after
--% @indent.
--\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
--\gdef\nonfillindentcheck{%
--\ifx\temp %
--\expandafter\nonfillindentgobble%
--\else%
--\leavevmode\nonfillindentbox%
--\fi%
--}%
--\endgroup
--\def\nonfillindentgobble#1{\nonfillindent}
--\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
--
--% If you want all examples etc. small: @set dispenvsize small.
--% If you want even small examples the full size: @set dispenvsize nosmall.
--% This affects the following displayed environments:
--%    @example, @display, @format, @lisp
--%
--\def\smallword{small}
--\def\nosmallword{nosmall}
--\let\SETdispenvsize\relax
--\def\setnormaldispenv{%
--  \ifx\SETdispenvsize\smallword
--    % end paragraph for sake of leading, in case document has no blank
--    % line.  This is redundant with what happens in \aboveenvbreak, but
--    % we need to do it before changing the fonts, and it's inconvenient
--    % to change the fonts afterward.
--    \ifnum \lastpenalty=10000 \else \endgraf \fi
--    \smallexamplefonts \rm
--  \fi
--}
--\def\setsmalldispenv{%
--  \ifx\SETdispenvsize\nosmallword
--  \else
--    \ifnum \lastpenalty=10000 \else \endgraf \fi
--    \smallexamplefonts \rm
--  \fi
--}
--
--% We often define two environments, @foo and @smallfoo.
--% Let's do it in one command.  #1 is the env name, #2 the definition.
--\def\makedispenvdef#1#2{%
--  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
--  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
--  \expandafter\let\csname E#1\endcsname \afterenvbreak
--  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
--}
--
--% Define two environment synonyms (#1 and #2) for an environment.
--\def\maketwodispenvdef#1#2#3{%
--  \makedispenvdef{#1}{#3}%
--  \makedispenvdef{#2}{#3}%
--}
--%
--% @lisp: indented, narrowed, typewriter font;
--% @example: same as @lisp.
--%
--% @smallexample and @smalllisp: use smaller fonts.
--% Originally contributed by Pavel at xerox.
--%
--\maketwodispenvdef{lisp}{example}{%
--  \nonfillstart
--  \tt\setupmarkupstyle{example}%
--  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
--  \gobble % eat return
--}
--% @display/@smalldisplay: same as @lisp except keep current font.
--%
--\makedispenvdef{display}{%
--  \nonfillstart
--  \gobble
--}
--
--% @format/@smallformat: same as @display except don't narrow margins.
--%
--\makedispenvdef{format}{%
--  \let\nonarrowing = t%
--  \nonfillstart
--  \gobble
--}
--
--% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
--\envdef\flushleft{%
--  \let\nonarrowing = t%
--  \nonfillstart
--  \gobble
--}
--\let\Eflushleft = \afterenvbreak
--
--% @flushright.
--%
--\envdef\flushright{%
--  \let\nonarrowing = t%
--  \nonfillstart
--  \advance\leftskip by 0pt plus 1fill\relax
--  \gobble
--}
--\let\Eflushright = \afterenvbreak
--
--
--% @raggedright does more-or-less normal line breaking but no right
--% justification.  From plain.tex.
--\envdef\raggedright{%
--  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
--}
--\let\Eraggedright\par
--
--\envdef\raggedleft{%
--  \parindent=0pt \leftskip0pt plus2em
--  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
--  \hbadness=10000 % Last line will usually be underfull, so turn off
--                  % badness reporting.
--}
--\let\Eraggedleft\par
--
--\envdef\raggedcenter{%
--  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
--  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
--  \hbadness=10000 % Last line will usually be underfull, so turn off
--                  % badness reporting.
--}
--\let\Eraggedcenter\par
--
--
--% @quotation does normal linebreaking (hence we can't use \nonfillstart)
--% and narrows the margins.  We keep \parskip nonzero in general, since
--% we're doing normal filling.  So, when using \aboveenvbreak and
--% \afterenvbreak, temporarily make \parskip 0.
--%
--\makedispenvdef{quotation}{\quotationstart}
--%
--\def\quotationstart{%
--  \indentedblockstart % same as \indentedblock, but increase right margin too.
--  \ifx\nonarrowing\relax
--    \advance\rightskip by \lispnarrowing
--  \fi
--  \parsearg\quotationlabel
--}
--
--% We have retained a nonzero parskip for the environment, since we're
--% doing normal filling.
--%
--\def\Equotation{%
--  \par
--  \ifx\quotationauthor\thisisundefined\else
--    % indent a bit.
--    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
--  \fi
--  {\parskip=0pt \afterenvbreak}%
--}
--\def\Esmallquotation{\Equotation}
--
--% If we're given an argument, typeset it in bold with a colon after.
--\def\quotationlabel#1{%
--  \def\temp{#1}%
--  \ifx\temp\empty \else
--    {\bf #1: }%
--  \fi
--}
--
--% @indentedblock is like @quotation, but indents only on the left and
--% has no optional argument.
--%
--\makedispenvdef{indentedblock}{\indentedblockstart}
--%
--\def\indentedblockstart{%
--  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
--  \parindent=0pt
--  %
--  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
--  \ifx\nonarrowing\relax
--    \advance\leftskip by \lispnarrowing
--    \exdentamount = \lispnarrowing
--  \else
--    \let\nonarrowing = \relax
--  \fi
--}
--
--% Keep a nonzero parskip for the environment, since we're doing normal filling.
--%
--\def\Eindentedblock{%
--  \par
--  {\parskip=0pt \afterenvbreak}%
--}
--\def\Esmallindentedblock{\Eindentedblock}
--
--
--% LaTeX-like @verbatim... at end verbatim and @verb{<char>...<char>}
--% If we want to allow any <char> as delimiter,
--% we need the curly braces so that makeinfo sees the @verb command, eg:
--% `@verbx...x' would look like the '@verbx' command.  --janneke at gnu.org
--%
--% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
--%
--% [Knuth] p.344; only we need to do the other characters Texinfo sets
--% active too.  Otherwise, they get lost as the first character on a
--% verbatim line.
--\def\dospecials{%
--  \do\ \do\\\do\{\do\}\do\$\do\&%
--  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
--  \do\<\do\>\do\|\do\@\do+\do\"%
--  % Don't do the quotes -- if we do, @set txicodequoteundirected and
--  % @set txicodequotebacktick will not have effect on @verb and
--  % @verbatim, and ?` and !` ligatures won't get disabled.
--  %\do\`\do\'%
--}
--%
--% [Knuth] p. 380
--\def\uncatcodespecials{%
--  \def\do##1{\catcode`##1=\other}\dospecials}
--%
--% Setup for the @verb command.
--%
--% Eight spaces for a tab
--\begingroup
--  \catcode`\^^I=\active
--  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
--\endgroup
--%
--\def\setupverb{%
--  \tt  % easiest (and conventionally used) font for verbatim
--  \def\par{\leavevmode\endgraf}%
--  \setupmarkupstyle{verb}%
--  \tabeightspaces
--  % Respect line breaks,
--  % print special symbols as themselves, and
--  % make each space count
--  % must do in this order:
--  \obeylines \uncatcodespecials \sepspaces
--}
--
--% Setup for the @verbatim environment
--%
--% Real tab expansion.
--\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
--%
--% We typeset each line of the verbatim in an \hbox, so we can handle
--% tabs.  The \global is in case the verbatim line starts with an accent,
--% or some other command that starts with a begin-group.  Otherwise, the
--% entire \verbbox would disappear at the corresponding end-group, before
--% it is typeset.  Meanwhile, we can't have nested verbatim commands
--% (can we?), so the \global won't be overwriting itself.
--\newbox\verbbox
--\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
--%
--\begingroup
--  \catcode`\^^I=\active
--  \gdef\tabexpand{%
--    \catcode`\^^I=\active
--    \def^^I{\leavevmode\egroup
--      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
--      \divide\dimen\verbbox by\tabw
--      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
--      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
--      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
--    }%
--  }
--\endgroup
--
--% start the verbatim environment.
--\def\setupverbatim{%
--  \let\nonarrowing = t%
--  \nonfillstart
--  \tt % easiest (and conventionally used) font for verbatim
--  % The \leavevmode here is for blank lines.  Otherwise, we would
--  % never \starttabox and the \egroup would end verbatim mode.
--  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
--  \tabexpand
--  \setupmarkupstyle{verbatim}%
--  % Respect line breaks,
--  % print special symbols as themselves, and
--  % make each space count.
--  % Must do in this order:
--  \obeylines \uncatcodespecials \sepspaces
--  \everypar{\starttabbox}%
--}
--
--% Do the @verb magic: verbatim text is quoted by unique
--% delimiter characters.  Before first delimiter expect a
--% right brace, after last delimiter expect closing brace:
--%
--%    \def\doverb'{'<char>#1<char>'}'{#1}
--%
--% [Knuth] p. 382; only eat outer {}
--\begingroup
--  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
--  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
--\endgroup
--%
--\def\verb{\begingroup\setupverb\doverb}
--%
--%
--% Do the @verbatim magic: define the macro \doverbatim so that
--% the (first) argument ends when '@end verbatim' is reached, ie:
--%
--%     \def\doverbatim#1 at end verbatim{#1}
--%
--% For Texinfo it's a lot easier than for LaTeX,
--% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
--% we need not redefine '\', '{' and '}'.
--%
--% Inspired by LaTeX's verbatim command set [latex.ltx]
--%
--\begingroup
--  \catcode`\ =\active
--  \obeylines %
--  % ignore everything up to the first ^^M, that's the newline at the end
--  % of the @verbatim input line itself.  Otherwise we get an extra blank
--  % line in the output.
--  \xdef\doverbatim#1^^M#2 at end verbatim{#2\noexpand\end\gobble verbatim}%
--  % We really want {...\end verbatim} in the body of the macro, but
--  % without the active space; thus we have to use \xdef and \gobble.
--\endgroup
--%
--\envdef\verbatim{%
--    \setupverbatim\doverbatim
--}
--\let\Everbatim = \afterenvbreak
--
--
--% @verbatiminclude FILE - insert text of file in verbatim environment.
--%
--\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
--%
--\def\doverbatiminclude#1{%
--  {%
--    \makevalueexpandable
--    \setupverbatim
--    \indexnofonts       % Allow `@@' and other weird things in file names.
--    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
--    \input #1
--    \afterenvbreak
--  }%
--}
--
--% @copying ... @end copying.
--% Save the text away for @insertcopying later.
--%
--% We save the uninterpreted tokens, rather than creating a box.
--% Saving the text in a box would be much easier, but then all the
--% typesetting commands (@smallbook, font changes, etc.) have to be done
--% beforehand -- and a) we want @copying to be done first in the source
--% file; b) letting users define the frontmatter in as flexible order as
--% possible is very desirable.
--%
--\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
--\def\docopying#1 at end copying{\endgroup\def\copyingtext{#1}}
--%
--\def\insertcopying{%
--  \begingroup
--    \parindent = 0pt  % paragraph indentation looks wrong on title page
--    \scanexp\copyingtext
--  \endgroup
--}
--
--
--\message{defuns,}
--% @defun etc.
--
--\newskip\defbodyindent \defbodyindent=.4in
--\newskip\defargsindent \defargsindent=50pt
--\newskip\deflastargmargin \deflastargmargin=18pt
--\newcount\defunpenalty
--
--% Start the processing of @deffn:
--\def\startdefun{%
--  \ifnum\lastpenalty<10000
--    \medbreak
--    \defunpenalty=10003 % Will keep this @deffn together with the
--                        % following @def command, see below.
--  \else
--    % If there are two @def commands in a row, we'll have a \nobreak,
--    % which is there to keep the function description together with its
--    % header.  But if there's nothing but headers, we need to allow a
--    % break somewhere.  Check specifically for penalty 10002, inserted
--    % by \printdefunline, instead of 10000, since the sectioning
--    % commands also insert a nobreak penalty, and we don't want to allow
--    % a break between a section heading and a defun.
--    %
--    % As a further refinement, we avoid "club" headers by signalling
--    % with penalty of 10003 after the very first @deffn in the
--    % sequence (see above), and penalty of 10002 after any following
--    % @def command.
--    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
--    %
--    % Similarly, after a section heading, do not allow a break.
--    % But do insert the glue.
--    \medskip  % preceded by discardable penalty, so not a breakpoint
--  \fi
--  %
--  \parindent=0in
--  \advance\leftskip by \defbodyindent
--  \exdentamount=\defbodyindent
--}
--
--\def\dodefunx#1{%
--  % First, check whether we are in the right environment:
--  \checkenv#1%
--  %
--  % As above, allow line break if we have multiple x headers in a row.
--  % It's not a great place, though.
--  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
--  %
--  % And now, it's time to reuse the body of the original defun:
--  \expandafter\gobbledefun#1%
--}
--\def\gobbledefun#1\startdefun{}
--
--% \printdefunline \deffnheader{text}
--%
--\def\printdefunline#1#2{%
--  \begingroup
--    % call \deffnheader:
--    #1#2 \endheader
--    % common ending:
--    \interlinepenalty = 10000
--    \advance\rightskip by 0pt plus 1fil\relax
--    \endgraf
--    \nobreak\vskip -\parskip
--    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
--    % Some of the @defun-type tags do not enable magic parentheses,
--    % rendering the following check redundant.  But we don't optimize.
--    \checkparencounts
--  \endgroup
--}
--
--\def\Edefun{\endgraf\medbreak}
--
--% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
--% the only thing remaining is to define \deffnheader.
--%
--\def\makedefun#1{%
--  \expandafter\let\csname E#1\endcsname = \Edefun
--  \edef\temp{\noexpand\domakedefun
--    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
--  \temp
--}
--
--% \domakedefun \deffn \deffnx \deffnheader
--%
--% Define \deffn and \deffnx, without parameters.
--% \deffnheader has to be defined explicitly.
--%
--\def\domakedefun#1#2#3{%
--  \envdef#1{%
--    \startdefun
--    \doingtypefnfalse    % distinguish typed functions from all else
--    \parseargusing\activeparens{\printdefunline#3}%
--  }%
--  \def#2{\dodefunx#1}%
--  \def#3%
--}
--
--\newif\ifdoingtypefn       % doing typed function?
--\newif\ifrettypeownline    % typeset return type on its own line?
--
--% @deftypefnnewline on|off says whether the return type of typed functions
--% are printed on their own line.  This affects @deftypefn, @deftypefun,
--% @deftypeop, and @deftypemethod.
--%
--\parseargdef\deftypefnnewline{%
--  \def\temp{#1}%
--  \ifx\temp\onword
--    \expandafter\let\csname SETtxideftypefnnl\endcsname
--      = \empty
--  \else\ifx\temp\offword
--    \expandafter\let\csname SETtxideftypefnnl\endcsname
--      = \relax
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @txideftypefnnl value `\temp',
--                must be on|off}%
--  \fi\fi
--}
--
--% Untyped functions:
--
--% @deffn category name args
--\makedefun{deffn}{\deffngeneral{}}
--
--% @deffn category class name args
--\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
--
--% \defopon {category on}class name args
--\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
--
--% \deffngeneral {subind}category name args
--%
--\def\deffngeneral#1#2 #3 #4\endheader{%
--  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
--  \dosubind{fn}{\code{#3}}{#1}%
--  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
--}
--
--% Typed functions:
--
--% @deftypefn category type name args
--\makedefun{deftypefn}{\deftypefngeneral{}}
--
--% @deftypeop category class type name args
--\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
--
--% \deftypeopon {category on}class type name args
--\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
--
--% \deftypefngeneral {subind}category type name args
--%
--\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
--  \dosubind{fn}{\code{#4}}{#1}%
--  \doingtypefntrue
--  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
--}
--
--% Typed variables:
--
--% @deftypevr category type var args
--\makedefun{deftypevr}{\deftypecvgeneral{}}
--
--% @deftypecv category class type var args
--\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
--
--% \deftypecvof {category of}class type var args
--\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
--
--% \deftypecvgeneral {subind}category type var args
--%
--\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
--  \dosubind{vr}{\code{#4}}{#1}%
--  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
--}
--
--% Untyped variables:
--
--% @defvr category var args
--\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
--
--% @defcv category class var args
--\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
--
--% \defcvof {category of}class var args
--\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
--
--% Types:
--
--% @deftp category name args
--\makedefun{deftp}#1 #2 #3\endheader{%
--  \doind{tp}{\code{#2}}%
--  \defname{#1}{}{#2}\defunargs{#3\unskip}%
--}
--
--% Remaining @defun-like shortcuts:
--\makedefun{defun}{\deffnheader{\putwordDeffunc} }
--\makedefun{defmac}{\deffnheader{\putwordDefmac} }
--\makedefun{defspec}{\deffnheader{\putwordDefspec} }
--\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
--\makedefun{defvar}{\defvrheader{\putwordDefvar} }
--\makedefun{defopt}{\defvrheader{\putwordDefopt} }
--\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
--\makedefun{defmethod}{\defopon\putwordMethodon}
--\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
--\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
--\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
--
--% \defname, which formats the name of the @def (not the args).
--% #1 is the category, such as "Function".
--% #2 is the return type, if any.
--% #3 is the function name.
--%
--% We are followed by (but not passed) the arguments, if any.
--%
--\def\defname#1#2#3{%
--  \par
--  % Get the values of \leftskip and \rightskip as they were outside the @def...
--  \advance\leftskip by -\defbodyindent
--  %
--  % Determine if we are typesetting the return type of a typed function
--  % on a line by itself.
--  \rettypeownlinefalse
--  \ifdoingtypefn  % doing a typed function specifically?
--    % then check user option for putting return type on its own line:
--    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
--      \rettypeownlinetrue
--    \fi
--  \fi
--  %
--  % How we'll format the category name.  Putting it in brackets helps
--  % distinguish it from the body text that may end up on the next line
--  % just below it.
--  \def\temp{#1}%
--  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
--  %
--  % Figure out line sizes for the paragraph shape.  We'll always have at
--  % least two.
--  \tempnum = 2
--  %
--  % The first line needs space for \box0; but if \rightskip is nonzero,
--  % we need only space for the part of \box0 which exceeds it:
--  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
--  %
--  % If doing a return type on its own line, we'll have another line.
--  \ifrettypeownline
--    \advance\tempnum by 1
--    \def\maybeshapeline{0in \hsize}%
--  \else
--    \def\maybeshapeline{}%
--  \fi
--  %
--  % The continuations:
--  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
--  %
--  % The final paragraph shape:
--  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
--  %
--  % Put the category name at the right margin.
--  \noindent
--  \hbox to 0pt{%
--    \hfil\box0 \kern-\hsize
--    % \hsize has to be shortened this way:
--    \kern\leftskip
--    % Intentionally do not respect \rightskip, since we need the space.
--  }%
--  %
--  % Allow all lines to be underfull without complaint:
--  \tolerance=10000 \hbadness=10000
--  \exdentamount=\defbodyindent
--  {%
--    % defun fonts. We use typewriter by default (used to be bold) because:
--    % . we're printing identifiers, they should be in tt in principle.
--    % . in languages with many accents, such as Czech or French, it's
--    %   common to leave accents off identifiers.  The result looks ok in
--    %   tt, but exceedingly strange in rm.
--    % . we don't want -- and --- to be treated as ligatures.
--    % . this still does not fix the ?` and !` ligatures, but so far no
--    %   one has made identifiers using them :).
--    \df \tt
--    \def\temp{#2}% text of the return type
--    \ifx\temp\empty\else
--      \tclose{\temp}% typeset the return type
--      \ifrettypeownline
--        % put return type on its own line; prohibit line break following:
--        \hfil\vadjust{\nobreak}\break
--      \else
--        \space  % type on same line, so just followed by a space
--      \fi
--    \fi           % no return type
--    #3% output function name
--  }%
--  {\rm\enskip}% hskip 0.5 em of \tenrm
--  %
--  \boldbrax
--  % arguments will be output next, if any.
--}
--
--% Print arguments in slanted roman (not ttsl), inconsistently with using
--% tt for the name.  This is because literal text is sometimes needed in
--% the argument list (groff manual), and ttsl and tt are not very
--% distinguishable.  Prevent hyphenation at `-' chars.
--%
--\def\defunargs#1{%
--  % use sl by default (not ttsl),
--  % tt for the names.
--  \df \sl \hyphenchar\font=0
--  %
--  % On the other hand, if an argument has two dashes (for instance), we
--  % want a way to get ttsl.  We used to recommend @var for that, so
--  % leave the code in, but it's strange for @var to lead to typewriter.
--  % Nowadays we recommend @code, since the difference between a ttsl hyphen
--  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
--  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
--  #1%
--  \sl\hyphenchar\font=45
--}
--
--% We want ()&[] to print specially on the defun line.
--%
--\def\activeparens{%
--  \catcode`\(=\active \catcode`\)=\active
--  \catcode`\[=\active \catcode`\]=\active
--  \catcode`\&=\active
--}
--
--% Make control sequences which act like normal parenthesis chars.
--\let\lparen = ( \let\rparen = )
--
--% Be sure that we always have a definition for `(', etc.  For example,
--% if the fn name has parens in it, \boldbrax will not be in effect yet,
--% so TeX would otherwise complain about undefined control sequence.
--{
--  \activeparens
--  \global\let(=\lparen \global\let)=\rparen
--  \global\let[=\lbrack \global\let]=\rbrack
--  \global\let& = \&
--
--  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
--  \gdef\magicamp{\let&=\amprm}
--}
--
--\newcount\parencount
--
--% If we encounter &foo, then turn on ()-hacking afterwards
--\newif\ifampseen
--\def\amprm#1 {\ampseentrue{\bf\&#1 }}
--
--\def\parenfont{%
--  \ifampseen
--    % At the first level, print parens in roman,
--    % otherwise use the default font.
--    \ifnum \parencount=1 \rm \fi
--  \else
--    % The \sf parens (in \boldbrax) actually are a little bolder than
--    % the contained text.  This is especially needed for [ and ] .
--    \sf
--  \fi
--}
--\def\infirstlevel#1{%
--  \ifampseen
--    \ifnum\parencount=1
--      #1%
--    \fi
--  \fi
--}
--\def\bfafterword#1 {#1 \bf}
--
--\def\opnr{%
--  \global\advance\parencount by 1
--  {\parenfont(}%
--  \infirstlevel \bfafterword
--}
--\def\clnr{%
--  {\parenfont)}%
--  \infirstlevel \sl
--  \global\advance\parencount by -1
--}
--
--\newcount\brackcount
--\def\lbrb{%
--  \global\advance\brackcount by 1
--  {\bf[}%
--}
--\def\rbrb{%
--  {\bf]}%
--  \global\advance\brackcount by -1
--}
--
--\def\checkparencounts{%
--  \ifnum\parencount=0 \else \badparencount \fi
--  \ifnum\brackcount=0 \else \badbrackcount \fi
--}
--% these should not use \errmessage; the glibc manual, at least, actually
--% has such constructs (when documenting function pointers).
--\def\badparencount{%
--  \message{Warning: unbalanced parentheses in @def...}%
--  \global\parencount=0
--}
--\def\badbrackcount{%
--  \message{Warning: unbalanced square brackets in @def...}%
--  \global\brackcount=0
--}
--
--
--\message{macros,}
--% @macro.
--
--% To do this right we need a feature of e-TeX, \scantokens,
--% which we arrange to emulate with a temporary file in ordinary TeX.
--\ifx\eTeXversion\thisisundefined
--  \newwrite\macscribble
--  \def\scantokens#1{%
--    \toks0={#1}%
--    \immediate\openout\macscribble=\jobname.tmp
--    \immediate\write\macscribble{\the\toks0}%
--    \immediate\closeout\macscribble
--    \input \jobname.tmp
--  }
--\fi
--
--\def\scanmacro#1{\begingroup
--  \newlinechar`\^^M
--  \let\xeatspaces\eatspaces
--  %
--  % Undo catcode changes of \startcontents and \doprintindex
--  % When called from @insertcopying or (short)caption, we need active
--  % backslash to get it printed correctly.  Previously, we had
--  % \catcode`\\=\other instead.  We'll see whether a problem appears
--  % with macro expansion.				--kasal, 19aug04
--  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
--  %
--  % ... and for \example:
--  \spaceisspace
--  %
--  % The \empty here causes a following catcode 5 newline to be eaten as
--  % part of reading whitespace after a control sequence.  It does not
--  % eat a catcode 13 newline.  There's no good way to handle the two
--  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
--  % would then have different behavior).  See the Macro Details node in
--  % the manual for the workaround we recommend for macros and
--  % line-oriented commands.
--  %
--  \scantokens{#1\empty}%
--\endgroup}
--
--\def\scanexp#1{%
--  \edef\temp{\noexpand\scanmacro{#1}}%
--  \temp
--}
--
--\newcount\paramno   % Count of parameters
--\newtoks\macname    % Macro name
--\newif\ifrecursive  % Is it recursive?
--
--% List of all defined macros in the form
--%    \definedummyword\macro1\definedummyword\macro2...
--% Currently is also contains all @aliases; the list can be split
--% if there is a need.
--\def\macrolist{}
--
--% Add the macro to \macrolist
--\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
--\def\addtomacrolistxxx#1{%
--     \toks0 = \expandafter{\macrolist\definedummyword#1}%
--     \xdef\macrolist{\the\toks0}%
--}
--
--% Utility routines.
--% This does \let #1 = #2, with \csnames; that is,
--%   \let \csname#1\endcsname = \csname#2\endcsname
--% (except of course we have to play expansion games).
--%
--\def\cslet#1#2{%
--  \expandafter\let
--  \csname#1\expandafter\endcsname
--  \csname#2\endcsname
--}
--
--% Trim leading and trailing spaces off a string.
--% Concepts from aro-bend problem 15 (see CTAN).
--{\catcode`\@=11
--\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
--\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
--\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
--\def\unbrace#1{#1}
--\unbrace{\gdef\trim@@@ #1 } #2@{#1}
--}
--
--% Trim a single trailing ^^M off a string.
--{\catcode`\^^M=\other \catcode`\Q=3%
--\gdef\eatcr #1{\eatcra #1Q^^MQ}%
--\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
--\gdef\eatcrb#1Q#2Q{#1}%
--}
--
--% Macro bodies are absorbed as an argument in a context where
--% all characters are catcode 10, 11 or 12, except \ which is active
--% (as in normal texinfo). It is necessary to change the definition of \
--% to recognize macro arguments; this is the job of \mbodybackslash.
--%
--% Non-ASCII encodings make 8-bit characters active, so un-activate
--% them to avoid their expansion.  Must do this non-globally, to
--% confine the change to the current group.
--%
--% It's necessary to have hard CRs when the macro is executed. This is
--% done by making ^^M (\endlinechar) catcode 12 when reading the macro
--% body, and then making it the \newlinechar in \scanmacro.
--%
--\def\scanctxt{% used as subroutine
--  \catcode`\"=\other
--  \catcode`\+=\other
--  \catcode`\<=\other
--  \catcode`\>=\other
--  \catcode`\@=\other
--  \catcode`\^=\other
--  \catcode`\_=\other
--  \catcode`\|=\other
--  \catcode`\~=\other
--  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
--}
--
--\def\scanargctxt{% used for copying and captions, not macros.
--  \scanctxt
--  \catcode`\\=\other
--  \catcode`\^^M=\other
--}
--
--\def\macrobodyctxt{% used for @macro definitions
--  \scanctxt
--  \catcode`\{=\other
--  \catcode`\}=\other
--  \catcode`\^^M=\other
--  \usembodybackslash
--}
--
--\def\macroargctxt{% used when scanning invocations
--  \scanctxt
--  \catcode`\\=0
--}
--% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
--% for the single characters \ { }.  Thus, we end up with the "commands"
--% that would be written @\ @{ @} in a Texinfo document.
--%
--% We already have @{ and @}.  For @\, we define it here, and only for
--% this purpose, to produce a typewriter backslash (so, the @\ that we
--% define for @math can't be used with @macro calls):
--%
--\def\\{\normalbackslash}%
--%
--% We would like to do this for \, too, since that is what makeinfo does.
--% But it is not possible, because Texinfo already has a command @, for a
--% cedilla accent.  Documents must use @comma{} instead.
--%
--% \anythingelse will almost certainly be an error of some kind.
--
--
--% \mbodybackslash is the definition of \ in @macro bodies.
--% It maps \foo\ => \csname macarg.foo\endcsname => #N
--% where N is the macro parameter number.
--% We define \csname macarg.\endcsname to be \realbackslash, so
--% \\ in macro replacement text gets you a backslash.
--%
--{\catcode`@=0 @catcode`@\=@active
-- @gdef at usembodybackslash{@let\=@mbodybackslash}
-- @gdef at mbodybackslash#1\{@csname macarg.#1 at endcsname}
--}
--\expandafter\def\csname macarg.\endcsname{\realbackslash}
--
--\def\margbackslash#1{\char`\#1 }
--
--\def\macro{\recursivefalse\parsearg\macroxxx}
--\def\rmacro{\recursivetrue\parsearg\macroxxx}
--
--\def\macroxxx#1{%
--  \getargs{#1}% now \macname is the macname and \argl the arglist
--  \ifx\argl\empty       % no arguments
--     \paramno=0\relax
--  \else
--     \expandafter\parsemargdef \argl;%
--     \if\paramno>256\relax
--       \ifx\eTeXversion\thisisundefined
--         \errhelp = \EMsimple
--         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
--       \fi
--     \fi
--  \fi
--  \if1\csname ismacro.\the\macname\endcsname
--     \message{Warning: redefining \the\macname}%
--  \else
--     \expandafter\ifx\csname \the\macname\endcsname \relax
--     \else \errmessage{Macro name \the\macname\space already defined}\fi
--     \global\cslet{macsave.\the\macname}{\the\macname}%
--     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
--     \addtomacrolist{\the\macname}%
--  \fi
--  \begingroup \macrobodyctxt
--  \ifrecursive \expandafter\parsermacbody
--  \else \expandafter\parsemacbody
--  \fi}
--
--\parseargdef\unmacro{%
--  \if1\csname ismacro.#1\endcsname
--    \global\cslet{#1}{macsave.#1}%
--    \global\expandafter\let \csname ismacro.#1\endcsname=0%
--    % Remove the macro name from \macrolist:
--    \begingroup
--      \expandafter\let\csname#1\endcsname \relax
--      \let\definedummyword\unmacrodo
--      \xdef\macrolist{\macrolist}%
--    \endgroup
--  \else
--    \errmessage{Macro #1 not defined}%
--  \fi
--}
--
--% Called by \do from \dounmacro on each macro.  The idea is to omit any
--% macro definitions that have been changed to \relax.
--%
--\def\unmacrodo#1{%
--  \ifx #1\relax
--    % remove this
--  \else
--    \noexpand\definedummyword \noexpand#1%
--  \fi
--}
--
--% This makes use of the obscure feature that if the last token of a
--% <parameter list> is #, then the preceding argument is delimited by
--% an opening brace, and that opening brace is not consumed.
--\def\getargs#1{\getargsxxx#1{}}
--\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
--\def\getmacname#1 #2\relax{\macname={#1}}
--\def\getmacargs#1{\def\argl{#1}}
--
--% For macro processing make @ a letter so that we can make Texinfo private macro names.
--\edef\texiatcatcode{\the\catcode`\@}
--\catcode `@=11\relax
--
--% Parse the optional {params} list.  Set up \paramno and \paramlist
--% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
--% in the params list to some hook where the argument si to be expanded.  If
--% there are less than 10 arguments that hook is to be replaced by ##N where N
--% is the position in that list, that is to say the macro arguments are to be
--% defined `a la TeX in the macro body.
--%
--% That gets used by \mbodybackslash (above).
--%
--% We need to get `macro parameter char #' into several definitions.
--% The technique used is stolen from LaTeX: let \hash be something
--% unexpandable, insert that wherever you need a #, and then redefine
--% it to # just before using the token list produced.
--%
--% The same technique is used to protect \eatspaces till just before
--% the macro is used.
--%
--% If there are 10 or more arguments, a different technique is used, where the
--% hook remains in the body, and when macro is to be expanded the body is
--% processed again to replace the arguments.
--%
--% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
--% argument N value and then \edef  the body (nothing else will expand because of
--% the catcode regime underwhich the body was input).
--%
--% If you compile with TeX (not eTeX), and you have macros with 10 or more
--% arguments, you need that no macro has more than 256 arguments, otherwise an
--% error is produced.
--\def\parsemargdef#1;{%
--  \paramno=0\def\paramlist{}%
--  \let\hash\relax
--  \let\xeatspaces\relax
--  \parsemargdefxxx#1,;,%
--  % In case that there are 10 or more arguments we parse again the arguments
--  % list to set new definitions for the \macarg.BLAH macros corresponding to
--  % each BLAH argument. It was anyhow needed to parse already once this list
--  % in order to count the arguments, and as macros with at most 9 arguments
--  % are by far more frequent than macro with 10 or more arguments, defining
--  % twice the \macarg.BLAH macros does not cost too much processing power.
--  \ifnum\paramno<10\relax\else
--    \paramno0\relax
--    \parsemmanyargdef@@#1,;,% 10 or more arguments
--  \fi
--}
--\def\parsemargdefxxx#1,{%
--  \if#1;\let\next=\relax
--  \else \let\next=\parsemargdefxxx
--    \advance\paramno by 1
--    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
--        {\xeatspaces{\hash\the\paramno}}%
--    \edef\paramlist{\paramlist\hash\the\paramno,}%
--  \fi\next}
--
--\def\parsemmanyargdef@@#1,{%
--  \if#1;\let\next=\relax
--  \else
--    \let\next=\parsemmanyargdef@@
--    \edef\tempb{\eatspaces{#1}}%
--    \expandafter\def\expandafter\tempa
--       \expandafter{\csname macarg.\tempb\endcsname}%
--    % Note that we need some extra \noexpand\noexpand, this is because we
--    % don't want \the  to be expanded in the \parsermacbody  as it uses an
--    % \xdef .
--    \expandafter\edef\tempa
--      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
--    \advance\paramno by 1\relax
--  \fi\next}
--
--% These two commands read recursive and nonrecursive macro bodies.
--% (They're different since rec and nonrec macros end differently.)
--%
--
--\catcode `\@\texiatcatcode
--\long\def\parsemacbody#1 at end macro%
--{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
--\long\def\parsermacbody#1 at end rmacro%
--{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
--\catcode `\@=11\relax
--
--\let\endargs@\relax
--\let\nil@\relax
--\def\nilm@{\nil@}%
--\long\def\nillm@{\nil@}%
--
--% This macro is expanded during the Texinfo macro expansion, not during its
--% definition.  It gets all the arguments values and assigns them to macros
--% macarg.ARGNAME
--%
--% #1 is the macro name
--% #2 is the list of argument names
--% #3 is the list of argument values
--\def\getargvals@#1#2#3{%
--  \def\macargdeflist@{}%
--  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
--  \def\paramlist{#2,\nil@}%
--  \def\macroname{#1}%
--  \begingroup
--  \macroargctxt
--  \def\argvaluelist{#3,\nil@}%
--  \def\@tempa{#3}%
--  \ifx\@tempa\empty
--    \setemptyargvalues@
--  \else
--    \getargvals@@
--  \fi
--}
--
--%
--\def\getargvals@@{%
--  \ifx\paramlist\nilm@
--      % Some sanity check needed here that \argvaluelist is also empty.
--      \ifx\argvaluelist\nillm@
--      \else
--        \errhelp = \EMsimple
--        \errmessage{Too many arguments in macro `\macroname'!}%
--      \fi
--      \let\next\macargexpandinbody@
--  \else
--    \ifx\argvaluelist\nillm@
--       % No more arguments values passed to macro.  Set remaining named-arg
--       % macros to empty.
--       \let\next\setemptyargvalues@
--    \else
--      % pop current arg name into \@tempb
--      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
--      \expandafter\@tempa\expandafter{\paramlist}%
--       % pop current argument value into \@tempc
--      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
--      \expandafter\@tempa\expandafter{\argvaluelist}%
--       % Here \@tempb is the current arg name and \@tempc is the current arg value.
--       % First place the new argument macro definition into \@tempd
--       \expandafter\macname\expandafter{\@tempc}%
--       \expandafter\let\csname macarg.\@tempb\endcsname\relax
--       \expandafter\def\expandafter\@tempe\expandafter{%
--         \csname macarg.\@tempb\endcsname}%
--       \edef\@tempd{\long\def\@tempe{\the\macname}}%
--       \push@\@tempd\macargdeflist@
--       \let\next\getargvals@@
--    \fi
--  \fi
--  \next
--}
--
--\def\push@#1#2{%
--  \expandafter\expandafter\expandafter\def
--  \expandafter\expandafter\expandafter#2%
--  \expandafter\expandafter\expandafter{%
--  \expandafter#1#2}%
--}
--
--% Replace arguments by their values in the macro body, and place the result
--% in macro \@tempa
--\def\macvalstoargs@{%
--  %  To do this we use the property that token registers that are \the'ed
--  % within an \edef  expand only once. So we are going to place all argument
--  % values into respective token registers.
--  %
--  % First we save the token context, and initialize argument numbering.
--  \begingroup
--    \paramno0\relax
--    % Then, for each argument number #N, we place the corresponding argument
--    % value into a new token list register \toks#N
--    \expandafter\putargsintokens@\saveparamlist@,;,%
--    % Then, we expand the body so that argument are replaced by their
--    % values. The trick for values not to be expanded themselves is that they
--    % are within tokens and that tokens expand only once in an \edef .
--    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
--    % Now we restore the token stack pointer to free the token list registers
--    % which we have used, but we make sure that expanded body is saved after
--    % group.
--    \expandafter
--  \endgroup
--  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
--  }
--
--\def\macargexpandinbody@{%
--  %% Define the named-macro outside of this group and then close this group.
--  \expandafter
--  \endgroup
--  \macargdeflist@
--  % First the replace in body the macro arguments by their values, the result
--  % is in \@tempa .
--  \macvalstoargs@
--  % Then we point at the \norecurse or \gobble (for recursive) macro value
--  % with \@tempb .
--  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
--  % Depending on whether it is recursive or not, we need some tailing
--  % \egroup .
--  \ifx\@tempb\gobble
--     \let\@tempc\relax
--  \else
--     \let\@tempc\egroup
--  \fi
--  % And now we do the real job:
--  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
--  \@tempd
--}
--
--\def\putargsintokens@#1,{%
--  \if#1;\let\next\relax
--  \else
--    \let\next\putargsintokens@
--    % First we allocate the new token list register, and give it a temporary
--    % alias \@tempb .
--    \toksdef\@tempb\the\paramno
--    % Then we place the argument value into that token list register.
--    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
--    \expandafter\@tempb\expandafter{\@tempa}%
--    \advance\paramno by 1\relax
--  \fi
--  \next
--}
--
--% Save the token stack pointer into macro #1
--\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
--% Restore the token stack pointer from number in macro #1
--\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
--% newtoks that can be used non \outer .
--\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
--
--% Tailing missing arguments are set to empty
--\def\setemptyargvalues@{%
--  \ifx\paramlist\nilm@
--    \let\next\macargexpandinbody@
--  \else
--    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
--    \let\next\setemptyargvalues@
--  \fi
--  \next
--}
--
--\def\setemptyargvaluesparser@#1,#2\endargs@{%
--  \expandafter\def\expandafter\@tempa\expandafter{%
--    \expandafter\def\csname macarg.#1\endcsname{}}%
--  \push@\@tempa\macargdeflist@
--  \def\paramlist{#2}%
--}
--
--% #1 is the element target macro
--% #2 is the list macro
--% #3,#4\endargs@ is the list value
--\def\pop@#1#2#3,#4\endargs@{%
--   \def#1{#3}%
--   \def#2{#4}%
--}
--\long\def\longpop@#1#2#3,#4\endargs@{%
--   \long\def#1{#3}%
--   \long\def#2{#4}%
--}
--
--% This defines a Texinfo @macro. There are eight cases: recursive and
--% nonrecursive macros of zero, one, up to nine, and many arguments.
--% Much magic with \expandafter here.
--% \xdef is used so that macro definitions will survive the file
--% they're defined in; @include reads the file inside a group.
--%
--\def\defmacro{%
--  \let\hash=##% convert placeholders to macro parameter chars
--  \ifrecursive
--    \ifcase\paramno
--    % 0
--      \expandafter\xdef\csname\the\macname\endcsname{%
--        \noexpand\scanmacro{\temp}}%
--    \or % 1
--      \expandafter\xdef\csname\the\macname\endcsname{%
--         \bgroup\noexpand\macroargctxt
--         \noexpand\braceorline
--         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
--      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
--         \egroup\noexpand\scanmacro{\temp}}%
--    \else
--      \ifnum\paramno<10\relax % at most 9
--        \expandafter\xdef\csname\the\macname\endcsname{%
--           \bgroup\noexpand\macroargctxt
--           \noexpand\csname\the\macname xx\endcsname}%
--        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
--            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
--        \expandafter\expandafter
--        \expandafter\xdef
--        \expandafter\expandafter
--          \csname\the\macname xxx\endcsname
--            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
--      \else % 10 or more
--        \expandafter\xdef\csname\the\macname\endcsname{%
--          \noexpand\getargvals@{\the\macname}{\argl}%
--        }%
--        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
--        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
--      \fi
--    \fi
--  \else
--    \ifcase\paramno
--    % 0
--      \expandafter\xdef\csname\the\macname\endcsname{%
--        \noexpand\norecurse{\the\macname}%
--        \noexpand\scanmacro{\temp}\egroup}%
--    \or % 1
--      \expandafter\xdef\csname\the\macname\endcsname{%
--         \bgroup\noexpand\macroargctxt
--         \noexpand\braceorline
--         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
--      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
--        \egroup
--        \noexpand\norecurse{\the\macname}%
--        \noexpand\scanmacro{\temp}\egroup}%
--    \else % at most 9
--      \ifnum\paramno<10\relax
--        \expandafter\xdef\csname\the\macname\endcsname{%
--           \bgroup\noexpand\macroargctxt
--           \expandafter\noexpand\csname\the\macname xx\endcsname}%
--        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
--            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
--        \expandafter\expandafter
--        \expandafter\xdef
--        \expandafter\expandafter
--        \csname\the\macname xxx\endcsname
--        \paramlist{%
--            \egroup
--            \noexpand\norecurse{\the\macname}%
--            \noexpand\scanmacro{\temp}\egroup}%
--      \else % 10 or more:
--        \expandafter\xdef\csname\the\macname\endcsname{%
--          \noexpand\getargvals@{\the\macname}{\argl}%
--        }%
--        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
--        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
--      \fi
--    \fi
--  \fi}
--
--\catcode `\@\texiatcatcode\relax
--
--\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
--
--% \braceorline decides whether the next nonwhitespace character is a
--% {.  If so it reads up to the closing }, if not, it reads the whole
--% line.  Whatever was read is then fed to the next control sequence
--% as an argument (by \parsebrace or \parsearg).
--%
--\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
--\def\braceorlinexxx{%
--  \ifx\nchar\bgroup\else
--    \expandafter\parsearg
--  \fi \macnamexxx}
--
--
--% @alias.
--% We need some trickery to remove the optional spaces around the equal
--% sign.  Make them active and then expand them all to nothing.
--%
--\def\alias{\parseargusing\obeyspaces\aliasxxx}
--\def\aliasxxx #1{\aliasyyy#1\relax}
--\def\aliasyyy #1=#2\relax{%
--  {%
--    \expandafter\let\obeyedspace=\empty
--    \addtomacrolist{#1}%
--    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
--  }%
--  \next
--}
--
--
--\message{cross references,}
--
--\newwrite\auxfile
--\newif\ifhavexrefs    % True if xref values are known.
--\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
--
--% @inforef is relatively simple.
--\def\inforef #1{\inforefzzz #1,,,,**}
--\def\inforefzzz #1,#2,#3,#4**{%
--  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
--  node \samp{\ignorespaces#1{}}}
--
--% @node's only job in TeX is to define \lastnode, which is used in
--% cross-references.  The @node line might or might not have commas, and
--% might or might not have spaces before the first comma, like:
--% @node foo , bar , ...
--% We don't want such trailing spaces in the node name.
--%
--\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
--%
--% also remove a trailing comma, in case of something like this:
--% @node Help-Cross,  ,  , Cross-refs
--\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
--\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
--
--\let\nwnode=\node
--\let\lastnode=\empty
--
--% Write a cross-reference definition for the current node.  #1 is the
--% type (Ynumbered, Yappendix, Ynothing).
--%
--\def\donoderef#1{%
--  \ifx\lastnode\empty\else
--    \setref{\lastnode}{#1}%
--    \global\let\lastnode=\empty
--  \fi
--}
--
--% @anchor{NAME} -- define xref target at arbitrary point.
--%
--\newcount\savesfregister
--%
--\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
--\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
--\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
--
--% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
--% anchor), which consists of three parts:
--% 1) NAME-title - the current sectioning name taken from \lastsection,
--%                 or the anchor name.
--% 2) NAME-snt   - section number and type, passed as the SNT arg, or
--%                 empty for anchors.
--% 3) NAME-pg    - the page number.
--%
--% This is called from \donoderef, \anchor, and \dofloat.  In the case of
--% floats, there is an additional part, which is not written here:
--% 4) NAME-lof   - the text as it should appear in a @listoffloats.
--%
--\def\setref#1#2{%
--  \pdfmkdest{#1}%
--  \iflinks
--    {%
--      \atdummies  % preserve commands, but don't expand them
--      \edef\writexrdef##1##2{%
--	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
--	  ##1}{##2}}% these are parameters of \writexrdef
--      }%
--      \toks0 = \expandafter{\lastsection}%
--      \immediate \writexrdef{title}{\the\toks0 }%
--      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
--      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
--    }%
--  \fi
--}
--
--% @xrefautosectiontitle on|off says whether @section(ing) names are used
--% automatically in xrefs, if the third arg is not explicitly specified.
--% This was provided as a "secret" @set xref-automatic-section-title
--% variable, now it's official.
--%
--\parseargdef\xrefautomaticsectiontitle{%
--  \def\temp{#1}%
--  \ifx\temp\onword
--    \expandafter\let\csname SETxref-automatic-section-title\endcsname
--      = \empty
--  \else\ifx\temp\offword
--    \expandafter\let\csname SETxref-automatic-section-title\endcsname
--      = \relax
--  \else
--    \errhelp = \EMsimple
--    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
--                must be on|off}%
--  \fi\fi
--}
--
--% 

--% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
--% the node name, #2 the name of the Info cross-reference, #3 the printed
--% node name, #4 the name of the Info file, #5 the name of the printed
--% manual.  All but the node name can be omitted.
--%
--\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
--\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
--\def\ref#1{\xrefX[#1,,,,,,,]}
--%
--\newbox\toprefbox
--\newbox\printedrefnamebox
--\newbox\infofilenamebox
--\newbox\printedmanualbox
--%
--\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
--  \unsepspaces
--  %
--  % Get args without leading/trailing spaces.
--  \def\printedrefname{\ignorespaces #3}%
--  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
--  %
--  \def\infofilename{\ignorespaces #4}%
--  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
--  %
--  \def\printedmanual{\ignorespaces #5}%
--  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
--  %
--  % If the printed reference name (arg #3) was not explicitly given in
--  % the @xref, figure out what we want to use.
--  \ifdim \wd\printedrefnamebox = 0pt
--    % No printed node name was explicitly given.
--    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
--      % Not auto section-title: use node name inside the square brackets.
--      \def\printedrefname{\ignorespaces #1}%
--    \else
--      % Auto section-title: use chapter/section title inside
--      % the square brackets if we have it.
--      \ifdim \wd\printedmanualbox > 0pt
--        % It is in another manual, so we don't have it; use node name.
--        \def\printedrefname{\ignorespaces #1}%
--      \else
--        \ifhavexrefs
--          % We (should) know the real title if we have the xref values.
--          \def\printedrefname{\refx{#1-title}{}}%
--        \else
--          % Otherwise just copy the Info node name.
--          \def\printedrefname{\ignorespaces #1}%
--        \fi%
--      \fi
--    \fi
--  \fi
--  %
--  % Make link in pdf output.
--  \ifpdf
--    {\indexnofonts
--     \turnoffactive
--     \makevalueexpandable
--     % This expands tokens, so do it after making catcode changes, so _
--     % etc. don't get their TeX definitions.  This ignores all spaces in
--     % #4, including (wrongly) those in the middle of the filename.
--     \getfilename{#4}%
--     %
--     % This (wrongly) does not take account of leading or trailing
--     % spaces in #1, which should be ignored.
--     \edef\pdfxrefdest{#1}%
--     \ifx\pdfxrefdest\empty
--       \def\pdfxrefdest{Top}% no empty targets
--     \else
--       \txiescapepdf\pdfxrefdest  % escape PDF special chars
--     \fi
--     %
--     \leavevmode
--     \startlink attr{/Border [0 0 0]}%
--     \ifnum\filenamelength>0
--       goto file{\the\filename.pdf} name{\pdfxrefdest}%
--     \else
--       goto name{\pdfmkpgn{\pdfxrefdest}}%
--     \fi
--    }%
--    \setcolor{\linkcolor}%
--  \fi
--  %
--  % Float references are printed completely differently: "Figure 1.2"
--  % instead of "[somenode], p.3".  We distinguish them by the
--  % LABEL-title being set to a magic string.
--  {%
--    % Have to otherify everything special to allow the \csname to
--    % include an _ in the xref name, etc.
--    \indexnofonts
--    \turnoffactive
--    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
--      \csname XR#1-title\endcsname
--  }%
--  \iffloat\Xthisreftitle
--    % If the user specified the print name (third arg) to the ref,
--    % print it instead of our usual "Figure 1.2".
--    \ifdim\wd\printedrefnamebox = 0pt
--      \refx{#1-snt}{}%
--    \else
--      \printedrefname
--    \fi
--    %
--    % If the user also gave the printed manual name (fifth arg), append
--    % "in MANUALNAME".
--    \ifdim \wd\printedmanualbox > 0pt
--      \space \putwordin{} \cite{\printedmanual}%
--    \fi
--  \else
--    % node/anchor (non-float) references.
--    %
--    % If we use \unhbox to print the node names, TeX does not insert
--    % empty discretionaries after hyphens, which means that it will not
--    % find a line break at a hyphen in a node names.  Since some manuals
--    % are best written with fairly long node names, containing hyphens,
--    % this is a loss.  Therefore, we give the text of the node name
--    % again, so it is as if TeX is seeing it for the first time.
--    %
--    \ifdim \wd\printedmanualbox > 0pt
--      % Cross-manual reference with a printed manual name.
--      %
--      \crossmanualxref{\cite{\printedmanual\unskip}}%
--    %
--    \else\ifdim \wd\infofilenamebox > 0pt
--      % Cross-manual reference with only an info filename (arg 4), no
--      % printed manual name (arg 5).  This is essentially the same as
--      % the case above; we output the filename, since we have nothing else.
--      %
--      \crossmanualxref{\code{\infofilename\unskip}}%
--    %
--    \else
--      % Reference within this manual.
--      %
--      % _ (for example) has to be the character _ for the purposes of the
--      % control sequence corresponding to the node, but it has to expand
--      % into the usual \leavevmode...\vrule stuff for purposes of
--      % printing. So we \turnoffactive for the \refx-snt, back on for the
--      % printing, back off for the \refx-pg.
--      {\turnoffactive
--       % Only output a following space if the -snt ref is nonempty; for
--       % @unnumbered and @anchor, it won't be.
--       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
--       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
--      }%
--      % output the `[mynode]' via the macro below so it can be overridden.
--      \xrefprintnodename\printedrefname
--      %
--      % But we always want a comma and a space:
--      ,\space
--      %
--      % output the `page 3'.
--      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
--    \fi\fi
--  \fi
--  \endlink
--\endgroup}
--
--% Output a cross-manual xref to #1.  Used just above (twice).
--%
--% Only include the text "Section ``foo'' in" if the foo is neither
--% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
--% "see The Foo Manual", the idea being to refer to the whole manual.
--%
--% But, this being TeX, we can't easily compare our node name against the
--% string "Top" while ignoring the possible spaces before and after in
--% the input.  By adding the arbitrary 7sp below, we make it much less
--% likely that a real node name would have the same width as "Top" (e.g.,
--% in a monospaced font).  Hopefully it will never happen in practice.
--%
--% For the same basic reason, we retypeset the "Top" at every
--% reference, since the current font is indeterminate.
--%
--\def\crossmanualxref#1{%
--  \setbox\toprefbox = \hbox{Top\kern7sp}%
--  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
--  \ifdim \wd2 > 7sp  % nonempty?
--    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
--      \putwordSection{} ``\printedrefname'' \putwordin{}\space
--    \fi
--  \fi
--  #1%
--}
--
--% This macro is called from \xrefX for the `[nodename]' part of xref
--% output.  It's a separate macro only so it can be changed more easily,
--% since square brackets don't work well in some documents.  Particularly
--% one that Bob is working on :).
--%
--\def\xrefprintnodename#1{[#1]}
--
--% Things referred to by \setref.
--%
--\def\Ynothing{}
--\def\Yomitfromtoc{}
--\def\Ynumbered{%
--  \ifnum\secno=0
--    \putwordChapter at tie \the\chapno
--  \else \ifnum\subsecno=0
--    \putwordSection at tie \the\chapno.\the\secno
--  \else \ifnum\subsubsecno=0
--    \putwordSection at tie \the\chapno.\the\secno.\the\subsecno
--  \else
--    \putwordSection at tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
--  \fi\fi\fi
--}
--\def\Yappendix{%
--  \ifnum\secno=0
--     \putwordAppendix at tie @char\the\appendixno{}%
--  \else \ifnum\subsecno=0
--     \putwordSection at tie @char\the\appendixno.\the\secno
--  \else \ifnum\subsubsecno=0
--    \putwordSection at tie @char\the\appendixno.\the\secno.\the\subsecno
--  \else
--    \putwordSection at tie
--      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
--  \fi\fi\fi
--}
--
--% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
--% If its value is nonempty, SUFFIX is output afterward.
--%
--\def\refx#1#2{%
--  {%
--    \indexnofonts
--    \otherbackslash
--    \expandafter\global\expandafter\let\expandafter\thisrefX
--      \csname XR#1\endcsname
--  }%
--  \ifx\thisrefX\relax
--    % If not defined, say something at least.
--    \angleleft un\-de\-fined\angleright
--    \iflinks
--      \ifhavexrefs
--        {\toks0 = {#1}% avoid expansion of possibly-complex value
--         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
--      \else
--        \ifwarnedxrefs\else
--          \global\warnedxrefstrue
--          \message{Cross reference values unknown; you must run TeX again.}%
--        \fi
--      \fi
--    \fi
--  \else
--    % It's defined, so just use it.
--    \thisrefX
--  \fi
--  #2% Output the suffix in any case.
--}
--
--% This is the macro invoked by entries in the aux file.  Usually it's
--% just a \def (we prepend XR to the control sequence name to avoid
--% collisions).  But if this is a float type, we have more work to do.
--%
--\def\xrdef#1#2{%
--  {% The node name might contain 8-bit characters, which in our current
--   % implementation are changed to commands like @'e.  Don't let these
--   % mess up the control sequence name.
--    \indexnofonts
--    \turnoffactive
--    \xdef\safexrefname{#1}%
--  }%
--  %
--  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
--  %
--  % Was that xref control sequence that we just defined for a float?
--  \expandafter\iffloat\csname XR\safexrefname\endcsname
--    % it was a float, and we have the (safe) float type in \iffloattype.
--    \expandafter\let\expandafter\floatlist
--      \csname floatlist\iffloattype\endcsname
--    %
--    % Is this the first time we've seen this float type?
--    \expandafter\ifx\floatlist\relax
--      \toks0 = {\do}% yes, so just \do
--    \else
--      % had it before, so preserve previous elements in list.
--      \toks0 = \expandafter{\floatlist\do}%
--    \fi
--    %
--    % Remember this xref in the control sequence \floatlistFLOATTYPE,
--    % for later use in \listoffloats.
--    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
--      {\safexrefname}}%
--  \fi
--}
--
--% Read the last existing aux file, if any.  No error if none exists.
--%
--\def\tryauxfile{%
--  \openin 1 \jobname.aux
--  \ifeof 1 \else
--    \readdatafile{aux}%
--    \global\havexrefstrue
--  \fi
--  \closein 1
--}
--
--\def\setupdatafile{%
--  \catcode`\^^@=\other
--  \catcode`\^^A=\other
--  \catcode`\^^B=\other
--  \catcode`\^^C=\other
--  \catcode`\^^D=\other
--  \catcode`\^^E=\other
--  \catcode`\^^F=\other
--  \catcode`\^^G=\other
--  \catcode`\^^H=\other
--  \catcode`\^^K=\other
--  \catcode`\^^L=\other
--  \catcode`\^^N=\other
--  \catcode`\^^P=\other
--  \catcode`\^^Q=\other
--  \catcode`\^^R=\other
--  \catcode`\^^S=\other
--  \catcode`\^^T=\other
--  \catcode`\^^U=\other
--  \catcode`\^^V=\other
--  \catcode`\^^W=\other
--  \catcode`\^^X=\other
--  \catcode`\^^Z=\other
--  \catcode`\^^[=\other
--  \catcode`\^^\=\other
--  \catcode`\^^]=\other
--  \catcode`\^^^=\other
--  \catcode`\^^_=\other
--  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
--  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
--  % supported in the main text, it doesn't seem desirable.  Furthermore,
--  % that is not enough: for node names that actually contain a ^
--  % character, we would end up writing a line like this: 'xrdef {'hat
--  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
--  % argument, and \hat is not an expandable control sequence.  It could
--  % all be worked out, but why?  Either we support ^^ or we don't.
--  %
--  % The other change necessary for this was to define \auxhat:
--  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
--  % and then to call \auxhat in \setq.
--  %
--  \catcode`\^=\other
--  %
--  % Special characters.  Should be turned off anyway, but...
--  \catcode`\~=\other
--  \catcode`\[=\other
--  \catcode`\]=\other
--  \catcode`\"=\other
--  \catcode`\_=\other
--  \catcode`\|=\other
--  \catcode`\<=\other
--  \catcode`\>=\other
--  \catcode`\$=\other
--  \catcode`\#=\other
--  \catcode`\&=\other
--  \catcode`\%=\other
--  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
--  %
--  % This is to support \ in node names and titles, since the \
--  % characters end up in a \csname.  It's easier than
--  % leaving it active and making its active definition an actual \
--  % character.  What I don't understand is why it works in the *value*
--  % of the xrdef.  Seems like it should be a catcode12 \, and that
--  % should not typeset properly.  But it works, so I'm moving on for
--  % now.  --karl, 15jan04.
--  \catcode`\\=\other
--  %
--  % Make the characters 128-255 be printing characters.
--  {%
--    \count1=128
--    \def\loop{%
--      \catcode\count1=\other
--      \advance\count1 by 1
--      \ifnum \count1<256 \loop \fi
--    }%
--  }%
--  %
--  % @ is our escape character in .aux files, and we need braces.
--  \catcode`\{=1
--  \catcode`\}=2
--  \catcode`\@=0
--}
--
--\def\readdatafile#1{%
--\begingroup
--  \setupdatafile
--  \input\jobname.#1
--\endgroup}
--
--
--\message{insertions,}
--% including footnotes.
--
--\newcount \footnoteno
--
--% The trailing space in the following definition for supereject is
--% vital for proper filling; pages come out unaligned when you do a
--% pagealignmacro call if that space before the closing brace is
--% removed. (Generally, numeric constants should always be followed by a
--% space to prevent strange expansion errors.)
--\def\supereject{\par\penalty -20000\footnoteno =0 }
--
--% @footnotestyle is meaningful for Info output only.
--\let\footnotestyle=\comment
--
--{\catcode `\@=11
--%
--% Auto-number footnotes.  Otherwise like plain.
--\gdef\footnote{%
--  \let\indent=\ptexindent
--  \let\noindent=\ptexnoindent
--  \global\advance\footnoteno by \@ne
--  \edef\thisfootno{$^{\the\footnoteno}$}%
--  %
--  % In case the footnote comes at the end of a sentence, preserve the
--  % extra spacing after we do the footnote number.
--  \let\@sf\empty
--  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
--  %
--  % Remove inadvertent blank space before typesetting the footnote number.
--  \unskip
--  \thisfootno\@sf
--  \dofootnote
--}%
--
--% Don't bother with the trickery in plain.tex to not require the
--% footnote text as a parameter.  Our footnotes don't need to be so general.
--%
--% Oh yes, they do; otherwise, @ifset (and anything else that uses
--% \parseargline) fails inside footnotes because the tokens are fixed when
--% the footnote is read.  --karl, 16nov96.
--%
--\gdef\dofootnote{%
--  \insert\footins\bgroup
--  % We want to typeset this text as a normal paragraph, even if the
--  % footnote reference occurs in (for example) a display environment.
--  % So reset some parameters.
--  \hsize=\pagewidth
--  \interlinepenalty\interfootnotelinepenalty
--  \splittopskip\ht\strutbox % top baseline for broken footnotes
--  \splitmaxdepth\dp\strutbox
--  \floatingpenalty\@MM
--  \leftskip\z at skip
--  \rightskip\z at skip
--  \spaceskip\z at skip
--  \xspaceskip\z at skip
--  \parindent\defaultparindent
--  %
--  \smallfonts \rm
--  %
--  % Because we use hanging indentation in footnotes, a @noindent appears
--  % to exdent this text, so make it be a no-op.  makeinfo does not use
--  % hanging indentation so @noindent can still be needed within footnote
--  % text after an @example or the like (not that this is good style).
--  \let\noindent = \relax
--  %
--  % Hang the footnote text off the number.  Use \everypar in case the
--  % footnote extends for more than one paragraph.
--  \everypar = {\hang}%
--  \textindent{\thisfootno}%
--  %
--  % Don't crash into the line above the footnote text.  Since this
--  % expands into a box, it must come within the paragraph, lest it
--  % provide a place where TeX can split the footnote.
--  \footstrut
--  %
--  % Invoke rest of plain TeX footnote routine.
--  \futurelet\next\fo at t
--}
--}%end \catcode `\@=11
--
--% In case a @footnote appears in a vbox, save the footnote text and create
--% the real \insert just after the vbox finished.  Otherwise, the insertion
--% would be lost.
--% Similarly, if a @footnote appears inside an alignment, save the footnote
--% text to a box and make the \insert when a row of the table is finished.
--% And the same can be done for other insert classes.  --kasal, 16nov03.
--
--% Replace the \insert primitive by a cheating macro.
--% Deeper inside, just make sure that the saved insertions are not spilled
--% out prematurely.
--%
--\def\startsavinginserts{%
--  \ifx \insert\ptexinsert
--    \let\insert\saveinsert
--  \else
--    \let\checkinserts\relax
--  \fi
--}
--
--% This \insert replacement works for both \insert\footins{foo} and
--% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
--%
--\def\saveinsert#1{%
--  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
--  \afterassignment\next
--  % swallow the left brace
--  \let\temp =
--}
--\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
--\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
--
--\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
--
--\def\placesaveins#1{%
--  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
--    {\box#1}%
--}
--
--% eat @SAVE -- beware, all of them have catcode \other:
--{
--  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
--  \gdef\gobblesave @SAVE{}
--}
--
--% initialization:
--\def\newsaveins #1{%
--  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
--  \next
--}
--\def\newsaveinsX #1{%
--  \csname newbox\endcsname #1%
--  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
--    \checksaveins #1}%
--}
--
--% initialize:
--\let\checkinserts\empty
--\newsaveins\footins
--\newsaveins\margin
--
--
--% @image.  We use the macros from epsf.tex to support this.
--% If epsf.tex is not installed and @image is used, we complain.
--%
--% Check for and read epsf.tex up front.  If we read it only at @image
--% time, we might be inside a group, and then its definitions would get
--% undone and the next image would fail.
--\openin 1 = epsf.tex
--\ifeof 1 \else
--  % Do not bother showing banner with epsf.tex v2.7k (available in
--  % doc/epsf.tex and on ctan).
--  \def\epsfannounce{\toks0 = }%
--  \input epsf.tex
--\fi
--\closein 1
--%
--% We will only complain once about lack of epsf.tex.
--\newif\ifwarnednoepsf
--\newhelp\noepsfhelp{epsf.tex must be installed for images to
--  work.  It is also included in the Texinfo distribution, or you can get
--  it from ftp://tug.org/tex/epsf.tex.}
--%
--\def\image#1{%
--  \ifx\epsfbox\thisisundefined
--    \ifwarnednoepsf \else
--      \errhelp = \noepsfhelp
--      \errmessage{epsf.tex not found, images will be ignored}%
--      \global\warnednoepsftrue
--    \fi
--  \else
--    \imagexxx #1,,,,,\finish
--  \fi
--}
--%
--% Arguments to @image:
--% #1 is (mandatory) image filename; we tack on .eps extension.
--% #2 is (optional) width, #3 is (optional) height.
--% #4 is (ignored optional) html alt text.
--% #5 is (ignored optional) extension.
--% #6 is just the usual extra ignored arg for parsing stuff.
--\newif\ifimagevmode
--\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
--  \catcode`\^^M = 5     % in case we're inside an example
--  \normalturnoffactive  % allow _ et al. in names
--  % If the image is by itself, center it.
--  \ifvmode
--    \imagevmodetrue
--  \else \ifx\centersub\centerV
--    % for @center @image, we need a vbox so we can have our vertical space
--    \imagevmodetrue
--    \vbox\bgroup % vbox has better behavior than vtop herev
--  \fi\fi
--  %
--  \ifimagevmode
--    \nobreak\medskip
--    % Usually we'll have text after the image which will insert
--    % \parskip glue, so insert it here too to equalize the space
--    % above and below.
--    \nobreak\vskip\parskip
--    \nobreak
--  \fi
--  %
--  % Leave vertical mode so that indentation from an enclosing
--  %  environment such as @quotation is respected.
--  % However, if we're at the top level, we don't want the
--  %  normal paragraph indentation.
--  % On the other hand, if we are in the case of @center @image, we don't
--  %  want to start a paragraph, which will create a hsize-width box and
--  %  eradicate the centering.
--  \ifx\centersub\centerV\else \noindent \fi
--  %
--  % Output the image.
--  \ifpdf
--    \dopdfimage{#1}{#2}{#3}%
--  \else
--    % \epsfbox itself resets \epsf?size at each figure.
--    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
--    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
--    \epsfbox{#1.eps}%
--  \fi
--  %
--  \ifimagevmode
--    \medskip  % space after a standalone image
--  \fi
--  \ifx\centersub\centerV \egroup \fi
--\endgroup}
--
--
--% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
--% etc.  We don't actually implement floating yet, we always include the
--% float "here".  But it seemed the best name for the future.
--%
--\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
--
--% There may be a space before second and/or third parameter; delete it.
--\def\eatcommaspace#1, {#1,}
--
--% #1 is the optional FLOATTYPE, the text label for this float, typically
--% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
--% this float will not be numbered and cannot be referred to.
--%
--% #2 is the optional xref label.  Also must be present for the float to
--% be referable.
--%
--% #3 is the optional positioning argument; for now, it is ignored.  It
--% will somehow specify the positions allowed to float to (here, top, bottom).
--%
--% We keep a separate counter for each FLOATTYPE, which we reset at each
--% chapter-level command.
--\let\resetallfloatnos=\empty
--%
--\def\dofloat#1,#2,#3,#4\finish{%
--  \let\thiscaption=\empty
--  \let\thisshortcaption=\empty
--  %
--  % don't lose footnotes inside @float.
--  %
--  % BEWARE: when the floats start float, we have to issue warning whenever an
--  % insert appears inside a float which could possibly float. --kasal, 26may04
--  %
--  \startsavinginserts
--  %
--  % We can't be used inside a paragraph.
--  \par
--  %
--  \vtop\bgroup
--    \def\floattype{#1}%
--    \def\floatlabel{#2}%
--    \def\floatloc{#3}% we do nothing with this yet.
--    %
--    \ifx\floattype\empty
--      \let\safefloattype=\empty
--    \else
--      {%
--        % the floattype might have accents or other special characters,
--        % but we need to use it in a control sequence name.
--        \indexnofonts
--        \turnoffactive
--        \xdef\safefloattype{\floattype}%
--      }%
--    \fi
--    %
--    % If label is given but no type, we handle that as the empty type.
--    \ifx\floatlabel\empty \else
--      % We want each FLOATTYPE to be numbered separately (Figure 1,
--      % Table 1, Figure 2, ...).  (And if no label, no number.)
--      %
--      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
--      \global\advance\floatno by 1
--      %
--      {%
--        % This magic value for \lastsection is output by \setref as the
--        % XREFLABEL-title value.  \xrefX uses it to distinguish float
--        % labels (which have a completely different output format) from
--        % node and anchor labels.  And \xrdef uses it to construct the
--        % lists of floats.
--        %
--        \edef\lastsection{\floatmagic=\safefloattype}%
--        \setref{\floatlabel}{Yfloat}%
--      }%
--    \fi
--    %
--    % start with \parskip glue, I guess.
--    \vskip\parskip
--    %
--    % Don't suppress indentation if a float happens to start a section.
--    \restorefirstparagraphindent
--}
--
--% we have these possibilities:
--% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
--% @float Foo,lbl & no caption:    Foo 1.1
--% @float Foo & @caption{Cap}:     Foo: Cap
--% @float Foo & no caption:        Foo
--% @float ,lbl & Caption{Cap}:     1.1: Cap
--% @float ,lbl & no caption:       1.1
--% @float & @caption{Cap}:         Cap
--% @float & no caption:
--%
--\def\Efloat{%
--    \let\floatident = \empty
--    %
--    % In all cases, if we have a float type, it comes first.
--    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
--    %
--    % If we have an xref label, the number comes next.
--    \ifx\floatlabel\empty \else
--      \ifx\floattype\empty \else % if also had float type, need tie first.
--        \appendtomacro\floatident{\tie}%
--      \fi
--      % the number.
--      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
--    \fi
--    %
--    % Start the printed caption with what we've constructed in
--    % \floatident, but keep it separate; we need \floatident again.
--    \let\captionline = \floatident
--    %
--    \ifx\thiscaption\empty \else
--      \ifx\floatident\empty \else
--	\appendtomacro\captionline{: }% had ident, so need a colon between
--      \fi
--      %
--      % caption text.
--      \appendtomacro\captionline{\scanexp\thiscaption}%
--    \fi
--    %
--    % If we have anything to print, print it, with space before.
--    % Eventually this needs to become an \insert.
--    \ifx\captionline\empty \else
--      \vskip.5\parskip
--      \captionline
--      %
--      % Space below caption.
--      \vskip\parskip
--    \fi
--    %
--    % If have an xref label, write the list of floats info.  Do this
--    % after the caption, to avoid chance of it being a breakpoint.
--    \ifx\floatlabel\empty \else
--      % Write the text that goes in the lof to the aux file as
--      % \floatlabel-lof.  Besides \floatident, we include the short
--      % caption if specified, else the full caption if specified, else nothing.
--      {%
--        \atdummies
--        %
--        % since we read the caption text in the macro world, where ^^M
--        % is turned into a normal character, we have to scan it back, so
--        % we don't write the literal three characters "^^M" into the aux file.
--	\scanexp{%
--	  \xdef\noexpand\gtemp{%
--	    \ifx\thisshortcaption\empty
--	      \thiscaption
--	    \else
--	      \thisshortcaption
--	    \fi
--	  }%
--	}%
--        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
--	  \ifx\gtemp\empty \else : \gtemp \fi}}%
--      }%
--    \fi
--  \egroup  % end of \vtop
--  %
--  % place the captured inserts
--  %
--  % BEWARE: when the floats start floating, we have to issue warning
--  % whenever an insert appears inside a float which could possibly
--  % float. --kasal, 26may04
--  %
--  \checkinserts
--}
--
--% Append the tokens #2 to the definition of macro #1, not expanding either.
--%
--\def\appendtomacro#1#2{%
--  \expandafter\def\expandafter#1\expandafter{#1#2}%
--}
--
--% @caption, @shortcaption
--%
--\def\caption{\docaption\thiscaption}
--\def\shortcaption{\docaption\thisshortcaption}
--\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
--\def\defcaption#1#2{\egroup \def#1{#2}}
--
--% The parameter is the control sequence identifying the counter we are
--% going to use.  Create it if it doesn't exist and assign it to \floatno.
--\def\getfloatno#1{%
--  \ifx#1\relax
--      % Haven't seen this figure type before.
--      \csname newcount\endcsname #1%
--      %
--      % Remember to reset this floatno at the next chap.
--      \expandafter\gdef\expandafter\resetallfloatnos
--        \expandafter{\resetallfloatnos #1=0 }%
--  \fi
--  \let\floatno#1%
--}
--
--% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
--% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
--% first read the @float command.
--%
--\def\Yfloat{\floattype at tie \chaplevelprefix\the\floatno}%
--
--% Magic string used for the XREFLABEL-title value, so \xrefX can
--% distinguish floats from other xref types.
--\def\floatmagic{!!float!!}
--
--% #1 is the control sequence we are passed; we expand into a conditional
--% which is true if #1 represents a float ref.  That is, the magic
--% \lastsection value which we \setref above.
--%
--\def\iffloat#1{\expandafter\doiffloat#1==\finish}
--%
--% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
--% (safe) float type for this float.  We set \iffloattype to #2.
--%
--\def\doiffloat#1=#2=#3\finish{%
--  \def\temp{#1}%
--  \def\iffloattype{#2}%
--  \ifx\temp\floatmagic
--}
--
--% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
--%
--\parseargdef\listoffloats{%
--  \def\floattype{#1}% floattype
--  {%
--    % the floattype might have accents or other special characters,
--    % but we need to use it in a control sequence name.
--    \indexnofonts
--    \turnoffactive
--    \xdef\safefloattype{\floattype}%
--  }%
--  %
--  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
--  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
--    \ifhavexrefs
--      % if the user said @listoffloats foo but never @float foo.
--      \message{\linenumber No `\safefloattype' floats to list.}%
--    \fi
--  \else
--    \begingroup
--      \leftskip=\tocindent  % indent these entries like a toc
--      \let\do=\listoffloatsdo
--      \csname floatlist\safefloattype\endcsname
--    \endgroup
--  \fi
--}
--
--% This is called on each entry in a list of floats.  We're passed the
--% xref label, in the form LABEL-title, which is how we save it in the
--% aux file.  We strip off the -title and look up \XRLABEL-lof, which
--% has the text we're supposed to typeset here.
--%
--% Figures without xref labels will not be included in the list (since
--% they won't appear in the aux file).
--%
--\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
--\def\listoffloatsdoentry#1-title\finish{{%
--  % Can't fully expand XR#1-lof because it can contain anything.  Just
--  % pass the control sequence.  On the other hand, XR#1-pg is just the
--  % page number, and we want to fully expand that so we can get a link
--  % in pdf output.
--  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
--  %
--  % use the same \entry macro we use to generate the TOC and index.
--  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
--  \writeentry
--}}
--
--
--\message{localization,}
--
--% For single-language documents, @documentlanguage is usually given very
--% early, just after @documentencoding.  Single argument is the language
--% (de) or locale (de_DE) abbreviation.
--%
--{
--  \catcode`\_ = \active
--  \globaldefs=1
--\parseargdef\documentlanguage{\begingroup
--  \let_=\normalunderscore  % normal _ character for filenames
--  \tex % read txi-??.tex file in plain TeX.
--    % Read the file by the name they passed if it exists.
--    \openin 1 txi-#1.tex
--    \ifeof 1
--      \documentlanguagetrywithoutunderscore{#1_\finish}%
--    \else
--      \globaldefs = 1  % everything in the txi-LL files needs to persist
--      \input txi-#1.tex
--    \fi
--    \closein 1
--  \endgroup % end raw TeX
--\endgroup}
--%
--% If they passed de_DE, and txi-de_DE.tex doesn't exist,
--% try txi-de.tex.
--%
--\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
--  \openin 1 txi-#1.tex
--  \ifeof 1
--    \errhelp = \nolanghelp
--    \errmessage{Cannot read language file txi-#1.tex}%
--  \else
--    \globaldefs = 1  % everything in the txi-LL files needs to persist
--    \input txi-#1.tex
--  \fi
--  \closein 1
--}
--}% end of special _ catcode
--%
--\newhelp\nolanghelp{The given language definition file cannot be found or
--is empty.  Maybe you need to install it?  Putting it in the current
--directory should work if nowhere else does.}
--
--% This macro is called from txi-??.tex files; the first argument is the
--% \language name to set (without the "\lang@" prefix), the second and
--% third args are \{left,right}hyphenmin.
--%
--% The language names to pass are determined when the format is built.
--% See the etex.log file created at that time, e.g.,
--% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
--%
--% With TeX Live 2008, etex now includes hyphenation patterns for all
--% available languages.  This means we can support hyphenation in
--% Texinfo, at least to some extent.  (This still doesn't solve the
--% accented characters problem.)
--%
--\catcode`@=11
--\def\txisetlanguage#1#2#3{%
--  % do not set the language if the name is undefined in the current TeX.
--  \expandafter\ifx\csname lang@#1\endcsname \relax
--    \message{no patterns for #1}%
--  \else
--    \global\language = \csname lang@#1\endcsname
--  \fi
--  % but there is no harm in adjusting the hyphenmin values regardless.
--  \global\lefthyphenmin = #2\relax
--  \global\righthyphenmin = #3\relax
--}
--
--% Helpers for encodings.
--% Set the catcode of characters 128 through 255 to the specified number.
--%
--\def\setnonasciicharscatcode#1{%
--   \count255=128
--   \loop\ifnum\count255<256
--      \global\catcode\count255=#1\relax
--      \advance\count255 by 1
--   \repeat
--}
--
--\def\setnonasciicharscatcodenonglobal#1{%
--   \count255=128
--   \loop\ifnum\count255<256
--      \catcode\count255=#1\relax
--      \advance\count255 by 1
--   \repeat
--}
--
--% @documentencoding sets the definition of non-ASCII characters
--% according to the specified encoding.
--%
--\parseargdef\documentencoding{%
--  % Encoding being declared for the document.
--  \def\declaredencoding{\csname #1.enc\endcsname}%
--  %
--  % Supported encodings: names converted to tokens in order to be able
--  % to compare them with \ifx.
--  \def\ascii{\csname US-ASCII.enc\endcsname}%
--  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
--  \def\latone{\csname ISO-8859-1.enc\endcsname}%
--  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
--  \def\utfeight{\csname UTF-8.enc\endcsname}%
--  %
--  \ifx \declaredencoding \ascii
--     \asciichardefs
--  %
--  \else \ifx \declaredencoding \lattwo
--     \setnonasciicharscatcode\active
--     \lattwochardefs
--  %
--  \else \ifx \declaredencoding \latone
--     \setnonasciicharscatcode\active
--     \latonechardefs
--  %
--  \else \ifx \declaredencoding \latnine
--     \setnonasciicharscatcode\active
--     \latninechardefs
--  %
--  \else \ifx \declaredencoding \utfeight
--     \setnonasciicharscatcode\active
--     \utfeightchardefs
--  %
--  \else
--    \message{Unknown document encoding #1, ignoring.}%
--  %
--  \fi % utfeight
--  \fi % latnine
--  \fi % latone
--  \fi % lattwo
--  \fi % ascii
--}
--
--% A message to be logged when using a character that isn't available
--% the default font encoding (OT1).
--%
--\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
--
--% Take account of \c (plain) vs. \, (Texinfo) difference.
--\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
--
--% First, make active non-ASCII characters in order for them to be
--% correctly categorized when TeX reads the replacement text of
--% macros containing the character definitions.
--\setnonasciicharscatcode\active
--%
--% Latin1 (ISO-8859-1) character definitions.
--\def\latonechardefs{%
--  \gdef^^a0{\tie}
--  \gdef^^a1{\exclamdown}
--  \gdef^^a2{\missingcharmsg{CENT SIGN}}
--  \gdef^^a3{{\pounds}}
--  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
--  \gdef^^a5{\missingcharmsg{YEN SIGN}}
--  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
--  \gdef^^a7{\S}
--  \gdef^^a8{\"{}}
--  \gdef^^a9{\copyright}
--  \gdef^^aa{\ordf}
--  \gdef^^ab{\guillemetleft}
--  \gdef^^ac{$\lnot$}
--  \gdef^^ad{\-}
--  \gdef^^ae{\registeredsymbol}
--  \gdef^^af{\={}}
--  %
--  \gdef^^b0{\textdegree}
--  \gdef^^b1{$\pm$}
--  \gdef^^b2{$^2$}
--  \gdef^^b3{$^3$}
--  \gdef^^b4{\'{}}
--  \gdef^^b5{$\mu$}
--  \gdef^^b6{\P}
--  %
--  \gdef^^b7{$^.$}
--  \gdef^^b8{\cedilla\ }
--  \gdef^^b9{$^1$}
--  \gdef^^ba{\ordm}
--  %
--  \gdef^^bb{\guillemetright}
--  \gdef^^bc{$1\over4$}
--  \gdef^^bd{$1\over2$}
--  \gdef^^be{$3\over4$}
--  \gdef^^bf{\questiondown}
--  %
--  \gdef^^c0{\`A}
--  \gdef^^c1{\'A}
--  \gdef^^c2{\^A}
--  \gdef^^c3{\~A}
--  \gdef^^c4{\"A}
--  \gdef^^c5{\ringaccent A}
--  \gdef^^c6{\AE}
--  \gdef^^c7{\cedilla C}
--  \gdef^^c8{\`E}
--  \gdef^^c9{\'E}
--  \gdef^^ca{\^E}
--  \gdef^^cb{\"E}
--  \gdef^^cc{\`I}
--  \gdef^^cd{\'I}
--  \gdef^^ce{\^I}
--  \gdef^^cf{\"I}
--  %
--  \gdef^^d0{\DH}
--  \gdef^^d1{\~N}
--  \gdef^^d2{\`O}
--  \gdef^^d3{\'O}
--  \gdef^^d4{\^O}
--  \gdef^^d5{\~O}
--  \gdef^^d6{\"O}
--  \gdef^^d7{$\times$}
--  \gdef^^d8{\O}
--  \gdef^^d9{\`U}
--  \gdef^^da{\'U}
--  \gdef^^db{\^U}
--  \gdef^^dc{\"U}
--  \gdef^^dd{\'Y}
--  \gdef^^de{\TH}
--  \gdef^^df{\ss}
--  %
--  \gdef^^e0{\`a}
--  \gdef^^e1{\'a}
--  \gdef^^e2{\^a}
--  \gdef^^e3{\~a}
--  \gdef^^e4{\"a}
--  \gdef^^e5{\ringaccent a}
--  \gdef^^e6{\ae}
--  \gdef^^e7{\cedilla c}
--  \gdef^^e8{\`e}
--  \gdef^^e9{\'e}
--  \gdef^^ea{\^e}
--  \gdef^^eb{\"e}
--  \gdef^^ec{\`{\dotless i}}
--  \gdef^^ed{\'{\dotless i}}
--  \gdef^^ee{\^{\dotless i}}
--  \gdef^^ef{\"{\dotless i}}
--  %
--  \gdef^^f0{\dh}
--  \gdef^^f1{\~n}
--  \gdef^^f2{\`o}
--  \gdef^^f3{\'o}
--  \gdef^^f4{\^o}
--  \gdef^^f5{\~o}
--  \gdef^^f6{\"o}
--  \gdef^^f7{$\div$}
--  \gdef^^f8{\o}
--  \gdef^^f9{\`u}
--  \gdef^^fa{\'u}
--  \gdef^^fb{\^u}
--  \gdef^^fc{\"u}
--  \gdef^^fd{\'y}
--  \gdef^^fe{\th}
--  \gdef^^ff{\"y}
--}
--
--% Latin9 (ISO-8859-15) encoding character definitions.
--\def\latninechardefs{%
--  % Encoding is almost identical to Latin1.
--  \latonechardefs
--  %
--  \gdef^^a4{\euro}
--  \gdef^^a6{\v S}
--  \gdef^^a8{\v s}
--  \gdef^^b4{\v Z}
--  \gdef^^b8{\v z}
--  \gdef^^bc{\OE}
--  \gdef^^bd{\oe}
--  \gdef^^be{\"Y}
--}
--
--% Latin2 (ISO-8859-2) character definitions.
--\def\lattwochardefs{%
--  \gdef^^a0{\tie}
--  \gdef^^a1{\ogonek{A}}
--  \gdef^^a2{\u{}}
--  \gdef^^a3{\L}
--  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
--  \gdef^^a5{\v L}
--  \gdef^^a6{\'S}
--  \gdef^^a7{\S}
--  \gdef^^a8{\"{}}
--  \gdef^^a9{\v S}
--  \gdef^^aa{\cedilla S}
--  \gdef^^ab{\v T}
--  \gdef^^ac{\'Z}
--  \gdef^^ad{\-}
--  \gdef^^ae{\v Z}
--  \gdef^^af{\dotaccent Z}
--  %
--  \gdef^^b0{\textdegree}
--  \gdef^^b1{\ogonek{a}}
--  \gdef^^b2{\ogonek{ }}
--  \gdef^^b3{\l}
--  \gdef^^b4{\'{}}
--  \gdef^^b5{\v l}
--  \gdef^^b6{\'s}
--  \gdef^^b7{\v{}}
--  \gdef^^b8{\cedilla\ }
--  \gdef^^b9{\v s}
--  \gdef^^ba{\cedilla s}
--  \gdef^^bb{\v t}
--  \gdef^^bc{\'z}
--  \gdef^^bd{\H{}}
--  \gdef^^be{\v z}
--  \gdef^^bf{\dotaccent z}
--  %
--  \gdef^^c0{\'R}
--  \gdef^^c1{\'A}
--  \gdef^^c2{\^A}
--  \gdef^^c3{\u A}
--  \gdef^^c4{\"A}
--  \gdef^^c5{\'L}
--  \gdef^^c6{\'C}
--  \gdef^^c7{\cedilla C}
--  \gdef^^c8{\v C}
--  \gdef^^c9{\'E}
--  \gdef^^ca{\ogonek{E}}
--  \gdef^^cb{\"E}
--  \gdef^^cc{\v E}
--  \gdef^^cd{\'I}
--  \gdef^^ce{\^I}
--  \gdef^^cf{\v D}
--  %
--  \gdef^^d0{\DH}
--  \gdef^^d1{\'N}
--  \gdef^^d2{\v N}
--  \gdef^^d3{\'O}
--  \gdef^^d4{\^O}
--  \gdef^^d5{\H O}
--  \gdef^^d6{\"O}
--  \gdef^^d7{$\times$}
--  \gdef^^d8{\v R}
--  \gdef^^d9{\ringaccent U}
--  \gdef^^da{\'U}
--  \gdef^^db{\H U}
--  \gdef^^dc{\"U}
--  \gdef^^dd{\'Y}
--  \gdef^^de{\cedilla T}
--  \gdef^^df{\ss}
--  %
--  \gdef^^e0{\'r}
--  \gdef^^e1{\'a}
--  \gdef^^e2{\^a}
--  \gdef^^e3{\u a}
--  \gdef^^e4{\"a}
--  \gdef^^e5{\'l}
--  \gdef^^e6{\'c}
--  \gdef^^e7{\cedilla c}
--  \gdef^^e8{\v c}
--  \gdef^^e9{\'e}
--  \gdef^^ea{\ogonek{e}}
--  \gdef^^eb{\"e}
--  \gdef^^ec{\v e}
--  \gdef^^ed{\'{\dotless{i}}}
--  \gdef^^ee{\^{\dotless{i}}}
--  \gdef^^ef{\v d}
--  %
--  \gdef^^f0{\dh}
--  \gdef^^f1{\'n}
--  \gdef^^f2{\v n}
--  \gdef^^f3{\'o}
--  \gdef^^f4{\^o}
--  \gdef^^f5{\H o}
--  \gdef^^f6{\"o}
--  \gdef^^f7{$\div$}
--  \gdef^^f8{\v r}
--  \gdef^^f9{\ringaccent u}
--  \gdef^^fa{\'u}
--  \gdef^^fb{\H u}
--  \gdef^^fc{\"u}
--  \gdef^^fd{\'y}
--  \gdef^^fe{\cedilla t}
--  \gdef^^ff{\dotaccent{}}
--}
--
--% UTF-8 character definitions.
--%
--% This code to support UTF-8 is based on LaTeX's utf8.def, with some
--% changes for Texinfo conventions.  It is included here under the GPL by
--% permission from Frank Mittelbach and the LaTeX team.
--%
--\newcount\countUTFx
--\newcount\countUTFy
--\newcount\countUTFz
--
--\gdef\UTFviiiTwoOctets#1#2{\expandafter
--   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
--%
--\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
--   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
--%
--\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
--   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
--
--\gdef\UTFviiiDefined#1{%
--  \ifx #1\relax
--    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
--  \else
--    \expandafter #1%
--  \fi
--}
--
--\begingroup
--  \catcode`\~13
--  \catcode`\"12
--
--  \def\UTFviiiLoop{%
--    \global\catcode\countUTFx\active
--    \uccode`\~\countUTFx
--    \uppercase\expandafter{\UTFviiiTmp}%
--    \advance\countUTFx by 1
--    \ifnum\countUTFx < \countUTFy
--      \expandafter\UTFviiiLoop
--    \fi}
--
--  \countUTFx = "C2
--  \countUTFy = "E0
--  \def\UTFviiiTmp{%
--    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
--  \UTFviiiLoop
--
--  \countUTFx = "E0
--  \countUTFy = "F0
--  \def\UTFviiiTmp{%
--    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
--  \UTFviiiLoop
--
--  \countUTFx = "F0
--  \countUTFy = "F4
--  \def\UTFviiiTmp{%
--    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
--  \UTFviiiLoop
--\endgroup
--
--\begingroup
--  \catcode`\"=12
--  \catcode`\<=12
--  \catcode`\.=12
--  \catcode`\,=12
--  \catcode`\;=12
--  \catcode`\!=12
--  \catcode`\~=13
--
--  \gdef\DeclareUnicodeCharacter#1#2{%
--    \countUTFz = "#1\relax
--    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
--    \begingroup
--      \parseXMLCharref
--      \def\UTFviiiTwoOctets##1##2{%
--        \csname u8:##1\string ##2\endcsname}%
--      \def\UTFviiiThreeOctets##1##2##3{%
--        \csname u8:##1\string ##2\string ##3\endcsname}%
--      \def\UTFviiiFourOctets##1##2##3##4{%
--        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
--      \expandafter\expandafter\expandafter\expandafter
--       \expandafter\expandafter\expandafter
--       \gdef\UTFviiiTmp{#2}%
--    \endgroup}
--
--  \gdef\parseXMLCharref{%
--    \ifnum\countUTFz < "A0\relax
--      \errhelp = \EMsimple
--      \errmessage{Cannot define Unicode char value < 00A0}%
--    \else\ifnum\countUTFz < "800\relax
--      \parseUTFviiiA,%
--      \parseUTFviiiB C\UTFviiiTwoOctets.,%
--    \else\ifnum\countUTFz < "10000\relax
--      \parseUTFviiiA;%
--      \parseUTFviiiA,%
--      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
--    \else
--      \parseUTFviiiA;%
--      \parseUTFviiiA,%
--      \parseUTFviiiA!%
--      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
--    \fi\fi\fi
--  }
--
--  \gdef\parseUTFviiiA#1{%
--    \countUTFx = \countUTFz
--    \divide\countUTFz by 64
--    \countUTFy = \countUTFz
--    \multiply\countUTFz by 64
--    \advance\countUTFx by -\countUTFz
--    \advance\countUTFx by 128
--    \uccode `#1\countUTFx
--    \countUTFz = \countUTFy}
--
--  \gdef\parseUTFviiiB#1#2#3#4{%
--    \advance\countUTFz by "#10\relax
--    \uccode `#3\countUTFz
--    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
--\endgroup
--
--\def\utfeightchardefs{%
--  \DeclareUnicodeCharacter{00A0}{\tie}
--  \DeclareUnicodeCharacter{00A1}{\exclamdown}
--  \DeclareUnicodeCharacter{00A3}{\pounds}
--  \DeclareUnicodeCharacter{00A8}{\"{ }}
--  \DeclareUnicodeCharacter{00A9}{\copyright}
--  \DeclareUnicodeCharacter{00AA}{\ordf}
--  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
--  \DeclareUnicodeCharacter{00AD}{\-}
--  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
--  \DeclareUnicodeCharacter{00AF}{\={ }}
--
--  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
--  \DeclareUnicodeCharacter{00B4}{\'{ }}
--  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
--  \DeclareUnicodeCharacter{00BA}{\ordm}
--  \DeclareUnicodeCharacter{00BB}{\guillemetright}
--  \DeclareUnicodeCharacter{00BF}{\questiondown}
--
--  \DeclareUnicodeCharacter{00C0}{\`A}
--  \DeclareUnicodeCharacter{00C1}{\'A}
--  \DeclareUnicodeCharacter{00C2}{\^A}
--  \DeclareUnicodeCharacter{00C3}{\~A}
--  \DeclareUnicodeCharacter{00C4}{\"A}
--  \DeclareUnicodeCharacter{00C5}{\AA}
--  \DeclareUnicodeCharacter{00C6}{\AE}
--  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
--  \DeclareUnicodeCharacter{00C8}{\`E}
--  \DeclareUnicodeCharacter{00C9}{\'E}
--  \DeclareUnicodeCharacter{00CA}{\^E}
--  \DeclareUnicodeCharacter{00CB}{\"E}
--  \DeclareUnicodeCharacter{00CC}{\`I}
--  \DeclareUnicodeCharacter{00CD}{\'I}
--  \DeclareUnicodeCharacter{00CE}{\^I}
--  \DeclareUnicodeCharacter{00CF}{\"I}
--
--  \DeclareUnicodeCharacter{00D0}{\DH}
--  \DeclareUnicodeCharacter{00D1}{\~N}
--  \DeclareUnicodeCharacter{00D2}{\`O}
--  \DeclareUnicodeCharacter{00D3}{\'O}
--  \DeclareUnicodeCharacter{00D4}{\^O}
--  \DeclareUnicodeCharacter{00D5}{\~O}
--  \DeclareUnicodeCharacter{00D6}{\"O}
--  \DeclareUnicodeCharacter{00D8}{\O}
--  \DeclareUnicodeCharacter{00D9}{\`U}
--  \DeclareUnicodeCharacter{00DA}{\'U}
--  \DeclareUnicodeCharacter{00DB}{\^U}
--  \DeclareUnicodeCharacter{00DC}{\"U}
--  \DeclareUnicodeCharacter{00DD}{\'Y}
--  \DeclareUnicodeCharacter{00DE}{\TH}
--  \DeclareUnicodeCharacter{00DF}{\ss}
--
--  \DeclareUnicodeCharacter{00E0}{\`a}
--  \DeclareUnicodeCharacter{00E1}{\'a}
--  \DeclareUnicodeCharacter{00E2}{\^a}
--  \DeclareUnicodeCharacter{00E3}{\~a}
--  \DeclareUnicodeCharacter{00E4}{\"a}
--  \DeclareUnicodeCharacter{00E5}{\aa}
--  \DeclareUnicodeCharacter{00E6}{\ae}
--  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
--  \DeclareUnicodeCharacter{00E8}{\`e}
--  \DeclareUnicodeCharacter{00E9}{\'e}
--  \DeclareUnicodeCharacter{00EA}{\^e}
--  \DeclareUnicodeCharacter{00EB}{\"e}
--  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
--  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
--  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
--  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
--
--  \DeclareUnicodeCharacter{00F0}{\dh}
--  \DeclareUnicodeCharacter{00F1}{\~n}
--  \DeclareUnicodeCharacter{00F2}{\`o}
--  \DeclareUnicodeCharacter{00F3}{\'o}
--  \DeclareUnicodeCharacter{00F4}{\^o}
--  \DeclareUnicodeCharacter{00F5}{\~o}
--  \DeclareUnicodeCharacter{00F6}{\"o}
--  \DeclareUnicodeCharacter{00F8}{\o}
--  \DeclareUnicodeCharacter{00F9}{\`u}
--  \DeclareUnicodeCharacter{00FA}{\'u}
--  \DeclareUnicodeCharacter{00FB}{\^u}
--  \DeclareUnicodeCharacter{00FC}{\"u}
--  \DeclareUnicodeCharacter{00FD}{\'y}
--  \DeclareUnicodeCharacter{00FE}{\th}
--  \DeclareUnicodeCharacter{00FF}{\"y}
--
--  \DeclareUnicodeCharacter{0100}{\=A}
--  \DeclareUnicodeCharacter{0101}{\=a}
--  \DeclareUnicodeCharacter{0102}{\u{A}}
--  \DeclareUnicodeCharacter{0103}{\u{a}}
--  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
--  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
--  \DeclareUnicodeCharacter{0106}{\'C}
--  \DeclareUnicodeCharacter{0107}{\'c}
--  \DeclareUnicodeCharacter{0108}{\^C}
--  \DeclareUnicodeCharacter{0109}{\^c}
--  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
--  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
--  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
--  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
--  \DeclareUnicodeCharacter{010C}{\v{C}}
--  \DeclareUnicodeCharacter{010D}{\v{c}}
--  \DeclareUnicodeCharacter{010E}{\v{D}}
--
--  \DeclareUnicodeCharacter{0112}{\=E}
--  \DeclareUnicodeCharacter{0113}{\=e}
--  \DeclareUnicodeCharacter{0114}{\u{E}}
--  \DeclareUnicodeCharacter{0115}{\u{e}}
--  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
--  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
--  \DeclareUnicodeCharacter{011A}{\v{E}}
--  \DeclareUnicodeCharacter{011B}{\v{e}}
--  \DeclareUnicodeCharacter{011C}{\^G}
--  \DeclareUnicodeCharacter{011D}{\^g}
--  \DeclareUnicodeCharacter{011E}{\u{G}}
--  \DeclareUnicodeCharacter{011F}{\u{g}}
--
--  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
--  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
--  \DeclareUnicodeCharacter{0124}{\^H}
--  \DeclareUnicodeCharacter{0125}{\^h}
--  \DeclareUnicodeCharacter{0128}{\~I}
--  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
--  \DeclareUnicodeCharacter{012A}{\=I}
--  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
--  \DeclareUnicodeCharacter{012C}{\u{I}}
--  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
--
--  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
--  \DeclareUnicodeCharacter{0131}{\dotless{i}}
--  \DeclareUnicodeCharacter{0132}{IJ}
--  \DeclareUnicodeCharacter{0133}{ij}
--  \DeclareUnicodeCharacter{0134}{\^J}
--  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
--  \DeclareUnicodeCharacter{0139}{\'L}
--  \DeclareUnicodeCharacter{013A}{\'l}
--
--  \DeclareUnicodeCharacter{0141}{\L}
--  \DeclareUnicodeCharacter{0142}{\l}
--  \DeclareUnicodeCharacter{0143}{\'N}
--  \DeclareUnicodeCharacter{0144}{\'n}
--  \DeclareUnicodeCharacter{0147}{\v{N}}
--  \DeclareUnicodeCharacter{0148}{\v{n}}
--  \DeclareUnicodeCharacter{014C}{\=O}
--  \DeclareUnicodeCharacter{014D}{\=o}
--  \DeclareUnicodeCharacter{014E}{\u{O}}
--  \DeclareUnicodeCharacter{014F}{\u{o}}
--
--  \DeclareUnicodeCharacter{0150}{\H{O}}
--  \DeclareUnicodeCharacter{0151}{\H{o}}
--  \DeclareUnicodeCharacter{0152}{\OE}
--  \DeclareUnicodeCharacter{0153}{\oe}
--  \DeclareUnicodeCharacter{0154}{\'R}
--  \DeclareUnicodeCharacter{0155}{\'r}
--  \DeclareUnicodeCharacter{0158}{\v{R}}
--  \DeclareUnicodeCharacter{0159}{\v{r}}
--  \DeclareUnicodeCharacter{015A}{\'S}
--  \DeclareUnicodeCharacter{015B}{\'s}
--  \DeclareUnicodeCharacter{015C}{\^S}
--  \DeclareUnicodeCharacter{015D}{\^s}
--  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
--  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
--
--  \DeclareUnicodeCharacter{0160}{\v{S}}
--  \DeclareUnicodeCharacter{0161}{\v{s}}
--  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
--  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
--  \DeclareUnicodeCharacter{0164}{\v{T}}
--
--  \DeclareUnicodeCharacter{0168}{\~U}
--  \DeclareUnicodeCharacter{0169}{\~u}
--  \DeclareUnicodeCharacter{016A}{\=U}
--  \DeclareUnicodeCharacter{016B}{\=u}
--  \DeclareUnicodeCharacter{016C}{\u{U}}
--  \DeclareUnicodeCharacter{016D}{\u{u}}
--  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
--  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
--
--  \DeclareUnicodeCharacter{0170}{\H{U}}
--  \DeclareUnicodeCharacter{0171}{\H{u}}
--  \DeclareUnicodeCharacter{0174}{\^W}
--  \DeclareUnicodeCharacter{0175}{\^w}
--  \DeclareUnicodeCharacter{0176}{\^Y}
--  \DeclareUnicodeCharacter{0177}{\^y}
--  \DeclareUnicodeCharacter{0178}{\"Y}
--  \DeclareUnicodeCharacter{0179}{\'Z}
--  \DeclareUnicodeCharacter{017A}{\'z}
--  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
--  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
--  \DeclareUnicodeCharacter{017D}{\v{Z}}
--  \DeclareUnicodeCharacter{017E}{\v{z}}
--
--  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
--  \DeclareUnicodeCharacter{01C5}{D\v{z}}
--  \DeclareUnicodeCharacter{01C6}{d\v{z}}
--  \DeclareUnicodeCharacter{01C7}{LJ}
--  \DeclareUnicodeCharacter{01C8}{Lj}
--  \DeclareUnicodeCharacter{01C9}{lj}
--  \DeclareUnicodeCharacter{01CA}{NJ}
--  \DeclareUnicodeCharacter{01CB}{Nj}
--  \DeclareUnicodeCharacter{01CC}{nj}
--  \DeclareUnicodeCharacter{01CD}{\v{A}}
--  \DeclareUnicodeCharacter{01CE}{\v{a}}
--  \DeclareUnicodeCharacter{01CF}{\v{I}}
--
--  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
--  \DeclareUnicodeCharacter{01D1}{\v{O}}
--  \DeclareUnicodeCharacter{01D2}{\v{o}}
--  \DeclareUnicodeCharacter{01D3}{\v{U}}
--  \DeclareUnicodeCharacter{01D4}{\v{u}}
--
--  \DeclareUnicodeCharacter{01E2}{\={\AE}}
--  \DeclareUnicodeCharacter{01E3}{\={\ae}}
--  \DeclareUnicodeCharacter{01E6}{\v{G}}
--  \DeclareUnicodeCharacter{01E7}{\v{g}}
--  \DeclareUnicodeCharacter{01E8}{\v{K}}
--  \DeclareUnicodeCharacter{01E9}{\v{k}}
--
--  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
--  \DeclareUnicodeCharacter{01F1}{DZ}
--  \DeclareUnicodeCharacter{01F2}{Dz}
--  \DeclareUnicodeCharacter{01F3}{dz}
--  \DeclareUnicodeCharacter{01F4}{\'G}
--  \DeclareUnicodeCharacter{01F5}{\'g}
--  \DeclareUnicodeCharacter{01F8}{\`N}
--  \DeclareUnicodeCharacter{01F9}{\`n}
--  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
--  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
--  \DeclareUnicodeCharacter{01FE}{\'{\O}}
--  \DeclareUnicodeCharacter{01FF}{\'{\o}}
--
--  \DeclareUnicodeCharacter{021E}{\v{H}}
--  \DeclareUnicodeCharacter{021F}{\v{h}}
--
--  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
--  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
--  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
--  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
--  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
--  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
--
--  \DeclareUnicodeCharacter{0232}{\=Y}
--  \DeclareUnicodeCharacter{0233}{\=y}
--  \DeclareUnicodeCharacter{0237}{\dotless{j}}
--
--  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
--
--  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
--  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
--  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
--  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
--  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
--  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
--  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
--  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
--  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
--  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
--  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
--  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
--
--  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
--  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
--
--  \DeclareUnicodeCharacter{1E20}{\=G}
--  \DeclareUnicodeCharacter{1E21}{\=g}
--  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
--  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
--  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
--  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
--  \DeclareUnicodeCharacter{1E26}{\"H}
--  \DeclareUnicodeCharacter{1E27}{\"h}
--
--  \DeclareUnicodeCharacter{1E30}{\'K}
--  \DeclareUnicodeCharacter{1E31}{\'k}
--  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
--  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
--  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
--  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
--  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
--  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
--  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
--  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
--  \DeclareUnicodeCharacter{1E3E}{\'M}
--  \DeclareUnicodeCharacter{1E3F}{\'m}
--
--  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
--  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
--  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
--  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
--  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
--  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
--  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
--  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
--  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
--  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
--
--  \DeclareUnicodeCharacter{1E54}{\'P}
--  \DeclareUnicodeCharacter{1E55}{\'p}
--  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
--  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
--  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
--  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
--  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
--  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
--  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
--  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
--
--  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
--  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
--  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
--  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
--  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
--  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
--  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
--  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
--  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
--  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
--
--  \DeclareUnicodeCharacter{1E7C}{\~V}
--  \DeclareUnicodeCharacter{1E7D}{\~v}
--  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
--  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
--
--  \DeclareUnicodeCharacter{1E80}{\`W}
--  \DeclareUnicodeCharacter{1E81}{\`w}
--  \DeclareUnicodeCharacter{1E82}{\'W}
--  \DeclareUnicodeCharacter{1E83}{\'w}
--  \DeclareUnicodeCharacter{1E84}{\"W}
--  \DeclareUnicodeCharacter{1E85}{\"w}
--  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
--  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
--  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
--  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
--  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
--  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
--  \DeclareUnicodeCharacter{1E8C}{\"X}
--  \DeclareUnicodeCharacter{1E8D}{\"x}
--  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
--  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
--
--  \DeclareUnicodeCharacter{1E90}{\^Z}
--  \DeclareUnicodeCharacter{1E91}{\^z}
--  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
--  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
--  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
--  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
--  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
--  \DeclareUnicodeCharacter{1E97}{\"t}
--  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
--  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
--
--  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
--  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
--
--  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
--  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
--  \DeclareUnicodeCharacter{1EBC}{\~E}
--  \DeclareUnicodeCharacter{1EBD}{\~e}
--
--  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
--  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
--  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
--  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
--
--  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
--  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
--
--  \DeclareUnicodeCharacter{1EF2}{\`Y}
--  \DeclareUnicodeCharacter{1EF3}{\`y}
--  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
--
--  \DeclareUnicodeCharacter{1EF8}{\~Y}
--  \DeclareUnicodeCharacter{1EF9}{\~y}
--
--  \DeclareUnicodeCharacter{2013}{--}
--  \DeclareUnicodeCharacter{2014}{---}
--  \DeclareUnicodeCharacter{2018}{\quoteleft}
--  \DeclareUnicodeCharacter{2019}{\quoteright}
--  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
--  \DeclareUnicodeCharacter{201C}{\quotedblleft}
--  \DeclareUnicodeCharacter{201D}{\quotedblright}
--  \DeclareUnicodeCharacter{201E}{\quotedblbase}
--  \DeclareUnicodeCharacter{2022}{\bullet}
--  \DeclareUnicodeCharacter{2026}{\dots}
--  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
--  \DeclareUnicodeCharacter{203A}{\guilsinglright}
--  \DeclareUnicodeCharacter{20AC}{\euro}
--
--  \DeclareUnicodeCharacter{2192}{\expansion}
--  \DeclareUnicodeCharacter{21D2}{\result}
--
--  \DeclareUnicodeCharacter{2212}{\minus}
--  \DeclareUnicodeCharacter{2217}{\point}
--  \DeclareUnicodeCharacter{2261}{\equiv}
--}% end of \utfeightchardefs
--
--
--% US-ASCII character definitions.
--\def\asciichardefs{% nothing need be done
--   \relax
--}
--
--% Make non-ASCII characters printable again for compatibility with
--% existing Texinfo documents that may use them, even without declaring a
--% document encoding.
--%
--\setnonasciicharscatcode \other
--
--
--\message{formatting,}
--
--\newdimen\defaultparindent \defaultparindent = 15pt
--
--\chapheadingskip = 15pt plus 4pt minus 2pt
--\secheadingskip = 12pt plus 3pt minus 2pt
--\subsecheadingskip = 9pt plus 2pt minus 2pt
--
--% Prevent underfull vbox error messages.
--\vbadness = 10000
--
--% Don't be very finicky about underfull hboxes, either.
--\hbadness = 6666
--
--% Following George Bush, get rid of widows and orphans.
--\widowpenalty=10000
--\clubpenalty=10000
--
--% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
--% using an old version of TeX, don't do anything.  We want the amount of
--% stretch added to depend on the line length, hence the dependence on
--% \hsize.  We call this whenever the paper size is set.
--%
--\def\setemergencystretch{%
--  \ifx\emergencystretch\thisisundefined
--    % Allow us to assign to \emergencystretch anyway.
--    \def\emergencystretch{\dimen0}%
--  \else
--    \emergencystretch = .15\hsize
--  \fi
--}
--
--% Parameters in order: 1) textheight; 2) textwidth;
--% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
--% 7) physical page height; 8) physical page width.
--%
--% We also call \setleading{\textleading}, so the caller should define
--% \textleading.  The caller should also set \parskip.
--%
--\def\internalpagesizes#1#2#3#4#5#6#7#8{%
--  \voffset = #3\relax
--  \topskip = #6\relax
--  \splittopskip = \topskip
--  %
--  \vsize = #1\relax
--  \advance\vsize by \topskip
--  \outervsize = \vsize
--  \advance\outervsize by 2\topandbottommargin
--  \pageheight = \vsize
--  %
--  \hsize = #2\relax
--  \outerhsize = \hsize
--  \advance\outerhsize by 0.5in
--  \pagewidth = \hsize
--  %
--  \normaloffset = #4\relax
--  \bindingoffset = #5\relax
--  %
--  \ifpdf
--    \pdfpageheight #7\relax
--    \pdfpagewidth #8\relax
--    % if we don't reset these, they will remain at "1 true in" of
--    % whatever layout pdftex was dumped with.
--    \pdfhorigin = 1 true in
--    \pdfvorigin = 1 true in
--  \fi
--  %
--  \setleading{\textleading}
--  %
--  \parindent = \defaultparindent
--  \setemergencystretch
--}
--
--% @letterpaper (the default).
--\def\letterpaper{{\globaldefs = 1
--  \parskip = 3pt plus 2pt minus 1pt
--  \textleading = 13.2pt
--  %
--  % If page is nothing but text, make it come out even.
--  \internalpagesizes{607.2pt}{6in}% that's 46 lines
--                    {\voffset}{.25in}%
--                    {\bindingoffset}{36pt}%
--                    {11in}{8.5in}%
--}}
--
--% Use @smallbook to reset parameters for 7x9.25 trim size.
--\def\smallbook{{\globaldefs = 1
--  \parskip = 2pt plus 1pt
--  \textleading = 12pt
--  %
--  \internalpagesizes{7.5in}{5in}%
--                    {-.2in}{0in}%
--                    {\bindingoffset}{16pt}%
--                    {9.25in}{7in}%
--  %
--  \lispnarrowing = 0.3in
--  \tolerance = 700
--  \hfuzz = 1pt
--  \contentsrightmargin = 0pt
--  \defbodyindent = .5cm
--}}
--
--% Use @smallerbook to reset parameters for 6x9 trim size.
--% (Just testing, parameters still in flux.)
--\def\smallerbook{{\globaldefs = 1
--  \parskip = 1.5pt plus 1pt
--  \textleading = 12pt
--  %
--  \internalpagesizes{7.4in}{4.8in}%
--                    {-.2in}{-.4in}%
--                    {0pt}{14pt}%
--                    {9in}{6in}%
--  %
--  \lispnarrowing = 0.25in
--  \tolerance = 700
--  \hfuzz = 1pt
--  \contentsrightmargin = 0pt
--  \defbodyindent = .4cm
--}}
--
--% Use @afourpaper to print on European A4 paper.
--\def\afourpaper{{\globaldefs = 1
--  \parskip = 3pt plus 2pt minus 1pt
--  \textleading = 13.2pt
--  %
--  % Double-side printing via postscript on Laserjet 4050
--  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
--  % To change the settings for a different printer or situation, adjust
--  % \normaloffset until the front-side and back-side texts align.  Then
--  % do the same for \bindingoffset.  You can set these for testing in
--  % your texinfo source file like this:
--  % @tex
--  % \global\normaloffset = -6mm
--  % \global\bindingoffset = 10mm
--  % @end tex
--  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
--                    {\voffset}{\hoffset}%
--                    {\bindingoffset}{44pt}%
--                    {297mm}{210mm}%
--  %
--  \tolerance = 700
--  \hfuzz = 1pt
--  \contentsrightmargin = 0pt
--  \defbodyindent = 5mm
--}}
--
--% Use @afivepaper to print on European A5 paper.
--% From romildo at urano.iceb.ufop.br, 2 July 2000.
--% He also recommends making @example and @lisp be small.
--\def\afivepaper{{\globaldefs = 1
--  \parskip = 2pt plus 1pt minus 0.1pt
--  \textleading = 12.5pt
--  %
--  \internalpagesizes{160mm}{120mm}%
--                    {\voffset}{\hoffset}%
--                    {\bindingoffset}{8pt}%
--                    {210mm}{148mm}%
--  %
--  \lispnarrowing = 0.2in
--  \tolerance = 800
--  \hfuzz = 1.2pt
--  \contentsrightmargin = 0pt
--  \defbodyindent = 2mm
--  \tableindent = 12mm
--}}
--
--% A specific text layout, 24x15cm overall, intended for A4 paper.
--\def\afourlatex{{\globaldefs = 1
--  \afourpaper
--  \internalpagesizes{237mm}{150mm}%
--                    {\voffset}{4.6mm}%
--                    {\bindingoffset}{7mm}%
--                    {297mm}{210mm}%
--  %
--  % Must explicitly reset to 0 because we call \afourpaper.
--  \globaldefs = 0
--}}
--
--% Use @afourwide to print on A4 paper in landscape format.
--\def\afourwide{{\globaldefs = 1
--  \afourpaper
--  \internalpagesizes{241mm}{165mm}%
--                    {\voffset}{-2.95mm}%
--                    {\bindingoffset}{7mm}%
--                    {297mm}{210mm}%
--  \globaldefs = 0
--}}
--
--% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
--% Perhaps we should allow setting the margins, \topskip, \parskip,
--% and/or leading, also. Or perhaps we should compute them somehow.
--%
--\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
--\def\pagesizesyyy#1,#2,#3\finish{{%
--  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
--  \globaldefs = 1
--  %
--  \parskip = 3pt plus 2pt minus 1pt
--  \setleading{\textleading}%
--  %
--  \dimen0 = #1\relax
--  \advance\dimen0 by \voffset
--  %
--  \dimen2 = \hsize
--  \advance\dimen2 by \normaloffset
--  %
--  \internalpagesizes{#1}{\hsize}%
--                    {\voffset}{\normaloffset}%
--                    {\bindingoffset}{44pt}%
--                    {\dimen0}{\dimen2}%
--}}
--
--% Set default to letter.
--%
--\letterpaper
--
--
--\message{and turning on texinfo input format.}
--
--\def^^L{\par} % remove \outer, so ^L can appear in an @comment
--
--% DEL is a comment character, in case @c does not suffice.
--\catcode`\^^? = 14
--
--% Define macros to output various characters with catcode for normal text.
--\catcode`\"=\other \def\normaldoublequote{"}
--\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
--\catcode`\+=\other \def\normalplus{+}
--\catcode`\<=\other \def\normalless{<}
--\catcode`\>=\other \def\normalgreater{>}
--\catcode`\^=\other \def\normalcaret{^}
--\catcode`\_=\other \def\normalunderscore{_}
--\catcode`\|=\other \def\normalverticalbar{|}
--\catcode`\~=\other \def\normaltilde{~}
--
--% This macro is used to make a character print one way in \tt
--% (where it can probably be output as-is), and another way in other fonts,
--% where something hairier probably needs to be done.
--%
--% #1 is what to print if we are indeed using \tt; #2 is what to print
--% otherwise.  Since all the Computer Modern typewriter fonts have zero
--% interword stretch (and shrink), and it is reasonable to expect all
--% typewriter fonts to have this, we can check that font parameter.
--%
--\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
--
--% Same as above, but check for italic font.  Actually this also catches
--% non-italic slanted fonts since it is impossible to distinguish them from
--% italic fonts.  But since this is only used by $ and it uses \sl anyway
--% this is not a problem.
--\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
--
--% Turn off all special characters except @
--% (and those which the user can use as if they were ordinary).
--% Most of these we simply print from the \tt font, but for some, we can
--% use math or other variants that look better in normal text.
--
--\catcode`\"=\active
--\def\activedoublequote{{\tt\char34}}
--\let"=\activedoublequote
--\catcode`\~=\active
--\def~{{\tt\char126}}
--\chardef\hat=`\^
--\catcode`\^=\active
--\def^{{\tt \hat}}
--
--\catcode`\_=\active
--\def_{\ifusingtt\normalunderscore\_}
--\let\realunder=_
--% Subroutine for the previous macro.
--\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
--
--\catcode`\|=\active
--\def|{{\tt\char124}}
--\chardef \less=`\<
--\catcode`\<=\active
--\def<{{\tt \less}}
--\chardef \gtr=`\>
--\catcode`\>=\active
--\def>{{\tt \gtr}}
--\catcode`\+=\active
--\def+{{\tt \char 43}}
--\catcode`\$=\active
--\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
--
--% If a .fmt file is being used, characters that might appear in a file
--% name cannot be active until we have parsed the command line.
--% So turn them off again, and have \everyjob (or @setfilename) turn them on.
--% \otherifyactive is called near the end of this file.
--\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
--
--% Used sometimes to turn off (effectively) the active characters even after
--% parsing them.
--\def\turnoffactive{%
--  \normalturnoffactive
--  \otherbackslash
--}
--
--\catcode`\@=0
--
--% \backslashcurfont outputs one backslash character in current font,
--% as in \char`\\.
--\global\chardef\backslashcurfont=`\\
--\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
--
--% \realbackslash is an actual character `\' with catcode other, and
--% \doublebackslash is two of them (for the pdf outlines).
--{\catcode`\\=\other @gdef at realbackslash{\} @gdef at doublebackslash{\\}}
--
--% In texinfo, backslash is an active character; it prints the backslash
--% in fixed width font.
--\catcode`\\=\active  % @ for escape char from now on.
--
--% The story here is that in math mode, the \char of \backslashcurfont
--% ends up printing the roman \ from the math symbol font (because \char
--% in math mode uses the \mathcode, and plain.tex sets
--% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
--% print a typewriter backslash, hence we use an explicit \mathchar,
--% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
--% ignored family value; char position "5C).  We can't use " for the
--% usual hex value because it has already been made active.
-- at def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-- at let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
--
--% On startup, @fixbackslash assigns:
--%  @let \ = @normalbackslash
--% \rawbackslash defines an active \ to do \backslashcurfont.
--% \otherbackslash defines an active \ to be a literal `\' character with
--% catcode other.  We switch back and forth between these.
-- at gdef@rawbackslash{@let\=@backslashcurfont}
-- at gdef@otherbackslash{@let\=@realbackslash}
--
--% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
--% the literal character `\'.  Also revert - to its normal character, in
--% case the active - from code has slipped in.
--%
--{@catcode`- = @active
-- @gdef at normalturnoffactive{%
--   @let-=@normaldash
--   @let"=@normaldoublequote
--   @let$=@normaldollar %$ font-lock fix
--   @let+=@normalplus
--   @let<=@normalless
--   @let>=@normalgreater
--   @let\=@normalbackslash
--   @let^=@normalcaret
--   @let_=@normalunderscore
--   @let|=@normalverticalbar
--   @let~=@normaltilde
--   @markupsetuplqdefault
--   @markupsetuprqdefault
--   @unsepspaces
-- }
--}
--
--% Make _ and + \other characters, temporarily.
--% This is canceled by @fixbackslash.
-- at otherifyactive
--
--% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
--% That is what \eatinput is for; after that, the `\' should revert to printing
--% a backslash.
--%
-- at gdef@eatinput input texinfo{@fixbackslash}
-- at global@let\ = @eatinput
--
--% On the other hand, perhaps the file did not have a `\input texinfo'. Then
--% the first `\' in the file would cause an error. This macro tries to fix
--% that, assuming it is called before the first `\' could plausibly occur.
--% Also turn back on active characters that might appear in the input
--% file name, in case not using a pre-dumped format.
--%
-- at gdef@fixbackslash{%
--  @ifx\@eatinput @let\ = @normalbackslash @fi
--  @catcode`+=@active
--  @catcode`@_=@active
--}
--
--% Say @foo, not \foo, in error messages.
-- at escapechar = `@@
--
--% These (along with & and #) are made active for url-breaking, so need
--% active definitions as the normal characters.
-- at def@normaldot{.}
-- at def@normalquest{?}
-- at def@normalslash{/}
--
--% These look ok in all fonts, so just make them not special.
--% @hashchar{} gets its own user-level command, because of #line.
-- at catcode`@& = @other @def at normalamp{&}
-- at catcode`@# = @other @def at normalhash{#}
-- at catcode`@% = @other @def at normalpercent{%}
--
-- at let @hashchar = @normalhash
--
-- at c Finally, make ` and ' active, so that txicodequoteundirected and
-- at c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
-- at c don't make ` and ' active, @code will not get them as active chars.
-- at c Do this last of all since we use ` in the previous @catcode assignments.
-- at catcode`@'=@active
-- at catcode`@`=@active
-- at markupsetuplqdefault
-- at markupsetuprqdefault
--
-- at c Local variables:
-- at c eval: (add-hook 'write-file-hooks 'time-stamp)
-- at c page-delimiter: "^\\\\message"
-- at c time-stamp-start: "def\\\\texinfoversion{"
-- at c time-stamp-format: "%:y-%02m-%02d.%02H"
-- at c time-stamp-end: "}"
-- at c End:
--
-- at c vim:sw=2:
--
-- at ignore
--   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-- at end ignore
diff --cc doc/assuan.info
index b94b2cc,0000000..aed1fd9
mode 100644,000000..100644
--- a/doc/assuan.info
+++ b/doc/assuan.info
@@@ -1,3284 -1,0 +1,3284 @@@
- This is assuan.info, produced by makeinfo version 5.2 from assuan.texi.
++This is assuan.info, produced by makeinfo version 6.3 from assuan.texi.
 +
 +INFO-DIR-SECTION GNU Libraries
 +START-INFO-DIR-ENTRY
 +* Assuan: (assuan).        An IPC library for non-persistent servers.
 +END-INFO-DIR-ENTRY
 +
 +This file documents the use and the internals of Assuan.
 +
-    This is Edition 2.4.3, last updated 27 November 2015, of 'The
- 'Developing with Assuan' Manual', for Version 2.4.3.
++   This is Edition 2.4.4, last updated 27 November 2015, of 'The
++'Developing with Assuan' Manual', for Version 2.4.4.
 +
 +   Published by the Free Software Foundation
 +51 Franklin Street, Fifth Floor
 +Boston, MA 02110-1301 USA
 +
 +   Copyright (C) 2001-2013 Free Software Foundation, Inc.
 +Copyright (C) 2001-2015 g10 Code GmbH
 +
 +   Permission is granted to copy, distribute and/or modify this document
 +under the terms of the GNU General Public License as published by the
 +Free Software Foundation; either version 3 of the License, or (at your
 +option) any later version.  The text of the license can be found in the
 +section entitled "Copying".
 +
 +
 +File: assuan.info,  Node: Top,  Next: Introduction,  Up: (dir)
 +
 +Introduction
 +************
 +
 +This manual documents how to exploit the Assuan library, a simple
 +interprocess communcation library.
 +
 +* Menu:
 +
 +* Introduction::        An introduction to and the motivation behind Assuan.
 +* Assuan::              Description of the Assuan protocol.
 +* Implementation::      Overview of the implementation.
 +* Preparation::         What you should do before using the library.
 +* Generalities::        Initialization code and data types used.
 +* Client code::         How to develop an Assuan client.
 +* Server code::         How to develop an Assuan server.
 +* External I/O Loop::   How to use external I/O event loops.
 +* Utilities::           Utility functions.
 +* Socket wrappers::     Socket wrapper functions.
 +
 +Miscellaneous
 +
 +* Library Copying::     GNU Lesser General Public License says
 +                        how you can copy and share Assuan.
 +* Copying::             How you can copy and share this manual.
 +
 +Indices
 +
 +* Index::	        Index of concepts and symbol names.
 +
 +
 +File: assuan.info,  Node: Introduction,  Next: Assuan,  Prev: Top,  Up: Top
 +
 +1 Introduction to Assuan
 +************************
 +
 +Assuan is an extensible inter-process communication (IPC) protocol and
 +library.  It is designed for point-to-point communication and it doesn't
 +provide a naming system.  To contact a server, either the client must
 +know how to locate the server, e.g., via a well-known Unix domain
 +socket, or, if the server is transient, how to start it.  In the latter
 +case, Assuan provides functionality to start the server process.
 +
 +   In Assuan, communication is typically either via a pipe or a Unix
 +domain socket.  This method is neither elegant nor efficient, especially
 +when there is a lot of data spread across several transactions.  Not
 +only is there a penalty for an increased number of context switches, but
 +a significant amount of data is MEMCPYed from the client to a file
 +descriptor and from the file descriptor to the server.  Despite these
 +and other disadvantages, this type of client/server communication is
 +useful: the client is separated from the server: they run in different
 +address spaces.  This is especially important in situations where the
 +server must have a known degree of reliability and data must be
 +protected: as the Assuan protocol is well defined and clients cannot
 +corrupt the servers' address space, auditing becomes much easier.
 +
 +   Assuan was developed for use by the GNU Privacy Guard (GnuPG) to
 +prevent potentially buggy clients from unwittingly corrupting sensitive
 +transactions or compromising data such as a secret key.  Assuan permits
 +the servers, which do the actual work, e.g., encryption and decryption
 +of data using a secret key, to be developed independently of the user
 +interfaces, e.g., mail clients and other encryption front ends.  Like a
 +shared library, the interface is well defined and any number of front
 +ends can use it; however, unlike a shared library, the client cannot see
 +or touch the server's data.  As with any modular system, Assuan helps
 +keep the components small, understandable and less error prone.
 +
 +   Assuan is not, however, limited to use with GnuPG servers and
 +clients: it was designed to be flexible enough to meet the demands of
 +many transaction-based environments.
 +
 +
 +File: assuan.info,  Node: Assuan,  Next: Implementation,  Prev: Introduction,  Up: Top
 +
 +2 Description of the Assuan protocol.
 +*************************************
 +
 +The architecture of the modular GnuPG system is based on several highly
 +specialized modules which form a network of clients and servers.  A
 +common framework for intermodule communication is therefore needed and
 +implemented as a library.
 +
 +   Goals:
 +
 +   * Common framework for module communication
 +   * Easy debugging
 +   * Easy module testing
 +   * Extensible
 +   * Optional authentication and encryption facility
 +   * Usable to access external hardware
 +
 +   Design criteria:
 +
 +   * Client/Server with back channel
 +   * Use a mainly text based protocol
 +   * Escape certain control characters
 +   * Allow indefinite data length
 +   * Request confidentiality for parts of the communication
 +   * Dummy module to allow direct linking of client and server
 +   * Inline data or descriptor passing for bulk data
 +   * No protection against DoS needed
 +   * Subliminal channels are not an issue
 +
 +
 +File: assuan.info,  Node: Implementation,  Next: Preparation,  Prev: Assuan,  Up: Top
 +
 +3 Implementation
 +****************
 +
 +The implementation is line based with a maximum line size of 1000
 +octets.  The default IPC mechanism is Unix Domain Sockets.
 +
 +   On connect, the server responds either with okay or an error status.
 +To perform an authentication check, the server may send an Inquiry
 +response prior to the first Okay.  It may also issue Status messages.
 +The server must check that the client is allowed to connect.  This is
 +done by requesting the credentials for the peer and comparing them with
 +the server's credentials.  This avoids attacks based on wrong socket
 +permissions.
 +
 +   The server may choose to delay the first response in case of an
 +error.  The server, however, never closes the connection, however, the
 +lower protocol may do so after some time of inactivity or when the
 +connection enters an error state.
 +
 +   All textual messages are assumed to be in UTF-8 unless otherwise
 +noted.
 +
 +* Menu:
 +
 +* Server responses::    Description of server responses.
 +* Client requests::     Description of client requests.
 +* Error codes::         List of error and status codes.
 +
 +
 +File: assuan.info,  Node: Server responses,  Next: Client requests,  Up: Implementation
 +
 +3.1 Server responses
 +====================
 +
 +'OK [<arbitrary debugging information>]'
 +     Request was successful.
 +
 +'ERR ERRORCODE [<human readable error description>]'
 +     Request could not be fulfilled.  The possible error codes are
 +     defined by 'libgpg-error'.
 +
 +'S KEYWORD <status information depending on keyword>'
 +     Informational output by the server, which is still processing the
 +     request.  A client may not send such lines to the server while
 +     processing an Inquiry command.  KEYWORD shall start with a letter
 +     or an underscore.
 +
 +'# <string>'
 +     Comment line issued only for debugging purposes.  Totally ignored.
 +
 +'D <raw data>'
 +     Raw data returned to client.  There must be exactly one space after
 +     the 'D'. The values for '%', CR and LF must be percent escaped;
 +     these are encoded as %25, %0D and %0A, respectively.  Only
 +     uppercase letters should be used in the hexadecimal representation.
 +     Other characters may be percent escaped for easier debugging.  All
 +     Data lines are considered one data stream up to the OK or ERR
 +     response.  Status and Inquiry Responses may be mixed with the Data
 +     lines.
 +
 +'INQUIRE KEYWORD <parameters>'
 +     The server needs further information from the client.  The client
 +     should respond with data (using the "D" command and terminated by
 +     "END"). Alternatively, the client may cancel the current operation
 +     by responding with "CAN".
 +
 +   Consider the following examples (lines prefixed with S indicate text
 +that the server sends; lines prefixed with C indicate text that the
 +client sends):
 +
 +     S: INQUIRE foo
 +     C: D foo bar
 +     C: D bar baz
 +     C: END
 +     [Server continues normal work]
 +
 +   This implements a callback to the client:
 +
 +     S: INQUIRE foo
 +     C: END
 +     [Server continues]
 +
 +   and:
 +
 +     S: INQUIRE foo
 +     C: CAN
 +     [Server terminates the operaion and in most cases returns an ERR to the client.]
 +
 +   But, CAN may also mean "I have no data for you, try to get it from
 +elsewhere."
 +
 +   Note: lines longer than 1000 bytes should be treated as a
 +communication error.  (The rationale for having a line length limit is
 +to allow for easier multiplexing of several channels.)
 +
 +
 +File: assuan.info,  Node: Client requests,  Next: Error codes,  Prev: Server responses,  Up: Implementation
 +
 +3.2 Client requests
 +===================
 +
 +The server waits for client requests after sending an Okay or Error.
 +The client should not issue a request in other cases.
 +
 +     COMMAND <parameters>
 +
 +   COMMAND is a one word string without preceding white space.
 +Parameters are command specific, CR, LF and the percent signs should be
 +percent escaped as described above.  To send a backslash as the last
 +character it should also be percent escaped.  Percent escaping is
 +allowed anywhere in the parameters but not in the command.  The line
 +ends with a CR, LF pair or just a LF.
 +
 +   Not yet implemented feature: If there is a need for a parameter list
 +longer than the line length limit (1000 characters including command and
 +CR, LF), the last character of the line (right before the CR/LF or LF)
 +must be a unescaped (i.e., literal) backslash.  The following line is
 +then expected to be a continuation of the line with the backslash
 +replaced by a blank and the line ending removed.
 +
 +     D <raw data>
 +
 +   Sends raw data to the server.  There must be exactly one space after
 +the 'D'. The values for '%', CR and LF must be percent escaped.  These
 +are encoded as %25, %0D and %0A, respectively.  Only uppercase letters
 +should be used in the hexadecimal representation.  Other characters may
 +be percent escaped for easier debugging.  All Data lines are considered
 +one data stream up to the 'OK' or 'ERR' response.  Status and Inquiry
 +Responses may be mixed with the Data lines.
 +
 +     END
 +
 +   Lines beginning with a '#' or empty lines are ignored.  This is
 +useful to comment test scripts.
 +
 +   Although the commands are application specific, some of them are used
 +by all protocols and partly supported by the Assuan library:
 +
 +'BYE'
 +     Close the connection.  The server will respond with 'OK'.
 +
 +'RESET'
 +     Reset the connection but not any existing authentication.  The
 +     server should release all resources associated with the connection.
 +
 +'END'
 +     Used by a client to mark the end of raw data.  The server may send
 +     'END' to indicate a partial end of data.
 +
 +'HELP'
 +     Lists all commands that the server understands as comment lines on
 +     the status channel.
 +
 +'QUIT'
 +     Reserved for future extensions.
 +
 +'OPTION'
 +     Set options for the connection.  The syntax of such a line is
 +            OPTION NAME [ [=] VALUE ]
 +     Leading and trailing spaces around NAME and VALUE are allowed but
 +     should be ignored.  For compatibility reasons, NAME may be prefixed
 +     with two dashes.  The use of the equal sign is optional but
 +     suggested if VALUE is given.
 +
 +'CANCEL'
 +     This command is reserved for future extensions.
 +
 +'AUTH'
 +     This command is reserved for future extensions.  Not yet specified
 +     as we don't implement it in the first phase.  See Werner's mail to
 +     gpa-dev on 2001-10-25 about the rationale for measurements against
 +     local attacks.
 +
 +'NOP'
 +     No operation.  Returns OK without any action.
 +
 +
 +File: assuan.info,  Node: Error codes,  Prev: Client requests,  Up: Implementation
 +
 +3.3 Error codes
 +===============
 +
 +Libassuan is used with gpg-error style error codes.  It is recommended
 +to set the error source to a different value from the default
 +'GPG_ERR_SOURCE_UNKNOWN' by calling *note function
 +assuan_set_gpg_err_source:: early.
 +
 +
 +File: assuan.info,  Node: Preparation,  Next: Generalities,  Prev: Implementation,  Up: Top
 +
 +4 Preparation
 +*************
 +
 +To use ASSUAN, you have to make some changes to your sources and the
 +build system.  The necessary changes are small and explained in the
 +following sections.
 +
 +* Menu:
 +
 +* Header::                 What header file you need to include.
 +* Building sources::       How to build sources using the library.
 +* Automake::               How to build sources with the help of Automake.
 +* Multi Threading::        How 'libassuan' can be used in a MT environment.
 +
 +
 +File: assuan.info,  Node: Header,  Next: Building sources,  Up: Preparation
 +
 +4.1 Header
 +==========
 +
 +All interfaces (data types and functions) of 'libassuan' are defined in
 +the header file 'assuan.h'.  You must include this in all source files
 +using the library, either directly or through some other header file,
 +like this:
 +
 +     #include <assuan.h>
 +
 +   The namespace of 'libassuan' is 'assuan_*' for function and type
 +names and 'ASSUAN*' for other symbols.  In addition the same name
 +prefixes with one prepended underscore are reserved for internal use and
 +should never be used by an application.
 +
 +   Because 'libassuan' makes use of the GPG Error library, using
 +'libassuan' will also use the 'GPG_ERR_*' namespace directly, and the
 +'gpg_err*' and 'gpg_str*' namespaces indirectly.
 +
 +
 +File: assuan.info,  Node: Building sources,  Next: Automake,  Prev: Header,  Up: Preparation
 +
 +4.2 Building sources
 +====================
 +
 +If you want to compile a source file including the 'assuan.h' header
 +file, you must make sure that the compiler can find it in the directory
 +hierarchy.  This is accomplished by adding the path to the directory in
 +which the header file is located to the compilers include file search
 +path (via the '-I' option).
 +
 +   However, the path to the include file is determined at the time the
 +source is configured.  To solve this problem, 'libassuan' ships with a
 +small helper program 'libassuan-config' that knows the path to the
 +include file and other configuration options.  The options that need to
 +be added to the compiler invocation at compile time are output by the
 +'--cflags' option to 'libassuan-config'.  The following example shows
 +how it can be used at the command line:
 +
 +     gcc -c foo.c $(libassuan-config --cflags)
 +
 +   Adding the output of 'libassuan-config --cflags' to the compiler's
 +command line will ensure that the compiler can find the 'assuan.h'
 +header file.
 +
 +   A similar problem occurs when linking the program with the library.
 +Again, the compiler/linker has to find the library files.  For this to
 +work, the path to the library files has to be added to the library
 +search path (via the '-L' option).  For this, the option '--libs' to
 +'libassuan-config' can be used.  For convenience, this option also
 +outputs all other options that are required to link the program with the
 +'libassuan' libraries (in particular, the '-lassuan' option).  The
 +example shows how to link 'foo.o' with the 'libassuan' library to a
 +program 'foo'.
 +
 +     gcc -o foo foo.o $(libassuan-config --libs)
 +
 +   You can also combine both examples to a single command by specifying
 +both options to 'libassuan-config':
 +
 +     gcc -o foo foo.c $(libassuan-config --cflags --libs)
 +
 +
 +File: assuan.info,  Node: Automake,  Next: Multi Threading,  Prev: Building sources,  Up: Preparation
 +
 +4.3 Building sources using Automake
 +===================================
 +
 +It is much easier if you use GNU Automake instead of writing your own
 +Makefiles.  If you do that you do not have to worry about finding and
 +invoking the 'libassuan-config' script at all.  'libassuan' provides an
 +Automake macro that does all the work for you.
 +
 + -- Macro: AM_PATH_LIBASSUAN ([MINIMUM-VERSION], [ACTION-IF-FOUND],
 +          [ACTION-IF-NOT-FOUND])
 +     Check whether 'libassuan' (at least version MINIMUM-VERSION, if
 +     given) exists on the host system.  If it is found, execute
 +     ACTION-IF-FOUND, otherwise do ACTION-IF-NOT-FOUND, if given.
 +
 +     Additionally, the function defines 'LIBASSUAN_CFLAGS' to the flags
 +     needed for compilation of the program to find the 'assuan.h' header
 +     file, and 'LIBASSUAN_LIBS' to the linker flags needed to link the
 +     program to the 'libassuan' library.
 +
 +   You can use the defined Autoconf variables like this in your
 +'Makefile.am':
 +
 +     AM_CPPFLAGS = $(LIBASSUAN_CFLAGS)
 +     LDADD = $(LIBASSUAN_LIBS)
 +
 +
 +File: assuan.info,  Node: Multi Threading,  Prev: Automake,  Up: Preparation
 +
 +4.4 Multi Threading
 +===================
 +
 +The 'libassuan' library is designed so that it can be used in a threaded
 +application, if some rules are followed.
 +
 +   * Run the initialization functions before you actually start to use
 +     threads.  Specifically, the functions 'assuan_set_gpg_err_source',
 +     'assuan_set_malloc_hooks' and 'assuan_set_log_cb' should not be
 +     called concurrently with 'assuan_new'.  Use 'assuan_new_ext'
 +     instead or ensure proper serialization.
 +   * Only one thread at a time may access an 'libassuan' context.
 +   * If you use the default log handler, use
 +     'assuan_set_assuan_log_stream' to setup a default log stream.
 +   * If you have callback functions shared by multiple functions, the
 +     callback function must be reentrant for that purpose.  'libassuan'
 +     does not serialize invocation of callback functions across
 +     contexts.
 +
 +
 +File: assuan.info,  Node: Generalities,  Next: Client code,  Prev: Preparation,  Up: Top
 +
 +5 Generalities
 +**************
 +
 +* Menu:
 +
 +* Data Types:: Data types used by 'libassuan'.
 +* Initializing the library:: How to initialize the library.
 +* Default Log Handler:: How to configure the default log handler.
 +* Contexts:: How to work with contexts.
 +* Reading and Writing:: How to communicate with the peer.
 +
 +
 +File: assuan.info,  Node: Data Types,  Next: Initializing the library,  Up: Generalities
 +
 +5.1 Data Types used by the library
 +==================================
 +
 +ASSUAN uses a so-called context to store a connection's state.  The
 +following data type is used for that:
 +
 + -- Data type: assuan_context_t
 +     The 'assuan_context_t' type is a pointer to an object maintained
 +     internally by the library.  Contexts are allocated with
 +     'assuan_new' or 'assuan_new_ext' and released with
 +     'assuan_release'.  Other functions take this data type to access
 +     the state created by these functions.
 +
 + -- Data type: assuan_fd_t
 +     The 'assuan_fd_t' is a file descriptor (in Unix) or a system handle
 +     (in Windows).  The special value 'ASSUAN_INVALID_FD' is used to
 +     specify invalid Assuan file descriptors.
 +
 + -- Function: assuan_fd_t assuan_fdopen (int FD)
 +     Create an assuan file descriptor from a POSIX (libc) file
 +     descriptor FD.  On Unix, this is equivalent to 'dup', while on
 +     Windows this will retrieve the underlying system handle with
 +     '_get_osfhandle' and duplicate that.
 +
 +
 +File: assuan.info,  Node: Initializing the library,  Next: Default Log Handler,  Prev: Data Types,  Up: Generalities
 +
 +5.2 Initializing the library
 +============================
 +
 +Libassuan makes use of Libgpg-error and assumes that Libgpg-error has
 +been initialized.  In general 'gpgrt_check_version' should be called to
 +guarantee this; the Libgpg-error manual for details.
 +
 +   Libassuan itself requires no initialization.  There are however some
 +initialization hooks provided which are often useful.  These should be
 +called as early as possible and in a multi-threaded application before a
 +second thread is created.
 +
 +   These functions initialize default values that are used at context
 +creation with 'assuan_new'.  As there can only be one default, all
 +values can also be set directly with 'assuan_new_ext' or with
 +context-specific functions after context creation.
 +
 +   If your application uses its own memory allocation functions or
 +wrappers it is good idea to tell 'libassuan' about it so it can make use
 +of the same functions or wrappers:
 +
 + -- Data type: struct assuan_malloc_hooks
 +     This structure is used to store the memory allocation callback
 +     interface functions.  It has the following members, whose semantics
 +     are identical to the corresponding system functions:
 +
 +     'void *(*malloc) (size_t cnt)'
 +          This is the function called by ASSUAN to allocate memory for a
 +          context.
 +
 +     'void *(*realloc) (void *ptr, size_t cnt)'
 +          This is the function called by ASSUAN to reallocate memory for
 +          a context.
 +
 +     'void (*free) (void *ptr)'
 +          This is the function called by ASSUAN to release memory for a
 +          context.
 +
 + -- Data type: assuan_malloc_hooks_t
 +     This is a pointer to a 'struct assuan_malloc_hooks'.
 +
 + -- Function: void assuan_set_malloc_hooks
 +          (assuan_malloc_hooks_t MALLOC_HOOKS)
 +     This function sets the default allocation hooks for new contexts
 +     allocated with 'assuan_new'.  You need to provide all three
 +     functions.  Those functions need to behave exactly as their
 +     standard counterparts 'malloc', 'realloc' and 'free'.  If you write
 +     your own functions, please take care to set 'errno' whenever an
 +     error has occurred.
 +
 + -- Function: assuan_malloc_hooks_t assuan_get_malloc_hooks ()
 +     This function gets the default allocation hooks for new contexts
 +     allocated with 'assuan_new'.  The result structure is statically
 +     allocated and should not be modified.
 +
 +   The ASSUAN library uses 'libgpg-error' error values, which consist
 +and error code and an error source.  The default source used by contexts
 +allocated with 'assuan_new' can be set with the following function.
 +
 + -- Function: void assuan_set_gpg_err_source
 +          (gpg_err_source_t ERR_SOURCE)
 +     This function sets the default error source for errors generated by
 +     contexts allocated with 'assuan_new'.
 +
 +     One way to call this function is
 +          assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
 +
 + -- Function: gpg_err_source_t assuan_get_gpg_err_source (void)
 +     This function gets the default error source for errors generated by
 +     contexts allocated with 'assuan_new'.
 +
 +To integrate assuan logging and diagnostics into your own logging
 +system, you may use the following two functions:
 +
 + -- Data type: int (*assuan_log_cb_t) (assuan_context_t CTX,
 +          void *HOOK_VALUE, unsigned int CAT, const char *MSG)
 +     The user-provided callback function takes a context CTX, for which
 +     the message MSG was generated, and a hook value HOOK_VALUE that was
 +     supplied when the log handler was registered for the context with
 +     'assuan_set_log_cb', and a category CAT.  The category is one of:
 +
 +     'ASSUAN_LOG_INIT'
 +     'ASSUAN_LOG_CTX'
 +     'ASSUAN_LOG_ENGINE'
 +     'ASSUAN_LOG_DATA'
 +          RFU
 +     'ASSUAN_LOG_SYSIO'
 +          Log lowlevel I/O data.
 +     'ASSUAN_LOG_CONTROL'
 +          Log the control channel.
 +
 +     The user may then, depending on the category, write the message to
 +     a log file or treat it in some other way.
 +
 +     If MSG is a null pointer, then no message should be logged, but the
 +     function should return 1 if it is interested in log messages with
 +     the category CAT.  If it is not interested, 0 should be returned.
 +     This allows 'libassuan' to suppress the generation of expensive
 +     debug output.
 +
 + -- Function: void assuan_set_log_cb (assuan_log_cb_t LOG_CB,
 +          void *LOG_CB_DATA)
 +     This function sets the default logging handler for log messages
 +     generated by contexts allocated with 'assuan_new'.
 +
 + -- Function: void assuan_get_log_cb (assuan_log_cb_t *LOG_CB,
 +          void **LOG_CB_DATA)
 +     This function gets the default logging handler for log messages
 +     generated by contexts allocated with 'assuan_new'.
 +
 +   You do not need to set a log handler, as ASSUAN provides a
 +configurable default log handler that should be suitable for most
 +purposes.  Logging can be disabled completely by setting the log handler
 +to a null pointer.
 +
 +
 +File: assuan.info,  Node: Default Log Handler,  Next: Contexts,  Prev: Initializing the library,  Up: Generalities
 +
 +5.3 Default Log Handler
 +=======================
 +
 +The default log handler can be configured by the following functions:
 +
 + -- Function: void assuan_set_assuan_log_prefix (const char *TEXT)
 +     Set the prefix to be used at the start of a line emitted by assuan
 +     on the log stream to TEXT.  The default is the empty string.
 +
 + -- Function: const char * assuan_get_assuan_log_prefix (void)
 +     Return the prefix to be used at the start of a line emitted by
 +     assuan on the log stream.  The default implementation returns the
 +     empty string.
 +
 + -- Function: void assuan_set_assuan_log_stream (FILE *FP)
 +     This sets the default log stream to which 'libassuan' should log
 +     messages not associated with a specific context to FP.  The default
 +     is to log to 'stderr'.  This default value is also changed by using
 +     'assuan_set_log_stream' (to set a logging stream for a specific
 +     context) unless this function has been used.  Obviously this is not
 +     thread-safe and thus it is highly recommended to use this function
 +     to setup a proper default.
 +
 + -- Function: FILE * assuan_get_assuan_log_stream (void)
 +     Return the stream which is currently being using for global
 +     logging.
 +
 +   The log stream used by the default log handler can also be set on a
 +per context basis.
 +
 + -- Function: void assuan_set_log_stream (assuan_context_t CTX,
 +          FILE *FP)
 +     Enable debugging for the context CTX and write all debugging output
 +     to the stdio stream FP.  If the default log stream (used for
 +     non-context specific events) has not yet been set, a call to this
 +     functions implicitly sets this stream also to FP.
 +
 +
 +File: assuan.info,  Node: Contexts,  Next: Reading and Writing,  Prev: Default Log Handler,  Up: Generalities
 +
 +5.4 How to work with contexts
 +=============================
 +
 +Some operations work globally on the library, but most operate in a
 +context, which saves state across operations.  To allow the use of
 +'libassuan' in mixed environments, such as in a library using GPGME and
 +an application using GPGME, the context is very extensive and covers
 +utilitary information like memory allocation callbacks as well as
 +specific information associated with client/server operations.
 +
 + -- Function: gpg_error_t assuan_new (assuan_context_t *CTX_P)
 +     The function 'assuan_new' creates a new context, using the global
 +     default memory allocation, log handler and 'libgpg-error' source.
 +     It is equivalent to
 +
 +          gpg_error_t err;
 +          assuan_log_cb_t log_cb;
 +          void *log_cb_data;
 +
 +          assuan_get_log_cb (&log_cb, &log_cb_data);
 +          err = assuan_new_ext (ctx_p, assuan_get_gpg_err_source (),
 +                                assuan_get_malloc_hooks (), log_cb, log_cb_data);
 +
 +     As you can see, this is not thread-safe.  Take care not to modify
 +     the memory allocation hooks or log callback handler concurrently
 +     with 'assuan_new'.
 +
 +     The function returns an error if a memory allocation error occurs,
 +     and 0 with the new context in CTX_P otherwise.
 +
 + -- Function: gpg_error_t assuan_new_ext (assuan_context_t *CTX_P,
 +          gpg_err_source_t ERR_SOURCE,
 +          assuan_malloc_hooks_t MALLOC_HOOKS, assuan_log_cb_t LOG_CB,
 +          void *LOG_CB_DATA)
 +     The function 'assuan_new_ext' creates a new context using the
 +     supplied 'libgpg-error' error source ERR_SOURCE, the memory
 +     allocation hooks MALLOC_HOOKS and the log handler LOG_CB with the
 +     user data LOG_CB_DATA.
 +
 +   After the context has been used, it can be destroyed again.
 +
 + -- Function: void assuan_release (assuan_context_t ctx)
 +     The function 'assuan_release' destroys the context CTX and releases
 +     all associated resources.
 +
 +   Other properties of the context beside the memory allocation handler,
 +the log handler, and the 'libgpg-error' source can be set after context
 +creation.  Here are some of them:
 +
 + -- Function: void assuan_set_pointer (assuan_context_t CTX,
 +          void *POINTER)
 +
 +     Store the arbitrary pointer value POINTER into the context CTX.
 +     This is useful to provide command handlers with additional
 +     application context.
 +
 + -- Function: void* assuan_get_pointer (assuan_context_t CTX)
 +
 +     This returns the pointer for context CTX which has been set using
 +     the above function.  A common way to use it is by setting the
 +     pointer before starting the processing loop and to retrieve it
 +     right at the start of a command handler:
 +          static int
 +          cmd_foo (assuan_context_t ctx, char *line)
 +          {
 +            ctrl_t ctrl = assuan_get_pointer (ctx);
 +            ...
 +          }
 +
 + -- Function: void assuan_set_flag (assuan_context_t CTX,
 +          assuan_flag_t FLAG, int VALUE)
 +
 +     Set the the FLAG for context CTX to VALUE.  Values for flags are
 +     usually 1 or 0 but certain flags might need other values.
 +
 +      -- Data type: assuan_flag_t
 +          The flags are all named and collected in an 'enum' for better
 +          readability.  Available flags are:
 +
 +          'ASSUAN_NO_WAITPID'
 +               When using a pipe server, by default Libassuan will wait
 +               for the forked process to die in 'assuan_release'.  In
 +               certain cases this is not desirable.  By setting this
 +               flag, a call to 'waitpid' will be suppressed and the
 +               caller is responsible to cleanup the child process.
 +          'ASSUAN_CONFIDENTIAL'
 +               Use to return the state of the confidential logging mode.
 +          'ASSUAN_NO_FIXSIGNALS'
 +               Do not modify signal handler for 'SIGPIPE'.
 +          'ASSUAN_CONVEY_COMMENTS'
 +               If enabled comment lines are passed to the status
 +               callback of the 'assuan_transact'.
 +          'ASSUAN_FORCE_CLOSE'
 +               Setting this flag forces the next command to assume that
 +               the connection has been closed.  This breaks the command
 +               processing loop and may be used as an implicit BYE
 +               command.  VALUE is ignored and thus it is not possible to
 +               clear this flag.
 +
 + -- Function: int assuan_get_flag (assuan_context_t CTX,
 +          assuan_flag_t FLAG)
 +     Return the value of FLAG in context CTX.
 +
 + -- Function: void assuan_begin_confidential (assuan_context_t CTX)
 +     Put the logging feature into confidential mode.  This is to avoid
 +     logging of sensitive data.
 +
 +     This is identical to:
 +          assuan_set_flag (ctx, ASSUAN_CONFIDENTIAL, 1);
 +
 + -- Function: void assuan_end_confidential (assuan_context_t CTX)
 +     Get the logging feature out of confidential mode.  All data will be
 +     logged again (if logging is enabled).
 +
 +     This is identical to:
 +          assuan_set_flag (ctx, ASSUAN_CONFIDENTIAL, 0);
 +
 + -- Data type: struct assuan_system_hooks
 +     This structure is used to store the system callback interface
 +     functions.  It has the following members, whose semantics are
 +     similar to the corresponding system functions, but not exactly
 +     equivalent.
 +
 +     'int version'
 +          The user should set this to 'ASSUAN_SYSTEM_HOOKS_VERSION'.
 +          This indicates to the library which members of this structure
 +          are present in case of future extensions.  The user should
 +          initialize the whole structure with zero bytes.
 +
 +     'void (*usleep) (assuan_context_t ctx, unsigned int usec)'
 +          This is the function called by ASSUAN to sleep for 'USEC'
 +          microseconds.
 +
 +     'int (*pipe) (assuan_context_t ctx, assuan_fd_t fd[2], int inherit_idx)'
 +          This is the function called by ASSUAN to create a pipe.  The
 +          returned file descriptor 'fd[inherit_idx]' must be inheritable
 +          by the child process (under Windows, this requires some extra
 +          work).
 +
 +     'int (*close) (assuan_context_t ctx, assuan_fd_t fd)'
 +          This is the function called by ASSUAN to close a file
 +          descriptor created through the system functions.
 +
 +     'ssize_t (*read) (assuan_context_t ctx, assuan_fd_t fd, void *buffer, size_t size)'
 +          This is the function called by ASSUAN to read data from a file
 +          descriptor.  It is functionally equivalent to the system
 +          'read' function.
 +
 +     'ssize_t (*write) (assuan_context_t ctx, assuan_fd_t fd, const void *buffer, size_t size)'
 +          This is the function called by ASSUAN to write data to a file
 +          descriptor.  It is functionally equivalent to the system
 +          'write' function.
 +
 +     'int (*recvmsg) (assuan_context_t ctx, assuan_fd_t fd, assuan_msghdr_t msg, int flags)'
 +          This is the function called by ASSUAN to receive a message
 +          from a file descriptor.  It is functionally equivalent to the
 +          system 'recvmsg' function.
 +
 +     'int (*sendmsg) (assuan_context_t ctx, assuan_fd_t fd, const assuan_msghdr_t msg, int flags);'
 +          This is the function called by ASSUAN to send a message to a
 +          file descriptor.  It is functionally equivalent to the system
 +          'sendmsg' function.
 +
 +     'int (*spawn) (assuan_context_t ctx, pid_t *r_pid, const char *name, const char **argv, assuan_fd_t fd_in, assuan_fd_t fd_out, assuan_fd_t *fd_child_list, void (*atfork) (void *opaque, int reserved), void *atforkvalue, unsigned int flags)'
 +          This is the function called by ASSUAN to spawn a child
 +          process.  The 'stdin' and 'stdout' file descriptors are
 +          provided in 'fd_in' and 'fd_out' respectively, but can be set
 +          to 'ASSUAN_INVALID_FD', in which case they are set to
 +          '/dev/null'.  On systems which use 'fork' and 'exec', the
 +          'atfork' function should be called with 'atforkvalue' and '0'
 +          for flags in the child process right after 'fork' returns.
 +          'fd_child_list' is a 'ASSUAN_INVALID_FD' terminated array (or
 +          'NULL') and specifies file descriptors to be inherited by the
 +          child process.
 +
 +          A special situation occurs if 'name' is a null pointer, in
 +          which case the process should just fork but not call 'exec'.
 +          In this case, '*argv' should be set to '"client"' in the
 +          parent process and '"server"' in the child process.
 +
 +          Flags is the bit-wise OR of some (or none) of the following
 +          flags:
 +
 +          'ASSUAN_SPAWN_DETACHED'
 +               If set and there is a need to start the server it will be
 +               started as a background process.  This flag is useful
 +               under W32 systems, so that no new console is created and
 +               pops up a console window when starting the server.  On
 +               W32CE systems this flag is ignored.
 +
 +     'pid_t (*waitpid) (assuan_context_t ctx, pid_t pid, int action, int *status, int options)'
 +          This is the function called by ASSUAN to wait for the spawned
 +          child process PID to exit, or, if ACTION is 1, to just release
 +          all resources associated with PID (required on Windows
 +          platforms).  If ACTION is 0, this is equivalent to 'waitpid'.
 +
 +     'int (*socketpair) (assuan_context_t ctx, int namespace, int style, int protocol, assuan_fd_t filedes[2])'
 +          This is the function called by ASSUAN to create a socketpair.
 +          It is equivalent to 'socketpair'.
 +
 + -- Function: void assuan_set_system_hooks
 +          (assuan_system_hooks_t SYSTEM_HOOKS)
 +     Set the default system hooks to use.  There is currently no way to
 +     reset to the default system hooks.
 +
 + -- Function: void assuan_ctx_set_system_hooks (assuan_context_t CTX,
 +          assuan_system_hooks_t SYSTEM_HOOKS)
 +     Set the system hooks for context CTX.  There is currently no way to
 +     reset to the default system hooks, create a new context for that.
 +
 +   The following system hook collections are defined by the library for
 +your convenience:
 +
 +'ASSUAN_SYSTEM_NPTH'
 +     System hooks suitable for use with the nPth library.
 +'ASSUAN_SYSTEM_NPTH_IMPL'
 +     The implementation of system hooks for use with the nPth library.
 +     This must be invoked once somewhere in the application, and defines
 +     the structure that is referenced by 'ASSUAN_SYSTEM_NPTH'.
 +'ASSUAN_SYSTEM_PTH'
 +     System hooks suitable for use with the GNU Pth library.
 +'ASSUAN_SYSTEM_PTH_IMPL'
 +     The implementation of system hooks for use with the GNU Pth
 +     library.  This must be invoked once somewhere in the application,
 +     and defines the structure that is referenced by
 +     'ASSUAN_SYSTEM_PTH'.
 +
 +
 +File: assuan.info,  Node: Reading and Writing,  Prev: Contexts,  Up: Generalities
 +
 +5.5 How to communicate with the peer
 +====================================
 +
 +What would be an IPC library without the ability to read and write data?
 +Not very useful.  Libassuan has high level functions to take care of of
 +the more boring stuff, but eventually data needs to be written and read.
 +
 +The basic read and write functions are:
 +
 + -- Function: gpg_error_t assuan_read_line (assuan_context_t CTX,
 +          char **LINE, size_t *LINELEN)
 +
 +     Read the next line written by the peer to the control channel and
 +     store a pointer to the buffer holding that line at the address
 +     LINE.  The valid length of the lines is stored at the address of
 +     LINELEN.  This buffer is valid until the next read operation on the
 +     same context CTX.  You may modify the context of this buffer.  The
 +     buffer is invalid (i.e.  must not be used) if an error is returned.
 +     This function returns '0' on success or an error value.
 +
 + -- Function: gpg_error_t assuan_write_line (assuan_context_t CTX,
 +          const char *LINE)
 +
 +     Write the string LINE to the other end on the control channel.
 +     This string needs to be a proper formatted Assuan protocol line and
 +     should not include a linefeed.  Sending linefeed or 'Nul'
 +     characters is not possible and not allowed by the assuan protocol.
 +     This function shall not be used for sending data ('D') lines.  This
 +     function returns '0' on success or an error value.
 +
 +To actually send bulk data lines a specialized function is available:
 +
 + -- Function: gpg_error_t assuan_send_data (assuan_context_t CTX,
 +          const void *BUFFER, size_t LENGTH)
 +
 +     This function is used by a server or a client to send LENGTH bytes
 +     of bulk data in BUFFER to the other end on the control channel.
 +     The data will be escaped as required by the Assuan protocol and may
 +     get buffered until a line is full.  To flush any pending data,
 +     BUFFER may be passed as 'NULL' and LENGTH be '0'.
 +
 +     When used by a client, this flush operation does also send the
 +     'END' command to terminate the response on an 'INQUIRE' request.
 +     Note that the function 'assuan_transact' takes care of sending this
 +     'END' itself.
 +
 +     This function returns '0' on success or an error value.
 +
 +   The input and output of data can be controlled at a higher level
 +using an I/O monitor.
 +
 + -- Data type: unsigned int (*assuan_io_monitor_t)
 +          (assuan_context_t CTX, void *HOOK_VALUE, int INOUT,
 +          const char *LINE, size_t LINELEN)
 +     The monitor function is called right after a line has been
 +     received, if INOUT is 'ASSUAN_IO_FROM_PEER', or just before it is
 +     send, if INOUT is 'ASSUAN_IO_TO_PEER'.  The HOOK_VALUE is provided
 +     by the user when registering the I/O monitor function with a
 +     context using 'assuan_set_io_monitor'.  The callback function
 +     should return the bitwise OR of some (or none) of the following
 +     flags:
 +
 +     'ASSUAN_IO_MONITOR_NOLOG'
 +          Active logging of this line is suppressed.  This can reduce
 +          debug output in the case of a frequent message.
 +     'ASSUAN_IO_MONITOR_IGNORE'
 +          The whole output line is discarded.
 +
 + -- Function: void assuan_set_io_monitor (assuan_context_t CTX,
 +          assuan_io_monitor_t IO_MONITOR, void *HOOK_DATA)
 +     This function registers an I/O monitor IO_MONITOR for the context
 +     CTX with the hook value HOOK_DATA.
 +
 +
 +File: assuan.info,  Node: Client code,  Next: Server code,  Prev: Generalities,  Up: Top
 +
 +6 How to develop an Assuan client
 +*********************************
 +
 +Depending on the type of the server you want to connect you need to use
 +different functions.
 +
 +   If the peer is not a simple pipe server but one using full-duplex
 +sockets, the full-fledged variant of the above function should be used:
 +
 + -- Function: gpg_error_t assuan_pipe_connect
 +          (assuan_context_t CTX,const char *NAME, const char *ARGV[],
 +          assuan_fd_t *FD_CHILD_LIST, void (*ATFORK) (void *, int),
 +          void *ATFORKVALUE, unsigned int FLAGS)
 +
 +     A call to this functions forks the current process and executes the
 +     program NAME, passing the arguments given in the NULL-terminated
 +     list ARGV.  A list of file descriptors not to be closed may be
 +     given using the 'ASSUAN_INVALID_FD' terminated array FD_CHILD_LIST.
 +
 +     If NAME is a null pointer, only a fork but no exec is done.  Thus
 +     the child continues to run.  However all file descriptors are
 +     closed and some special environment variables are set.  To let the
 +     caller detect whether the child or the parent continues, the parent
 +     returns with '"client"' returned in ARGV and the child returns with
 +     '"server"' in ARGV.  This feature is only available on POSIX
 +     platforms.
 +
 +     If ATFORK is not NULL, this function is called in the child right
 +     after the fork and the value ATFORKVALUE is passed as the first
 +     argument.  That function should only act if the second argument it
 +     received is '0'.  Such a fork callback is useful to release
 +     additional resources not to be used by the child.
 +
 +     FLAGS is a bit vector and controls how the function acts:
 +
 +     'ASSUAN_PIPE_CONNECT_FDPASSING'
 +          If cleared a simple pipe based server is expected.  If set a
 +          server based on full-duplex pipes is expected.  Such pipes are
 +          usually created using the 'socketpair' function.  It also
 +          enables features only available with such servers.
 +
 +     'ASSUAN_PIPE_CONNECT_DETACHED'
 +          If set and there is a need to start the server it will be
 +          started as a background process.  This flag is useful under
 +          W32 systems, so that no new console is created and pops up a
 +          console window when starting the server.  On W32CE systems
 +          this flag is ignored.
 +
 +   If you are using a long running server listening either on a TCP or a
 +Unix domain socket, the following function is used to connect to the
 +server:
 +
 + -- Function: gpg_error_t assuan_socket_connect (assuan_context_t CTX,
 +          const char *NAME, pid_t SERVER_PID, unsigned int FLAGS)
 +
 +     Make a connection to the Unix domain socket NAME using the
 +     already-initialized Assuan context at CTX.  SERVER_PID is currently
 +     not used but may become handy in the future; if you don't know the
 +     server's process ID (PID), pass 'ASSUAN_INVALID_PID'.  With FLAGS
 +     set to 'ASSUAN_SOCKET_CONNECT_FDPASSING', 'sendmsg' and 'recvmesg'
 +     are used for input and output and thereby enable the use of
 +     descriptor passing.
 +
 +     Connecting to a TCP server is not yet implemented.  Standard URL
 +     schemes are reserved for NAME specifying a TCP server.
 +
 +   Now that we have a connection to the server, all work may be
 +conveniently done using a couple of callbacks and the transact function:
 +
 + -- Function: gpg_error_t assuan_transact (assuan_context_t CTX,
 +          const char *COMMAND,
 +          gpg_error_t (*DATA_CB)(void *, const void *, size_t),
 +          void *DATA_CB_ARG,
 +          gpg_error_t (*INQUIRE_CB)(void*, const char *),
 +          void *INQUIRE_CB_ARG,
 +          gpg_error_t (*STATUS_CB)(void*, const char *),
 +          void *STATUS_CB_ARG)
 +
 +     Here CTX is the Assuan context opened by one of the connect calls.
 +     COMMAND is the actual Assuan command string.  It shall not end with
 +     a line feed and its length is limited to 'ASSUAN_LINELENGTH' (~1000
 +     bytes)
 +
 +     DATA_CB is called by Libassuan for data lines; DATA_CB_ARG is
 +     passed to it along with the data and the length.  [FIXME: needs
 +     more documentation].
 +
 +     INQUIRE_CB is called by Libassuan when the server requests
 +     additional information from the client while processing the
 +     command.  This callback shall check the provided inquiry name and
 +     send the data as requested back using the 'assuan_send_data'.  The
 +     server passed INQUIRY_CB_ARG along with the inquiry name to the
 +     callback.
 +
 +     STATUS_CB is called by Libassuan for each status line it receives
 +     from the server.  STATUS_CB_ARG is passed along with the status
 +     line to the callback.
 +
 +     The function returns '0' success or an error value.  The error
 +     value may be the one one returned by the server in error lines or
 +     one generated by the callback functions.
 +
 +   Libassuan supports descriptor passing on some platforms.  The next
 +two functions are used with this feature:
 +
 + -- Function: gpg_error_t assuan_sendfd (assuan_context_t CTX,
 +          assuan_fd_t FD)
 +
 +     Send the descriptor FD to the peer using the context CTX.  The
 +     descriptor must be sent before the command is issued that makes use
 +     of the descriptor.
 +
 +     Note that calling this function with a CTX of 'NULL' and FD of
 +     'ASSUAN_INVALID_FD' can be used as a runtime test to check whether
 +     descriptor passing is available on the platform: '0' is returned if
 +     descriptor passing is available, otherwise an error with the error
 +     code 'GPG_ERR_NOT_IMPLEMENTED' is returned.
 +
 + -- Function: gpg_error_t assuan_receivefd (assuan_context_t CTX,
 +          assuan_fd_t *FD)
 +
 +     Receive a descriptor pending for the context CTX from the peer.
 +     The descriptor must be pending before this function is called.  To
 +     accomplish this, the peer needs to use 'assuan_sendfd' before the
 +     trigger is sent (e.g.  using 'assuan_write_line ("INPUT FD")'.
 +
 +
 +File: assuan.info,  Node: Server code,  Next: External I/O Loop,  Prev: Client code,  Up: Top
 +
 +7 How to develop an Assuan server
 +*********************************
 +
 +Implementing a server for Assuan is a bit more complex than a client.
 +However, it is a straightforward task we are going to explain using a
 +commented example.
 +
 +The list of the implemented server commands is defined by a table like:
 +
 +       static struct {
 +         const char *name;
 +         int (*handler) (assuan_context_t, char *line);
 +       } command_table[] = {
 +         { "FOO", cmd_foo },
 +         { "BAR", cmd_bar },
 +         { "INPUT", NULL },
 +         { "OUTPUT", NULL },
 +         { NULL }};
 +
 +   For convenience this table is usually put after the actual command
 +handlers ('cmd_foo', 'cmd_bar') or even put inside 'command_handler'
 +(see below).  Note that the commands 'INPUT' and 'OUTPUT' do not require
 +a handler because Libassuan provides a default handler for them.  It is
 +however possible to assign a custom handler.
 +
 +   A prerequisite for this example code is that a client has already
 +connected to the server.  Often there are two modes combined in one
 +program: A pipe-based server, where a client has forked the server
 +process, or a Unix domain socket based server that is listening on the
 +socket.
 +
 +     void
 +     command_handler (int fd)
 +     {
 +       gpg_error_t rc;
 +       int i;
 +       assuan_context_t ctx;
 +
 +       rc = assuan_new (&ctx);
 +       if (rc)
 +         {
 +           fprintf (stderr, "server context creation failed: %s\n",
 +                    gpg_strerror(rc));
 +           return;
 +         }
 +
 +       if (fd == -1)
 +         {
 +           assuan_fd_t filedes[2];
 +
 +           filedes[0] = assuan_fd_from_posix_fd (0);
 +           filedes[1] = assuan_fd_from_posix_fd (1);
 +           rc = assuan_init_pipe_server (ctx, filedes);
 +         }
 +       else
 +         rc = assuan_init_socket_server (ctx, fd, ASSUAN_SOCKET_SERVER_ACCEPTED);
 +       if (rc)
 +         {
 +           fprintf (stderr, "server init failed: %s\n", gpg_strerror (rc));
 +           return;
 +         }
 +
 +This is the first part of the command handler.  We start off by
 +allocating a new Assuan context with 'assuan_new'.  *Note function
 +assuan_new::.
 +
 +   In case this is called as a pipe based server, FD will be based as FD
 +and the code assumes that the server's 'stdin' and 'stdout' file handles
 +are connected to a pipe.  The initialization is thus done using the
 +function:
 +
 + -- Function: gpg_error_t assuan_init_pipe_server (assuan_context_t CTX,
 +          assuan_fd_t FILEDES[2])
 +
 +     This function takes the two file descriptors from FILEDES and
 +     returns a new Assuan context at R_CTX.  As usual, a return value of
 +     '0' indicates success and a failure is indicated by returning an
 +     error value.  In case of error, 'NULL' will be stored at R_CTX.
 +
 +     In case the server has been called using a bi-directional pipe
 +     (socketpair), FILEDES is ignored and the file descriptor is taken
 +     from the environment variable '_assuan_connection_fd'.  You
 +     generally don't need to know this, because 'assuan_pipe_connect',
 +     which is called by the client to connect to such a server,
 +     automagically sets this variable.
 +
 + -- Function: gpg_error_t assuan_init_socket_server
 +          (assuan_context_t CTX, assuan_fd_t FD, unsigned int FLAGS)
 +
 +     This function takes the file descriptor FD, which is expected to be
 +     associated with a socket, and an Assuan context CTX.  The following
 +     bits are currently defined for FLAGS:
 +
 +     'ASSUAN_SOCKET_SERVER_FDPASSING'
 +          If set, 'sendmsg' and 'recvmesg' are used for input and
 +          output, which enables the use of descriptor passing.
 +     'ASSUAN_SOCKET_SERVER_ACCEPTED'
 +          If set, FD refers to an already accepted socket.  That is,
 +          Libassuan won't call ACCEPT for it.  It is suggested to set
 +          this bit as it allows better control of the connection state.
 +
 +     As usual, a return value of '0' indicates success and a failure is
 +     indicated by returning an error value.
 +
 +On the Windows platform the following function needs to be called after
 +'assuan_init_socket_server':
 +
 + -- Function: void assuan_set_sock_nonce ( assuan_context_t CTX,
 +          assuan_sock_nonce_t *NONCE)
 +
 +     Save a copy of NONCE in context CTX.  This should be used to
 +     register the server's nonce with a context established by
 +     'assuan_init_socket_server'.  It is technically only needed for
 +     Windows, but it does no harm to use it on other systems.
 +
 +After error checking, the implemented assuan commands are registered
 +with the server.
 +
 +       for (i = 0; command_table[i].name; i++)
 +         {
 +           rc = assuan_register_command (ctx,
 +                                         command_table[i].name,
 +                                         command_table[i].handler, NULL);
 +           if (rc)
 +             {
 +               fprintf (stderr, "register failed: %s\n", gpg_strerror (rc));
 +               assuan_release (ctx);
 +               return;
 +             }
 +         }
 +
 + -- Data type: gpg_error_t (*assuan_handler_t) (assuan_context_t CTX,
 +          char *LINE)
 +     This is the function invoked by ASSUAN for various command related
 +     callback functions.  Some of these callback functions have a
 +     different type, but most use 'assuan_handler_t'.
 +
 + -- Function: gpg_error_t assuan_register_command (assuan_context_t CTX,
 +          const char *CMD_STRING, assuan_handler_t HANDLER,
 +          const char *HELP_STRING)
 +
 +     This registers the command named CMD_STRING with the Assuan context
 +     CTX.  HANDLER is the function called by Libassuan if this command
 +     is received from the client.  NULL may be used for HANDLER to use a
 +     default handler (this only works with a few pre-defined commands).
 +     Note that several default handlers have already been registered
 +     when the context has been created: 'NOP', 'CANCEL', 'OPTION',
 +     'BYE', 'AUTH', 'RESET' and 'END'.  It is possible, but not
 +     recommended, to override these commands.
 +
 +     HELP_STRING is a help string that is used for automatic
 +     documentation.  It should contain a usage line followed by an empty
 +     line and a complete description.
 +
 + -- Function: gpg_error_t assuan_register_post_cmd_notify
 +          (assuan_context_t CTX, void (*FNC)(assuan_context_t),
 +          gpg_error_t ERR)
 +
 +     Register a function to be called right after a command has been
 +     processed.  ERR is the result code from the last internal assuan
 +     operation and not the one returned by the handler.  It may be used
 +     for command-related cleanup.
 +
 + -- Function: gpg_error_t assuan_register_bye_notify
 +          (assuan_context_t CTX, assuan_handler_t HANDLER)
 +
 +     Register function FNC with context CTX to be called right before
 +     the standard handler for the 'BYE' command is being called.
 +
 + -- Function: gpg_error_t assuan_register_reset_notify
 +          (assuan_context_t CTX, assuan_handler_t HANDLER)
 +
 +     Register function FNC with context CTX to be called right before
 +     the standard handler for the 'RESET' command is being called.
 +
 + -- Function: gpg_error_t assuan_register_cancel_notify
 +          (assuan_context_t CTX, assuan_handler_t HANDLER)
 +
 +     Register function FNC with context CTX to be called right before
 +     the standard handler for the 'RESET' command is being called.
 +
 + -- Function: gpg_error_t assuan_register_option_handler
 +          (assuan_context_t CTX,
 +          gpg_error_t (*FNC)(assuan_context_t, const char*, const char*))
 +
 +     Register function FNC with context CTX for processing options.
 +     That function is being called with the context, the name and the
 +     value of the option.  Leading and trailing spaces are removed from
 +     the name and the value.  The optional leading two dashes of the
 +     name are removed as well.  If no value has been given, an empty
 +     string is passed.  The function needs to return '0' on success or
 +     an error code.
 +
 + -- Function: gpg_error_t assuan_register_input_notify
 +          (assuan_context_t CTX, assuan_handler_t HANDLER)
 +
 +     Although the input function may be overridden with a custom
 +     handler, it is often more convenient to use the default handler and
 +     to know whether an 'INPUT' command has been seen and successfully
 +     parsed.  The second argument passed to that function is the entire
 +     line.  Because that line has already been parsed when the function
 +     gets called, a file descriptor set with the 'INPUT' command may
 +     already be used.  That file descriptor is available by calling
 +     'assuan_get_input_fd'.  If the notification function returns an
 +     error, the input fd does not change.
 +
 + -- Function: gpg_error_t assuan_register_output_notify
 +          (assuan_context_t CTX, assuan_handler_t HANDLER)
 +
 +     Although the output function may be overridden with a custom
 +     handler, it is often more convenient to use the default handler and
 +     to know whether an 'OUTPUT' command has been seen and successfully
 +     parsed.  The second argument passed to that function is the entire
 +     line.  Because that line has already been parsed when the function
 +     gets called, a file descriptor set with the 'OUTPUT' command may
 +     already be used.  That file descriptor is available by calling
 +     'assuan_get_output_fd'.  If the notification function returns an
 +     error, the output fd does not change.
 +
 + -- Function: gpg_error_t assuan_set_hello_line (assuan_context_t CTX,
 +          const char *LINE)
 +
 +     This is not actually a register function but may be called also
 +     after registering commands.  It changes the "Hello" line, sent by
 +     the server to the client as a first response, from a default string
 +     to the string LINE.  For logging purposes, it is often useful to
 +     use such a custom hello line which may tell version numbers and
 +     such.  Linefeeds are allowed in this string, however, each line
 +     needs to be shorter than the Assuan line length limit.
 +
 +Now that everything has been setup, we can start to process our clients
 +requests.
 +
 +       for (;;)
 +         {
 +           rc = assuan_accept (ctx);
 +           if (rc == -1)
 +             break;
 +           else if (rc)
 +             {
 +               fprintf (stderr, "accept problem: %s\n", gpg_strerror (rc));
 +               break;
 +             }
 +
 +           rc = assuan_process (ctx);
 +           if (rc)
 +             {
 +               fprintf (stderr, "processing failed: %s\n", gpg_strerror (rc));
 +               continue;
 +             }
 +         }
 +       assuan_release (ctx);
 +     }
 +
 +For future extensibility and to properly detect the end of the
 +connection the core of the server should loop over the accept and
 +process calls.
 +
 + -- Function: gpg_error_t assuan_accept (assuan_context_t CTX)
 +
 +     A call to this function cancel any existing connection and waits
 +     for a connection from a client (that might be skipped, depending on
 +     the type of the server).  The initial handshake is performed which
 +     may include an initial authentication or encryption negotiation.
 +     On success '0' is returned.  An error value will be returned if the
 +     connection could for some reason not be established.  An error code
 +     of 'GPG_ERR_EOF' indicates the end of the connection.
 +
 + -- Function: gpg_error_t assuan_process (assuan_context_t CTX)
 +
 +     This function is used to handle the Assuan protocol after a
 +     connection has been established using 'assuan_accept'.  It is the
 +     main protocol handler responsible for reading the client commands
 +     and calling the appropriate handlers.  The function returns '0' on
 +     success or an error value if something went seriously wrong.  Error
 +     values from the individual command handlers, i.e.  operational
 +     error, are not seen here.
 +
 +That is all needed for the server code.  You only need to come up with
 +the code for the individual command handlers.  Take care that the line
 +passed to the command handlers is allocated statically within the
 +context and calls to Assuan functions may modify that line.  You are
 +also allowed to modify that line which makes parsing much easier.
 +
 +
 +File: assuan.info,  Node: External I/O Loop,  Next: Utilities,  Prev: Server code,  Up: Top
 +
 +8 How to use external I/O event loops
 +*************************************
 +
 +The above implementations of an Assuan client and server are
 +synchronous, insofar as the main routines block until a request or
 +client connection is completely processed.  In some programs, for
 +example GUI applications, this is undesirable.  Instead, Assuan
 +operations should be non-blocking, and the caller should be able to poll
 +all involved file descriptors to determine when the next Assuan function
 +can be invoked without blocking.
 +
 +   To make this possible, client and server have to adhere to some
 +rules:
 +   * Either partner should always write full lines.  If partial lines
 +     are written, the remainder of the line should be sent without
 +     delay.
 +   * Either partner should eagerly receive status messages.  While
 +     receiving and sending bulk data may be delayed, the status
 +     communication channel is different: Both partners may send status
 +     messages in blocking mode at any time the protocol allows them to
 +     send such status messages.  To ensure that these send operations do
 +     not actually block the sender, the recipient must be ready to
 +     receive without undue delay.
 +   * If descriptor passing is used over a socket, the descriptor must be
 +     sent after the corresponding command without undue delay.
 +
 +   Together, these restrictions allow to limit the need for asynchronous
 +I/O operations to bulk data and the inbound status file descriptor.
 +
 +   In addition to the above rules, client and server should adhere to
 +the following implementation guidelines.
 +
 +* Menu:
 +
 +* External I/O Loop Client::    External I/O event loops in the client.
 +* External I/O Loop Server::    External I/O event loops in the server.
 +
 +
 +File: assuan.info,  Node: External I/O Loop Client,  Next: External I/O Loop Server,  Up: External I/O Loop
 +
 +8.1 External I/O event loops in the client.
 +===========================================
 +
 +The reference implementation for using external I/O event loops in the
 +client is the GPGME library, which exports its own external I/O event
 +loop mechanism and utilizes the Assuan library transparently for the
 +user.  The following steps document how GPGME achieves this.
 +
 +  1. Before connecting, set up pipes for bulk data transfer (using the
 +     INPUT/OUTPUT commands, for example).  These are passed to the
 +     server either by inheritance (using a pipe server) or by FD passing
 +     (using a socket server).
 +
 +  2. Then you need to connect to the server.  GPGME uses a pipe server,
 +     so it just spawns a server process, which is a non-blocking
 +     operation.  FIXME: Currently, using a client with external event
 +     loop over a socket connection is not supported.  It is easy to
 +     support (we just need a variation of 'assuan_socket_connect' which
 +     takes an already connected socket FD and turns it into an Assuan
 +     context), so if you need this let us know.
 +
 +  3. After connecting, get the inbound status FD with
 +     'assuan_get_active_fds' (the first one returned is the status FD).
 +     This FD can be duplicated if it is convenient (GPGME does this to
 +     be able to close this FD and associated callback handlers without
 +     disrupting Assuan's internals).
 +
 +  4. Then register the Assuan inbound status FD and all bulk data FDs
 +     with the I/O event mechanism.  In general, this requires setting up
 +     callback handlers for these FDs and registering them with the main
 +     event loop.
 +
 +  5. When bulk data FDs become ready, you can simply perform the
 +     corresponding read or write operations.  When the inbound status FD
 +     becomes ready, you can receive the next server line with
 +     assuan_read_line().
 +
 +  6. You should close and unregister the bulk data FDs when you wrote
 +     all data (for outbound FDs) or receive an EOF (for inbound FDs).
 +     When you receive an ERR from the server, or an OK for the final
 +     operation, you can unregister the inbound status FD and call
 +     'assuan_release'.
 +
 +  7. As noted above, all send operations on the outbound status FD are
 +     done immediate with blocking.  In GPGME, this has never caused any
 +     problems.
 +
 +  8. The 'INQUIRE' function can be handled in two ways: If the requested
 +     data is immediately available, the client can just send the data
 +     blockingly.  If the requested data needs to be fetched from a
 +     blocking source, a callback handler can be registered for the FD
 +     with the main event loop.  GPGME does not support the 'INQUIRE'
 +     function, so we do not have any practical experience with this.
 +
 +   Currently, the client can not cancel a pending operation gracefully.
 +It can, however, disconnect from the server at any time.  It is the
 +responsibility of the server to periodically send status messages to the
 +client to probe if the connection remains alive.
 +
 +
 +File: assuan.info,  Node: External I/O Loop Server,  Prev: External I/O Loop Client,  Up: External I/O Loop
 +
 +8.2 External I/O event loops in the server.
 +===========================================
 +
 +Currently, no Assuan server exists which uses external I/O event loops.
 +However, the following guidelines should lead to a usable
 +implementation:
 +
 +  1. For socket servers: You can not use 'assuan_accept', so you should
 +     just implement the bind/connect/listen/accept stage yourself.  You
 +     can register the listen FD with your main event loop, accept the
 +     connection when it becomes ready, and finally call
 +     'assuan_init_socket_server' with the final argument being
 +     'ASSUAN_SOCKET_SERVER_ACCEPTED' to create an Assuan context for
 +     this connection.  This way you can also handle multiple connections
 +     in parallel.  The reference implementation for this approach is
 +     DirMngr.
 +
 +     For pipe servers: 'assuan_init_pipe_server' creates an Assuan
 +     context valid for the pipe FDs.
 +
 +  2. Once you have a context for a single connection, you can get the
 +     inbound status FD with 'assuan_get_active_fds' (the first one
 +     returned is the status FD). This FD can be duplicated if it is
 +     convenient.  Every time the inbound status FD is readable, you
 +     should invoke the function 'assuan_process_next' (see below) to
 +     process the next incoming message.  'assuan_process_next' processes
 +     as many status lines as can be received by a single 'read'
 +     operation.  When it returns, the inbound status FD may still be
 +     readable, but Assuan does not check this.
 +
 +     The function 'assuan_process_next' returns 0 if it can not make
 +     progress reliably, and it returns true in 'done' if the client
 +     closed the connection.  See below for more information on this
 +     function.
 +
 +  3. The command will be dispatched by 'assuan_process_next' just as
 +     with 'assuan_process', however, you will want to implement the
 +     command handlers in such a way that they do not block.  For
 +     example, the command handler may just register the bulk data FDs
 +     with the main event loop and return.
 +
 +     When the command is finished, irregardless if this happens directly
 +     in the command handler or later, you must call
 +     'assuan_process_done' with an appropriate error value (or 0 for
 +     success) to return an appropriate status line to the client.  You
 +     can do this at the end of the command handler, for example by
 +     ending it with 'return assuan_process_done (error_code);'.  Another
 +     possibility is to invoke 'assuan_process_done' from the place in
 +     the code which closes the last active bulk FD registered with the
 +     main event loop for this operation.
 +
 +   It is not possible to use 'assuan_inquire' in a command handler, as
 +this function blocks on receiving the inquired data from the client.
 +Instead, the asynchronous version 'assuan_inquire_ext' needs to be used
 +(see below), which invokes a callback when the client provided the
 +inquired data.  A typical usage would be for the command handler to
 +register a continuation with 'assuan_inquire_ext' and return 0.
 +Eventually, the continuation would be invoked by 'assuan_process_next'
 +when the client data arrived.  The continuation could complete the
 +command and eventually call 'assuan_process_done'.
 +
 +   Cancellation is supported by returning an appropriate error value to
 +the client with 'assuan_process_done'.  For long running operations, the
 +server should send progress status messages to the client in regular
 +intervals to notice when the client disconnects.
 +
 + -- Function: gpg_error_t assuan_process_next (assuan_context_t CTX,
 +          int *DONE)
 +     This is the same as 'assuan_process' but the caller has to provide
 +     the outer loop.  He should loop as long as the return code is zero
 +     and DONE is false.
 +
 + -- Function: gpg_error_t assuan_process_done (assuan_context_t CTX,
 +          gpg_error_t RC)
 +     Finish a pending command and return the error code RC to the
 +     client.
 +
 + -- Function: gpg_error_t assuan_inquire_ext (assuan_context_t CTX,
 +          const char *KEYWORD, size_t MAXLEN,
 +          gpg_error_t (*CB) (void *cb_data, gpg_error_t rc, unsigned char *buffer, size_t buffer_len),
 +          void *CB_DATA)
 +     This is similar to 'assuan_inquire' but the caller has to provide
 +     the outer loop (using 'assuan_process_next').  The caller should
 +     specify a continuation with CB, which receives CB_DATA as its first
 +     argument, and the error value as well as the inquired data as its
 +     remaining arguments.
 +
 +
 +File: assuan.info,  Node: Utilities,  Next: Socket wrappers,  Prev: External I/O Loop,  Up: Top
 +
 +9 Utility functions
 +*******************
 +
 +There are a lot of helper functions to make writing Assuan code easier.
 +Some of these functions provide information not available with the
 +general functions.
 +
 + -- Function: gpg_error_t assuan_write_status (assuan_context_t CTX,
 +          const char *KEYWORD, const char *TEXT)
 +
 +     This is a convenience function for a server to send a status line.
 +     You need to pass it the KEYWORD and the content of the status line
 +     in TEXT.
 +
 + -- Function: gpg_error_t assuan_inquire (assuan_context_t CTX,
 +          const char *KEYWORD, unsigned char **R_BUFFER,
 +          size_t *R_LENGTH, size_t MAXLEN)
 +
 +     A server may use this function to request specific data from a
 +     client.  This function sends an 'INQUIRE' command back to the
 +     client and returns the client's response in a newly allocated
 +     buffer.  You need to pass at least the server's context (CTX) and a
 +     description of the required data (KEYWORD).  All other parameters
 +     may be 'NULL' or '0', but this is rarely useful.
 +
 +     On success the result is stored in a newly allocated buffer stored
 +     at R_BUFFER.  The length of the data is stored at R_LENGTH.  If
 +     MAXLEN has not been given as '0', it specifies an upper size limit
 +     of the expected data.  If the client returns too much data the
 +     function fails and an error with the error code
 +     'GPG_ERR_ASS_TOO_MUCH_DATA' will be returned.
 +
 + -- Function: FILE* assuan_get_data_fp (assuan_context_t CTX)
 +
 +     Return a stdio stream for the Assuan context CTX.  This stream may
 +     then be used for data output (assuan_write_data).  The stream is
 +     valid until the end of the current handler.  Calling 'fclose' for
 +     that stream is not required.  Assuan does all the buffering needed
 +     to insert the status line as well as the required line wrapping and
 +     quoting for data lines.
 +
 +     This function is only available on systems supporting either
 +     'funopen' or 'fopencookie'.  If it is not supported 'NULL' is
 +     returned and 'errno' is set to 'ENOSYS'.
 +
 + -- Function: gpg_error_t assuan_set_okay_line (assuan_context_t CTX,
 +          const char *LINE)
 +
 +     Set the text used for the next 'OK' response to LINE.  This is
 +     sometimes useful to send additional human readable information
 +     along with the OK line.  The string is automatically reset at the
 +     end of the current handler.
 +
 + -- Function: gpg_error_t assuan_command_parse_fd (assuan_context_t CTX,
 +          char *LINE, assuan_fd_t *RFD)
 +
 +     This is the core of the default 'INPUT' and 'OUTPUT' handler.  It
 +     may be used in custom commands as well to negotiate a file
 +     descriptor.  If LINE contains 'FD=N', it returns N in RFD assuming
 +     a local file descriptor.  If LINE contains just 'FD' it returns a
 +     file descriptor at RFD; this file descriptor needs to have been
 +     sent by the client right before using 'assuan_sendfd'.
 +
 +     On W32 systems the returned file descriptor is a system handle and
 +     not a libc low level I/O file descriptor.  Thus applications need
 +     to use '_open_osfhandle' before they can pass this descriptor to
 +     standard functions like 'fdopen' or 'dup'.
 +
 + -- Function: const char * assuan_get_command_name
 +          (assuan_context_t CTX)
 +
 +     Return the name of the command currently processed by a handler.
 +     The returned string is valid until the next call to an Assuan
 +     function on the same context.  Returns 'NULL' if no handler is
 +     executed or the command is not known.
 +
 + -- Function: assuan_fd_t assuan_get_input_fd (assuan_context_t CTX)
 +
 +     Return the file descriptor sent by the client using the last
 +     'INPUT' command.  Returns 'ASSUAN_INVALID_FD' if no file descriptor
 +     is available.
 +
 + -- Function: assuan_fd_t assuan_get_output_fd (assuan_context_t CTX)
 +
 +     Return the file descriptor sent by the client using the last
 +     'OUTPUT' command.  Returns 'ASSUAN_INVALID_FD' if no file
 +     descriptor is available.
 +
 + -- Function: gpg_error_t assuan_close_input_fd (assuan_context_t CTX)
 +
 +     Close the file descriptor set by the last 'INPUT' command.  This
 +     function has the advantage over a simple 'close' that it can do
 +     some sanity checks and make sure that a following
 +     'assuan_get_input_fd' won't return an already closed descriptor.
 +
 + -- Function: gpg_error_t assuan_close_output_fd (assuan_context_t CTX)
 +
 +     Close the file descriptor set by the last 'OUTPUT' command.  This
 +     function has the advantage over a simple 'close' that it can do
 +     some sanity checks and make sure that a following
 +     'assuan_get_input_fd' won't return an already closed descriptor.
 +
 + -- Function: gpg_error_t assuan_set_error (assuan_context_t CTX,
 +          gpg_error_t ERR, const char *TEXT)
 +     This is a helper to provide a more descriptive error text with
 +     'ERR' lines.  For this to work, the text needs to be stored in the
 +     context CTX while still being in the command handler.  This
 +     function is commonly called this way
 +            return assuan_set_error (ctx, err, "commands needs 5 arguments");
 +     The value ERR is passed through and thus the return value of the
 +     command handler in the example.  The provided text further explains
 +     that error to humans.
 +
 + -- Function: pid_t assuan_get_pid (assuan_context_t CTX)
 +
 +     This function returns the pid of the connected connected peer.  If
 +     that pid is not known 'ASSUAN_INVALID_PID' is returned.  Note that
 +     it is not always possible to learn the pid of the other process.
 +     For a pipe based server the client knows it instantly and a
 +     mechanism is in place to let the server learn it.  For socket based
 +     servers the pid is only available on systems providing the
 +     'SO_PEERCRED' socket option (1).
 +
 + -- Data type: assuan_peercred_t
 +     This structure is used to store the peer credentials.  The
 +     available members depend on the operating system.
 +
 +     'pid_t pid'
 +          The process ID of the peer.
 +
 +     'uid_t uid'
 +          The user ID of the peer process.
 +
 +     'gid_t gid'
 +          The group ID of the peer process.
 +
 + -- Function: gpg_error_t assuan_get_peercred (assuan_context_t CTX,
 +          assuan_peercred_t *PEERCRED)
 +     Return user credentials of the peer.  This will work only on
 +     certain systems and only when connected over a socket.  On success,
 +     a pointer to the peer credentials is stored in PEERCRED.  The
 +     information is only valid as long as the state of the connection is
 +     unchanged (at least until the next assuan call to the same
 +     context).
 +
 +     As of now only the server is able to retrieve this information.
 +     Note, that for getting the pid of the peer 'assuan_get_pid' is
 +     usually better suited.
 +
 + -- Function: int assuan_get_active_fds (assuan_context_t CTX, int WHAT,
 +          assuan_fd_t *FDARRAY, int FDARRAYSIZE)
 +
 +     Return all active file descriptors for the context CTX.  This
 +     function can be used to select on the file descriptors and to call
 +     'assuan_process_next' if there is an active one.  The first
 +     descriptor in the array is the one used for the command connection.
 +     Currently WHAT needs to be '0' to return descriptors used for
 +     reading, '1' will eventually be used to return descriptors used for
 +     writing.  FDARRAY is an array of integers provided by the caller;
 +     FDARRAYSIZE gives the size of that array.
 +
 +     On success the number of active descriptors are returned.  These
 +     active descriptors are then stored in FDARRAY.  On error '-1' is
 +     returned; the most likely reason for this is a too small FDARRAY.
 +
 +     Note that on W32 systems the returned file descriptor is a system
 +     handle and not a libc low level I/O file descriptor.
 +
 + -- Function: int assuan_pending_line (assuan_context_t CTX)
 +     A call to this function return true if a full line has been
 +     buffered and thus an entire assuan line may be read without
 +     triggering any actual I/O.
 +
 +   ---------- Footnotes ----------
 +
 +   (1) to our knowledge only the Linux kernel has this feature
 +
 +
 +File: assuan.info,  Node: Socket wrappers,  Next: Library Copying,  Prev: Utilities,  Up: Top
 +
 +10 Socket wrapper functions
 +***************************
 +
 +It is sometimes useful to support Unix domain sockets on Windows.  To do
 +this in a portable way, Assuan provides a set of wrapper functions which
 +may be used on any system but will enhance Windows to support these
 +socket types.  The actual implementation is based on local TCP sockets
 +and fully transparent for the client.  Server code needs to utilize two
 +extra functions to check the permissions.
 +
 + -- Function: gpg_error_t assuan_sock_init (void)
 +     Initialize the socket wrappers.  Must be called once at startup if
 +     any of the socket wrapper functions are used.
 +
 + -- Function: gpg_error_t assuan_sock_deinit (void)
 +     Deinitialize the socket wrappers.
 +
 + -- Function: int assuan_sock_close (assuan_fd_t FD)
 +     Wrapper for close which does a closesocket on Windows if needed.
 +
 + -- Function: assuan_fd_t assuan_sock_new (int DOMAIN, int TYPE,
 +          int PROTO);
 +     Wrapper around socket.
 +
 + -- Function: int assuan_sock_connect (assuan_fd_t SOCKFD,
 +          struct sockaddr *ADDR, int ADDRLEN)
 +
 +     Wrapper around connect.  For Unix domain sockets under Windows this
 +     function also does a write immediately after the the connect to
 +     send the nonce as read from the socket's file.  Under Unix this
 +     function check whether the socket file is a redirection file and
 +     connects to the redirected socket instead; see
 +     'assuan_sock_set_sockaddr_un' for details on the redirection file
 +     format.
 +
 + -- Function: int assuan_sock_connect_byname (const char * HOST,
 +          unsigned short PORT, int RESERVED, const char *CREDENTIALS,
 +          unsigned int FLAGS)
 +
 +     Directly connect to PORT on HOST given as a name.  The current
 +     implementation requires that FLAGS has either 'ASSUAN_SOCK_SOCKS'
 +     or 'ASSUAN_SOCK_TOR' set.  On success a new TCP STREAM socket is
 +     returned; on error 'ASSUAN_INVALID_FD' and ERRNO set.  If
 +     CREDENTIALS is not 'NULL', it is a string used for password based
 +     SOCKS authentication.  Username and password are separated by a
 +     colon.  RESERVED should be 0.  To test whether the proxy is
 +     available HOST and PORT may be given as NULL/0: If the proxy is
 +     available the function returns a valid socket which is in the state
 +     after credentials sub-negotiation.  The caller now knows that the
 +     SOCKS proxy is available and has been authenticated; normally the
 +     caller closes the socket then.
 +
 + -- Function: int assuan_sock_bind ( assuan_fd_t SOCKFD,
 +          struct sockaddr *ADDR, int ADDRLEN)
 +
 +     Wrapper around bind.  Under Windows this creates a file and writes
 +     the port number and a random nonce to this file.
 +
 + -- Function: int assuan_sock_set_sockaddr_un ( const char *FNAME,
 +          struct sockaddr *ADDR, int *R_REDIRECTED)
 +
 +     This is a helper function to initialize the Unix socket domain
 +     address structure ADDR and store the file name FNAME there.  If
 +     R_REDIRECTED is not NULL the function checks whether FNAME already
 +     exists, is a regular file, and not a socket.  In that case FNAME is
 +     read to see whether this is a redirection to a socket file.  If
 +     that is the case 1 is stored at R_REDIRECTED.  If the file does not
 +     look like a redirection file 0 will be stored there and FNAME will
 +     be used in the regular way.
 +
 +     The format of a redirection file is
 +
 +          %Assuan%
 +          socket=NAME
 +
 +     With NAME being is the actual socket to use.  No white spaces are
 +     allowed, both lines must be terminated by a single linefeed, and
 +     extra lines are not allowed.  Environment variables are interpreted
 +     in NAME if given in '${VAR}' notation.  No escape characters are
 +     defined; if the string '${' shall be used in file name, an
 +     environment variable with that content may be used.  The length of
 +     the redirection file is limited to 511 bytes which is more than
 +     sufficient for any known implementation of Unix domain sockets.
 +
 + -- Function: int assuan_sock_get_nonce ( struct sockaddr *ADDR,
 +          int ADDRLEN, assuan_sock_nonce_t *NONCE)
 +
 +     This is used by the server after a bind to return the random nonce.
 +     To keep the code readable this may also be used on POSIX system.
 +
 + -- Function: int assuan_sock_check_nonce ( assuan_fd_t FD,
 +          assuan_sock_nonce_t *NONCE)
 +
 +     If the option 'ASSUAN_SOCKET_SERVER_ACCEPTED' has been used,
 +     Libassuan has no way to check the nonce of the server.  Thus an
 +     explicit check of the saved nonce using this function is required.
 +     If this function fails the server should immediately drop the
 +     connection.  This function may not be used if Libassuan does the
 +     accept call itself (i.e.  'ASSUAN_SOCKET_SERVER_ACCEPTED' has not
 +     been used) because in this case Libassuan calls this function
 +     internally.  See also 'assuan_set_sock_nonce'.
 +
 +     Actually this mechanism is only required on Windows but for
 +     cleanness of code it may be used on POSIX systems as well, where
 +     this function is a nop.
 +
 +   To control certain properties of the wrapper two additional functions
 +are provided:
 +
 + -- Function: int assuan_sock_set_flag ( assuan_fd_t FD,
 +          const char *NAME, int VALUE)
 +
 +     Set the flags NAME for socket FD to VALUE.  See below for a list of
 +     valid names.  Returns 0 on success; on failure sets ERRNO and
 +     returns -1.
 +
 + -- Function: int assuan_sock_get_flag ( assuan_fd_t FD,
 +          const char *NAME, int *R_VALUE)
 +
 +     Store the current value of the flag NAME for socket FD at R_VALUE.
 +     See below for a list of valid names.  Returns 0 on success; on
 +     failure sets ERRNO and returns -1.
 +
 +   The supported flags are:
 +
 +'cygwin'
 +     This flag has an effect only on Windows.  If the value is 1, the
 +     socket is set into Cygwin mode so that Cygwin clients can connect
 +     to such a socket.  This flag needs to be set before a bind and
 +     should not be changed during the lifetime of the socket.  There is
 +     no need to set this flag for connecting to a Cygwin style socket
 +     because no state is required at the client.  On non-Windows
 +     platforms setting this flag is ignored, reading the flag always
 +     returns a value of 0.
 +
 +'tor-mode'
 +'socks'
 +     If VALUE is 1 globally enable SOCKS5 mode for new connections using
 +     IPv6 or IPv4.  FD must be set to 'ASSUAN_INVALID_FD' A future
 +     extension may allow to disable SOCKS5 mode for a specified socket
 +     but globally disabling SOCKS5 mode is not possible.  Using the flag
 +     "tor-mode" expects the SOCKS5 proxy to listen on port 9050, the
 +     flag "socks" expects the proxy to listen on port 1080.
 +
 +     Connections to the loopback address are not routed though the SOCKS
 +     proxy.  UDP requests are not supported at all.  The proxy will be
 +     connected at address 127.0.0.1; an IPv6 connection to the proxy is
 +     not yet supported.
 +
 +
 +File: assuan.info,  Node: Library Copying,  Next: Copying,  Prev: Socket wrappers,  Up: Top
 +
 +GNU Lesser General Public License
 +*********************************
 +
 +                      Version 2.1, February 1999
 +
 +     Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 +     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 +
 +     Everyone is permitted to copy and distribute verbatim copies
 +     of this license document, but changing it is not allowed.
 +
 +     [This is the first released version of the Lesser GPL.  It also counts
 +     as the successor of the GNU Library Public License, version 2, hence the
 +     version number 2.1.]
 +
 +Preamble
 +========
 +
 +The licenses for most software are designed to take away your freedom to
 +share and change it.  By contrast, the GNU General Public Licenses are
 +intended to guarantee your freedom to share and change free software--to
 +make sure the software is free for all its users.
 +
 +   This license, the Lesser General Public License, applies to some
 +specially designated software--typically libraries--of the Free Software
 +Foundation and other authors who decide to use it.  You can use it too,
 +but we suggest you first think carefully about whether this license or
 +the ordinary General Public License is the better strategy to use in any
 +particular case, based on the explanations below.
 +
 +   When we speak of free software, we are referring to freedom of use,
 +not price.  Our General Public Licenses are designed to make sure that
 +you have the freedom to distribute copies of free software (and charge
 +for this service if you wish); that you receive source code or can get
 +it if you want it; that you can change the software and use pieces of it
 +in new free programs; and that you are informed that you can do these
 +things.
 +
 +   To protect your rights, we need to make restrictions that forbid
 +distributors to deny you these rights or to ask you to surrender these
 +rights.  These restrictions translate to certain responsibilities for
 +you if you distribute copies of the library or if you modify it.
 +
 +   For example, if you distribute copies of the library, whether gratis
 +or for a fee, you must give the recipients all the rights that we gave
 +you.  You must make sure that they, too, receive or can get the source
 +code.  If you link other code with the library, you must provide
 +complete object files to the recipients, so that they can relink them
 +with the library after making changes to the library and recompiling it.
 +And you must show them these terms so they know their rights.
 +
 +   We protect your rights with a two-step method: (1) we copyright the
 +library, and (2) we offer you this license, which gives you legal
 +permission to copy, distribute and/or modify the library.
 +
 +   To protect each distributor, we want to make it very clear that there
 +is no warranty for the free library.  Also, if the library is modified
 +by someone else and passed on, the recipients should know that what they
 +have is not the original version, so that the original author's
 +reputation will not be affected by problems that might be introduced by
 +others.
 +
 +   Finally, software patents pose a constant threat to the existence of
 +any free program.  We wish to make sure that a company cannot
 +effectively restrict the users of a free program by obtaining a
 +restrictive license from a patent holder.  Therefore, we insist that any
 +patent license obtained for a version of the library must be consistent
 +with the full freedom of use specified in this license.
 +
 +   Most GNU software, including some libraries, is covered by the
 +ordinary GNU General Public License.  This license, the GNU Lesser
 +General Public License, applies to certain designated libraries, and is
 +quite different from the ordinary General Public License.  We use this
 +license for certain libraries in order to permit linking those libraries
 +into non-free programs.
 +
 +   When a program is linked with a library, whether statically or using
 +a shared library, the combination of the two is legally speaking a
 +combined work, a derivative of the original library.  The ordinary
 +General Public License therefore permits such linking only if the entire
 +combination fits its criteria of freedom.  The Lesser General Public
 +License permits more lax criteria for linking other code with the
 +library.
 +
 +   We call this license the "Lesser" General Public License because it
 +does _Less_ to protect the user's freedom than the ordinary General
 +Public License.  It also provides other free software developers Less of
 +an advantage over competing non-free programs.  These disadvantages are
 +the reason we use the ordinary General Public License for many
 +libraries.  However, the Lesser license provides advantages in certain
 +special circumstances.
 +
 +   For example, on rare occasions, there may be a special need to
 +encourage the widest possible use of a certain library, so that it
 +becomes a de-facto standard.  To achieve this, non-free programs must be
 +allowed to use the library.  A more frequent case is that a free library
 +does the same job as widely used non-free libraries.  In this case,
 +there is little to gain by limiting the free library to free software
 +only, so we use the Lesser General Public License.
 +
 +   In other cases, permission to use a particular library in non-free
 +programs enables a greater number of people to use a large body of free
 +software.  For example, permission to use the GNU C Library in non-free
 +programs enables many more people to use the whole GNU operating system,
 +as well as its variant, the GNU/Linux operating system.
 +
 +   Although the Lesser General Public License is Less protective of the
 +users' freedom, it does ensure that the user of a program that is linked
 +with the Library has the freedom and the wherewithal to run that program
 +using a modified version of the Library.
 +
 +   The precise terms and conditions for copying, distribution and
 +modification follow.  Pay close attention to the difference between a
 +"work based on the library" and a "work that uses the library".  The
 +former contains code derived from the library, whereas the latter must
 +be combined with the library in order to run.
 +
 +                   GNU LESSER GENERAL PUBLIC LICENSE
 +    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 +
 +  0. This License Agreement applies to any software library or other
 +     program which contains a notice placed by the copyright holder or
 +     other authorized party saying it may be distributed under the terms
 +     of this Lesser General Public License (also called "this License").
 +     Each licensee is addressed as "you".
 +
 +     A "library" means a collection of software functions and/or data
 +     prepared so as to be conveniently linked with application programs
 +     (which use some of those functions and data) to form executables.
 +
 +     The "Library", below, refers to any such software library or work
 +     which has been distributed under these terms.  A "work based on the
 +     Library" means either the Library or any derivative work under
 +     copyright law: that is to say, a work containing the Library or a
 +     portion of it, either verbatim or with modifications and/or
 +     translated straightforwardly into another language.  (Hereinafter,
 +     translation is included without limitation in the term
 +     "modification".)
 +
 +     "Source code" for a work means the preferred form of the work for
 +     making modifications to it.  For a library, complete source code
 +     means all the source code for all modules it contains, plus any
 +     associated interface definition files, plus the scripts used to
 +     control compilation and installation of the library.
 +
 +     Activities other than copying, distribution and modification are
 +     not covered by this License; they are outside its scope.  The act
 +     of running a program using the Library is not restricted, and
 +     output from such a program is covered only if its contents
 +     constitute a work based on the Library (independent of the use of
 +     the Library in a tool for writing it).  Whether that is true
 +     depends on what the Library does and what the program that uses the
 +     Library does.
 +
 +  1. You may copy and distribute verbatim copies of the Library's
 +     complete source code as you receive it, in any medium, provided
 +     that you conspicuously and appropriately publish on each copy an
 +     appropriate copyright notice and disclaimer of warranty; keep
 +     intact all the notices that refer to this License and to the
 +     absence of any warranty; and distribute a copy of this License
 +     along with the Library.
 +
 +     You may charge a fee for the physical act of transferring a copy,
 +     and you may at your option offer warranty protection in exchange
 +     for a fee.
 +
 +  2. You may modify your copy or copies of the Library or any portion of
 +     it, thus forming a work based on the Library, and copy and
 +     distribute such modifications or work under the terms of Section 1
 +     above, provided that you also meet all of these conditions:
 +
 +       a. The modified work must itself be a software library.
 +
 +       b. You must cause the files modified to carry prominent notices
 +          stating that you changed the files and the date of any change.
 +
 +       c. You must cause the whole of the work to be licensed at no
 +          charge to all third parties under the terms of this License.
 +
 +       d. If a facility in the modified Library refers to a function or
 +          a table of data to be supplied by an application program that
 +          uses the facility, other than as an argument passed when the
 +          facility is invoked, then you must make a good faith effort to
 +          ensure that, in the event an application does not supply such
 +          function or table, the facility still operates, and performs
 +          whatever part of its purpose remains meaningful.
 +
 +          (For example, a function in a library to compute square roots
 +          has a purpose that is entirely well-defined independent of the
 +          application.  Therefore, Subsection 2d requires that any
 +          application-supplied function or table used by this function
 +          must be optional: if the application does not supply it, the
 +          square root function must still compute square roots.)
 +
 +     These requirements apply to the modified work as a whole.  If
 +     identifiable sections of that work are not derived from the
 +     Library, and can be reasonably considered independent and separate
 +     works in themselves, then this License, and its terms, do not apply
 +     to those sections when you distribute them as separate works.  But
 +     when you distribute the same sections as part of a whole which is a
 +     work based on the Library, the distribution of the whole must be on
 +     the terms of this License, whose permissions for other licensees
 +     extend to the entire whole, and thus to each and every part
 +     regardless of who wrote it.
 +
 +     Thus, it is not the intent of this section to claim rights or
 +     contest your rights to work written entirely by you; rather, the
 +     intent is to exercise the right to control the distribution of
 +     derivative or collective works based on the Library.
 +
 +     In addition, mere aggregation of another work not based on the
 +     Library with the Library (or with a work based on the Library) on a
 +     volume of a storage or distribution medium does not bring the other
 +     work under the scope of this License.
 +
 +  3. You may opt to apply the terms of the ordinary GNU General Public
 +     License instead of this License to a given copy of the Library.  To
 +     do this, you must alter all the notices that refer to this License,
 +     so that they refer to the ordinary GNU General Public License,
 +     version 2, instead of to this License.  (If a newer version than
 +     version 2 of the ordinary GNU General Public License has appeared,
 +     then you can specify that version instead if you wish.)  Do not
 +     make any other change in these notices.
 +
 +     Once this change is made in a given copy, it is irreversible for
 +     that copy, so the ordinary GNU General Public License applies to
 +     all subsequent copies and derivative works made from that copy.
 +
 +     This option is useful when you wish to copy part of the code of the
 +     Library into a program that is not a library.
 +
 +  4. You may copy and distribute the Library (or a portion or derivative
 +     of it, under Section 2) in object code or executable form under the
 +     terms of Sections 1 and 2 above provided that you accompany it with
 +     the complete corresponding machine-readable source code, which must
 +     be distributed under the terms of Sections 1 and 2 above on a
 +     medium customarily used for software interchange.
 +
 +     If distribution of object code is made by offering access to copy
 +     from a designated place, then offering equivalent access to copy
 +     the source code from the same place satisfies the requirement to
 +     distribute the source code, even though third parties are not
 +     compelled to copy the source along with the object code.
 +
 +  5. A program that contains no derivative of any portion of the
 +     Library, but is designed to work with the Library by being compiled
 +     or linked with it, is called a "work that uses the Library".  Such
 +     a work, in isolation, is not a derivative work of the Library, and
 +     therefore falls outside the scope of this License.
 +
 +     However, linking a "work that uses the Library" with the Library
 +     creates an executable that is a derivative of the Library (because
 +     it contains portions of the Library), rather than a "work that uses
 +     the library".  The executable is therefore covered by this License.
 +     Section 6 states terms for distribution of such executables.
 +
 +     When a "work that uses the Library" uses material from a header
 +     file that is part of the Library, the object code for the work may
 +     be a derivative work of the Library even though the source code is
 +     not.  Whether this is true is especially significant if the work
 +     can be linked without the Library, or if the work is itself a
 +     library.  The threshold for this to be true is not precisely
 +     defined by law.
 +
 +     If such an object file uses only numerical parameters, data
 +     structure layouts and accessors, and small macros and small inline
 +     functions (ten lines or less in length), then the use of the object
 +     file is unrestricted, regardless of whether it is legally a
 +     derivative work.  (Executables containing this object code plus
 +     portions of the Library will still fall under Section 6.)
 +
 +     Otherwise, if the work is a derivative of the Library, you may
 +     distribute the object code for the work under the terms of Section
 +     6.  Any executables containing that work also fall under Section 6,
 +     whether or not they are linked directly with the Library itself.
 +
 +  6. As an exception to the Sections above, you may also combine or link
 +     a "work that uses the Library" with the Library to produce a work
 +     containing portions of the Library, and distribute that work under
 +     terms of your choice, provided that the terms permit modification
 +     of the work for the customer's own use and reverse engineering for
 +     debugging such modifications.
 +
 +     You must give prominent notice with each copy of the work that the
 +     Library is used in it and that the Library and its use are covered
 +     by this License.  You must supply a copy of this License.  If the
 +     work during execution displays copyright notices, you must include
 +     the copyright notice for the Library among them, as well as a
 +     reference directing the user to the copy of this License.  Also,
 +     you must do one of these things:
 +
 +       a. Accompany the work with the complete corresponding
 +          machine-readable source code for the Library including
 +          whatever changes were used in the work (which must be
 +          distributed under Sections 1 and 2 above); and, if the work is
 +          an executable linked with the Library, with the complete
 +          machine-readable "work that uses the Library", as object code
 +          and/or source code, so that the user can modify the Library
 +          and then relink to produce a modified executable containing
 +          the modified Library.  (It is understood that the user who
 +          changes the contents of definitions files in the Library will
 +          not necessarily be able to recompile the application to use
 +          the modified definitions.)
 +
 +       b. Use a suitable shared library mechanism for linking with the
 +          Library.  A suitable mechanism is one that (1) uses at run
 +          time a copy of the library already present on the user's
 +          computer system, rather than copying library functions into
 +          the executable, and (2) will operate properly with a modified
 +          version of the library, if the user installs one, as long as
 +          the modified version is interface-compatible with the version
 +          that the work was made with.
 +
 +       c. Accompany the work with a written offer, valid for at least
 +          three years, to give the same user the materials specified in
 +          Subsection 6a, above, for a charge no more than the cost of
 +          performing this distribution.
 +
 +       d. If distribution of the work is made by offering access to copy
 +          from a designated place, offer equivalent access to copy the
 +          above specified materials from the same place.
 +
 +       e. Verify that the user has already received a copy of these
 +          materials or that you have already sent this user a copy.
 +
 +     For an executable, the required form of the "work that uses the
 +     Library" must include any data and utility programs needed for
 +     reproducing the executable from it.  However, as a special
 +     exception, the materials to be distributed need not include
 +     anything that is normally distributed (in either source or binary
 +     form) with the major components (compiler, kernel, and so on) of
 +     the operating system on which the executable runs, unless that
 +     component itself accompanies the executable.
 +
 +     It may happen that this requirement contradicts the license
 +     restrictions of other proprietary libraries that do not normally
 +     accompany the operating system.  Such a contradiction means you
 +     cannot use both them and the Library together in an executable that
 +     you distribute.
 +
 +  7. You may place library facilities that are a work based on the
 +     Library side-by-side in a single library together with other
 +     library facilities not covered by this License, and distribute such
 +     a combined library, provided that the separate distribution of the
 +     work based on the Library and of the other library facilities is
 +     otherwise permitted, and provided that you do these two things:
 +
 +       a. Accompany the combined library with a copy of the same work
 +          based on the Library, uncombined with any other library
 +          facilities.  This must be distributed under the terms of the
 +          Sections above.
 +
 +       b. Give prominent notice with the combined library of the fact
 +          that part of it is a work based on the Library, and explaining
 +          where to find the accompanying uncombined form of the same
 +          work.
 +
 +  8. You may not copy, modify, sublicense, link with, or distribute the
 +     Library except as expressly provided under this License.  Any
 +     attempt otherwise to copy, modify, sublicense, link with, or
 +     distribute the Library is void, and will automatically terminate
 +     your rights under this License.  However, parties who have received
 +     copies, or rights, from you under this License will not have their
 +     licenses terminated so long as such parties remain in full
 +     compliance.
 +
 +  9. You are not required to accept this License, since you have not
 +     signed it.  However, nothing else grants you permission to modify
 +     or distribute the Library or its derivative works.  These actions
 +     are prohibited by law if you do not accept this License.
 +     Therefore, by modifying or distributing the Library (or any work
 +     based on the Library), you indicate your acceptance of this License
 +     to do so, and all its terms and conditions for copying,
 +     distributing or modifying the Library or works based on it.
 +
 +  10. Each time you redistribute the Library (or any work based on the
 +     Library), the recipient automatically receives a license from the
 +     original licensor to copy, distribute, link with or modify the
 +     Library subject to these terms and conditions.  You may not impose
 +     any further restrictions on the recipients' exercise of the rights
 +     granted herein.  You are not responsible for enforcing compliance
 +     by third parties with this License.
 +
 +  11. If, as a consequence of a court judgment or allegation of patent
 +     infringement or for any other reason (not limited to patent
 +     issues), conditions are imposed on you (whether by court order,
 +     agreement or otherwise) that contradict the conditions of this
 +     License, they do not excuse you from the conditions of this
 +     License.  If you cannot distribute so as to satisfy simultaneously
 +     your obligations under this License and any other pertinent
 +     obligations, then as a consequence you may not distribute the
 +     Library at all.  For example, if a patent license would not permit
 +     royalty-free redistribution of the Library by all those who receive
 +     copies directly or indirectly through you, then the only way you
 +     could satisfy both it and this License would be to refrain entirely
 +     from distribution of the Library.
 +
 +     If any portion of this section is held invalid or unenforceable
 +     under any particular circumstance, the balance of the section is
 +     intended to apply, and the section as a whole is intended to apply
 +     in other circumstances.
 +
 +     It is not the purpose of this section to induce you to infringe any
 +     patents or other property right claims or to contest validity of
 +     any such claims; this section has the sole purpose of protecting
 +     the integrity of the free software distribution system which is
 +     implemented by public license practices.  Many people have made
 +     generous contributions to the wide range of software distributed
 +     through that system in reliance on consistent application of that
 +     system; it is up to the author/donor to decide if he or she is
 +     willing to distribute software through any other system and a
 +     licensee cannot impose that choice.
 +
 +     This section is intended to make thoroughly clear what is believed
 +     to be a consequence of the rest of this License.
 +
 +  12. If the distribution and/or use of the Library is restricted in
 +     certain countries either by patents or by copyrighted interfaces,
 +     the original copyright holder who places the Library under this
 +     License may add an explicit geographical distribution limitation
 +     excluding those countries, so that distribution is permitted only
 +     in or among countries not thus excluded.  In such case, this
 +     License incorporates the limitation as if written in the body of
 +     this License.
 +
 +  13. The Free Software Foundation may publish revised and/or new
 +     versions of the Lesser General Public License from time to time.
 +     Such new versions will be similar in spirit to the present version,
 +     but may differ in detail to address new problems or concerns.
 +
 +     Each version is given a distinguishing version number.  If the
 +     Library specifies a version number of this License which applies to
 +     it and "any later version", you have the option of following the
 +     terms and conditions either of that version or of any later version
 +     published by the Free Software Foundation.  If the Library does not
 +     specify a license version number, you may choose any version ever
 +     published by the Free Software Foundation.
 +
 +  14. If you wish to incorporate parts of the Library into other free
 +     programs whose distribution conditions are incompatible with these,
 +     write to the author to ask for permission.  For software which is
 +     copyrighted by the Free Software Foundation, write to the Free
 +     Software Foundation; we sometimes make exceptions for this.  Our
 +     decision will be guided by the two goals of preserving the free
 +     status of all derivatives of our free software and of promoting the
 +     sharing and reuse of software generally.
 +
 +                              NO WARRANTY
 +
 +  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 +     WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE
 +     LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
 +     AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY
 +     OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
 +     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 +     FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
 +     PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE
 +     DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
 +     OR CORRECTION.
 +
 +  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
 +     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
 +     MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
 +     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
 +     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
 +     INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
 +     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
 +     OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY
 +     OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
 +     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 +
 +                      END OF TERMS AND CONDITIONS
 +
 +How to Apply These Terms to Your New Libraries
 +==============================================
 +
 +If you develop a new library, and you want it to be of the greatest
 +possible use to the public, we recommend making it free software that
 +everyone can redistribute and change.  You can do so by permitting
 +redistribution under these terms (or, alternatively, under the terms of
 +the ordinary General Public License).
 +
 +   To apply these terms, attach the following notices to the library.
 +It is safest to attach them to the start of each source file to most
 +effectively convey the exclusion of warranty; and each file should have
 +at least the "copyright" line and a pointer to where the full notice is
 +found.
 +
 +     ONE LINE TO GIVE THE LIBRARY'S NAME AND AN IDEA OF WHAT IT DOES.
 +     Copyright (C) YEAR  NAME OF AUTHOR
 +
 +     This library is free software; you can redistribute it and/or modify it
 +     under the terms of the GNU Lesser General Public License as published by
 +     the Free Software Foundation; either version 2.1 of the License, or (at
 +     your option) any later version.
 +
 +     This library is distributed in the hope that it will be useful, but
 +     WITHOUT ANY WARRANTY; without even the implied warranty of
 +     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 +     Lesser General Public License for more details.
 +
 +     You should have received a copy of the GNU Lesser General Public
 +     License along with this library; if not, write to the Free Software
 +     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
 +     USA.
 +
 +   Also add information on how to contact you by electronic and paper
 +mail.
 +
 +   You should also get your employer (if you work as a programmer) or
 +your school, if any, to sign a "copyright disclaimer" for the library,
 +if necessary.  Here is a sample; alter the names:
 +
 +     Yoyodyne, Inc., hereby disclaims all copyright interest in the library
 +     `Frob' (a library for tweaking knobs) written by James Random Hacker.
 +
 +     SIGNATURE OF TY COON, 1 April 1990
 +     Ty Coon, President of Vice
 +
 +   That's all there is to it!
 +
 +
 +File: assuan.info,  Node: Copying,  Next: Index,  Prev: Library Copying,  Up: Top
 +
 +GNU General Public License
 +**************************
 +
 +                        Version 3, 29 June 2007
 +
 +     Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 +
 +     Everyone is permitted to copy and distribute verbatim copies of this
 +     license document, but changing it is not allowed.
 +
 +Preamble
 +========
 +
 +The GNU General Public License is a free, copyleft license for software
 +and other kinds of works.
 +
 +   The licenses for most software and other practical works are designed
 +to take away your freedom to share and change the works.  By contrast,
 +the GNU General Public License is intended to guarantee your freedom to
 +share and change all versions of a program-to make sure it remains free
 +software for all its users.  We, the Free Software Foundation, use the
 +GNU General Public License for most of our software; it applies also to
 +any other work released this way by its authors.  You can apply it to
 +your programs, too.
 +
 +   When we speak of free software, we are referring to freedom, not
 +price.  Our General Public Licenses are designed to make sure that you
 +have the freedom to distribute copies of free software (and charge for
 +them if you wish), that you receive source code or can get it if you
 +want it, that you can change the software or use pieces of it in new
 +free programs, and that you know you can do these things.
 +
 +   To protect your rights, we need to prevent others from denying you
 +these rights or asking you to surrender the rights.  Therefore, you have
 +certain responsibilities if you distribute copies of the software, or if
 +you modify it: responsibilities to respect the freedom of others.
 +
 +   For example, if you distribute copies of such a program, whether
 +gratis or for a fee, you must pass on to the recipients the same
 +freedoms that you received.  You must make sure that they, too, receive
 +or can get the source code.  And you must show them these terms so they
 +know their rights.
 +
 +   Developers that use the GNU GPL protect your rights with two steps:
 +(1) assert copyright on the software, and (2) offer you this License
 +giving you legal permission to copy, distribute and/or modify it.
 +
 +   For the developers' and authors' protection, the GPL clearly explains
 +that there is no warranty for this free software.  For both users' and
 +authors' sake, the GPL requires that modified versions be marked as
 +changed, so that their problems will not be attributed erroneously to
 +authors of previous versions.
 +
 +   Some devices are designed to deny users access to install or run
 +modified versions of the software inside them, although the manufacturer
 +can do so.  This is fundamentally incompatible with the aim of
 +protecting users' freedom to change the software.  The systematic
 +pattern of such abuse occurs in the area of products for individuals to
 +use, which is precisely where it is most unacceptable.  Therefore, we
 +have designed this version of the GPL to prohibit the practice for those
 +products.  If such problems arise substantially in other domains, we
 +stand ready to extend this provision to those domains in future versions
 +of the GPL, as needed to protect the freedom of users.
 +
 +   Finally, every program is threatened constantly by software patents.
 +States should not allow patents to restrict development and use of
 +software on general-purpose computers, but in those that do, we wish to
 +avoid the special danger that patents applied to a free program could
 +make it effectively proprietary.  To prevent this, the GPL assures that
 +patents cannot be used to render the program non-free.
 +
 +   The precise terms and conditions for copying, distribution and
 +modification follow.
 +
 +                         TERMS AND CONDITIONS
 +
 +  0. Definitions.
 +
 +     "This License" refers to version 3 of the GNU General Public
 +     License.
 +
 +     "Copyright" also means copyright-like laws that apply to other
 +     kinds of works, such as semiconductor masks.
 +
 +     "The Program" refers to any copyrightable work licensed under this
 +     License.  Each licensee is addressed as "you".  "Licensees" and
 +     "recipients" may be individuals or organizations.
 +
 +     To "modify" a work means to copy from or adapt all or part of the
 +     work in a fashion requiring copyright permission, other than the
 +     making of an exact copy.  The resulting work is called a "modified
 +     version" of the earlier work or a work "based on" the earlier work.
 +
 +     A "covered work" means either the unmodified Program or a work
 +     based on the Program.
 +
 +     To "propagate" a work means to do anything with it that, without
 +     permission, would make you directly or secondarily liable for
 +     infringement under applicable copyright law, except executing it on
 +     a computer or modifying a private copy.  Propagation includes
 +     copying, distribution (with or without modification), making
 +     available to the public, and in some countries other activities as
 +     well.
 +
 +     To "convey" a work means any kind of propagation that enables other
 +     parties to make or receive copies.  Mere interaction with a user
 +     through a computer network, with no transfer of a copy, is not
 +     conveying.
 +
 +     An interactive user interface displays "Appropriate Legal Notices"
 +     to the extent that it includes a convenient and prominently visible
 +     feature that (1) displays an appropriate copyright notice, and (2)
 +     tells the user that there is no warranty for the work (except to
 +     the extent that warranties are provided), that licensees may convey
 +     the work under this License, and how to view a copy of this
 +     License.  If the interface presents a list of user commands or
 +     options, such as a menu, a prominent item in the list meets this
 +     criterion.
 +
 +  1. Source Code.
 +
 +     The "source code" for a work means the preferred form of the work
 +     for making modifications to it.  "Object code" means any non-source
 +     form of a work.
 +
 +     A "Standard Interface" means an interface that either is an
 +     official standard defined by a recognized standards body, or, in
 +     the case of interfaces specified for a particular programming
 +     language, one that is widely used among developers working in that
 +     language.
 +
 +     The "System Libraries" of an executable work include anything,
 +     other than the work as a whole, that (a) is included in the normal
 +     form of packaging a Major Component, but which is not part of that
 +     Major Component, and (b) serves only to enable use of the work with
 +     that Major Component, or to implement a Standard Interface for
 +     which an implementation is available to the public in source code
 +     form.  A "Major Component", in this context, means a major
 +     essential component (kernel, window system, and so on) of the
 +     specific operating system (if any) on which the executable work
 +     runs, or a compiler used to produce the work, or an object code
 +     interpreter used to run it.
 +
 +     The "Corresponding Source" for a work in object code form means all
 +     the source code needed to generate, install, and (for an executable
 +     work) run the object code and to modify the work, including scripts
 +     to control those activities.  However, it does not include the
 +     work's System Libraries, or general-purpose tools or generally
 +     available free programs which are used unmodified in performing
 +     those activities but which are not part of the work.  For example,
 +     Corresponding Source includes interface definition files associated
 +     with source files for the work, and the source code for shared
 +     libraries and dynamically linked subprograms that the work is
 +     specifically designed to require, such as by intimate data
 +     communication or control flow between those subprograms and other
 +     parts of the work.
 +
 +     The Corresponding Source need not include anything that users can
 +     regenerate automatically from other parts of the Corresponding
 +     Source.
 +
 +     The Corresponding Source for a work in source code form is that
 +     same work.
 +
 +  2. Basic Permissions.
 +
 +     All rights granted under this License are granted for the term of
 +     copyright on the Program, and are irrevocable provided the stated
 +     conditions are met.  This License explicitly affirms your unlimited
 +     permission to run the unmodified Program.  The output from running
 +     a covered work is covered by this License only if the output, given
 +     its content, constitutes a covered work.  This License acknowledges
 +     your rights of fair use or other equivalent, as provided by
 +     copyright law.
 +
 +     You may make, run and propagate covered works that you do not
 +     convey, without conditions so long as your license otherwise
 +     remains in force.  You may convey covered works to others for the
 +     sole purpose of having them make modifications exclusively for you,
 +     or provide you with facilities for running those works, provided
 +     that you comply with the terms of this License in conveying all
 +     material for which you do not control copyright.  Those thus making
 +     or running the covered works for you must do so exclusively on your
 +     behalf, under your direction and control, on terms that prohibit
 +     them from making any copies of your copyrighted material outside
 +     their relationship with you.
 +
 +     Conveying under any other circumstances is permitted solely under
 +     the conditions stated below.  Sublicensing is not allowed; section
 +     10 makes it unnecessary.
 +
 +  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
 +
 +     No covered work shall be deemed part of an effective technological
 +     measure under any applicable law fulfilling obligations under
 +     article 11 of the WIPO copyright treaty adopted on 20 December
 +     1996, or similar laws prohibiting or restricting circumvention of
 +     such measures.
 +
 +     When you convey a covered work, you waive any legal power to forbid
 +     circumvention of technological measures to the extent such
 +     circumvention is effected by exercising rights under this License
 +     with respect to the covered work, and you disclaim any intention to
 +     limit operation or modification of the work as a means of
 +     enforcing, against the work's users, your or third parties' legal
 +     rights to forbid circumvention of technological measures.
 +
 +  4. Conveying Verbatim Copies.
 +
 +     You may convey verbatim copies of the Program's source code as you
 +     receive it, in any medium, provided that you conspicuously and
 +     appropriately publish on each copy an appropriate copyright notice;
 +     keep intact all notices stating that this License and any
 +     non-permissive terms added in accord with section 7 apply to the
 +     code; keep intact all notices of the absence of any warranty; and
 +     give all recipients a copy of this License along with the Program.
 +
 +     You may charge any price or no price for each copy that you convey,
 +     and you may offer support or warranty protection for a fee.
 +
 +  5. Conveying Modified Source Versions.
 +
 +     You may convey a work based on the Program, or the modifications to
 +     produce it from the Program, in the form of source code under the
 +     terms of section 4, provided that you also meet all of these
 +     conditions:
 +
 +       a. The work must carry prominent notices stating that you
 +          modified it, and giving a relevant date.
 +
 +       b. The work must carry prominent notices stating that it is
 +          released under this License and any conditions added under
 +          section 7.  This requirement modifies the requirement in
 +          section 4 to "keep intact all notices".
 +
 +       c. You must license the entire work, as a whole, under this
 +          License to anyone who comes into possession of a copy.  This
 +          License will therefore apply, along with any applicable
 +          section 7 additional terms, to the whole of the work, and all
 +          its parts, regardless of how they are packaged.  This License
 +          gives no permission to license the work in any other way, but
 +          it does not invalidate such permission if you have separately
 +          received it.
 +
 +       d. If the work has interactive user interfaces, each must display
 +          Appropriate Legal Notices; however, if the Program has
 +          interactive interfaces that do not display Appropriate Legal
 +          Notices, your work need not make them do so.
 +
 +     A compilation of a covered work with other separate and independent
 +     works, which are not by their nature extensions of the covered
 +     work, and which are not combined with it such as to form a larger
 +     program, in or on a volume of a storage or distribution medium, is
 +     called an "aggregate" if the compilation and its resulting
 +     copyright are not used to limit the access or legal rights of the
 +     compilation's users beyond what the individual works permit.
 +     Inclusion of a covered work in an aggregate does not cause this
 +     License to apply to the other parts of the aggregate.
 +
 +  6. Conveying Non-Source Forms.
 +
 +     You may convey a covered work in object code form under the terms
 +     of sections 4 and 5, provided that you also convey the
 +     machine-readable Corresponding Source under the terms of this
 +     License, in one of these ways:
 +
 +       a. Convey the object code in, or embodied in, a physical product
 +          (including a physical distribution medium), accompanied by the
 +          Corresponding Source fixed on a durable physical medium
 +          customarily used for software interchange.
 +
 +       b. Convey the object code in, or embodied in, a physical product
 +          (including a physical distribution medium), accompanied by a
 +          written offer, valid for at least three years and valid for as
 +          long as you offer spare parts or customer support for that
 +          product model, to give anyone who possesses the object code
 +          either (1) a copy of the Corresponding Source for all the
 +          software in the product that is covered by this License, on a
 +          durable physical medium customarily used for software
 +          interchange, for a price no more than your reasonable cost of
 +          physically performing this conveying of source, or (2) access
 +          to copy the Corresponding Source from a network server at no
 +          charge.
 +
 +       c. Convey individual copies of the object code with a copy of the
 +          written offer to provide the Corresponding Source.  This
 +          alternative is allowed only occasionally and noncommercially,
 +          and only if you received the object code with such an offer,
 +          in accord with subsection 6b.
 +
 +       d. Convey the object code by offering access from a designated
 +          place (gratis or for a charge), and offer equivalent access to
 +          the Corresponding Source in the same way through the same
 +          place at no further charge.  You need not require recipients
 +          to copy the Corresponding Source along with the object code.
 +          If the place to copy the object code is a network server, the
 +          Corresponding Source may be on a different server (operated by
 +          you or a third party) that supports equivalent copying
 +          facilities, provided you maintain clear directions next to the
 +          object code saying where to find the Corresponding Source.
 +          Regardless of what server hosts the Corresponding Source, you
 +          remain obligated to ensure that it is available for as long as
 +          needed to satisfy these requirements.
 +
 +       e. Convey the object code using peer-to-peer transmission,
 +          provided you inform other peers where the object code and
 +          Corresponding Source of the work are being offered to the
 +          general public at no charge under subsection 6d.
 +
 +     A separable portion of the object code, whose source code is
 +     excluded from the Corresponding Source as a System Library, need
 +     not be included in conveying the object code work.
 +
 +     A "User Product" is either (1) a "consumer product", which means
 +     any tangible personal property which is normally used for personal,
 +     family, or household purposes, or (2) anything designed or sold for
 +     incorporation into a dwelling.  In determining whether a product is
 +     a consumer product, doubtful cases shall be resolved in favor of
 +     coverage.  For a particular product received by a particular user,
 +     "normally used" refers to a typical or common use of that class of
 +     product, regardless of the status of the particular user or of the
 +     way in which the particular user actually uses, or expects or is
 +     expected to use, the product.  A product is a consumer product
 +     regardless of whether the product has substantial commercial,
 +     industrial or non-consumer uses, unless such uses represent the
 +     only significant mode of use of the product.
 +
 +     "Installation Information" for a User Product means any methods,
 +     procedures, authorization keys, or other information required to
 +     install and execute modified versions of a covered work in that
 +     User Product from a modified version of its Corresponding Source.
 +     The information must suffice to ensure that the continued
 +     functioning of the modified object code is in no case prevented or
 +     interfered with solely because modification has been made.
 +
 +     If you convey an object code work under this section in, or with,
 +     or specifically for use in, a User Product, and the conveying
 +     occurs as part of a transaction in which the right of possession
 +     and use of the User Product is transferred to the recipient in
 +     perpetuity or for a fixed term (regardless of how the transaction
 +     is characterized), the Corresponding Source conveyed under this
 +     section must be accompanied by the Installation Information.  But
 +     this requirement does not apply if neither you nor any third party
 +     retains the ability to install modified object code on the User
 +     Product (for example, the work has been installed in ROM).
 +
 +     The requirement to provide Installation Information does not
 +     include a requirement to continue to provide support service,
 +     warranty, or updates for a work that has been modified or installed
 +     by the recipient, or for the User Product in which it has been
 +     modified or installed.  Access to a network may be denied when the
 +     modification itself materially and adversely affects the operation
 +     of the network or violates the rules and protocols for
 +     communication across the network.
 +
 +     Corresponding Source conveyed, and Installation Information
 +     provided, in accord with this section must be in a format that is
 +     publicly documented (and with an implementation available to the
 +     public in source code form), and must require no special password
 +     or key for unpacking, reading or copying.
 +
 +  7. Additional Terms.
 +
 +     "Additional permissions" are terms that supplement the terms of
 +     this License by making exceptions from one or more of its
 +     conditions.  Additional permissions that are applicable to the
 +     entire Program shall be treated as though they were included in
 +     this License, to the extent that they are valid under applicable
 +     law.  If additional permissions apply only to part of the Program,
 +     that part may be used separately under those permissions, but the
 +     entire Program remains governed by this License without regard to
 +     the additional permissions.
 +
 +     When you convey a copy of a covered work, you may at your option
 +     remove any additional permissions from that copy, or from any part
 +     of it.  (Additional permissions may be written to require their own
 +     removal in certain cases when you modify the work.)  You may place
 +     additional permissions on material, added by you to a covered work,
 +     for which you have or can give appropriate copyright permission.
 +
 +     Notwithstanding any other provision of this License, for material
 +     you add to a covered work, you may (if authorized by the copyright
 +     holders of that material) supplement the terms of this License with
 +     terms:
 +
 +       a. Disclaiming warranty or limiting liability differently from
 +          the terms of sections 15 and 16 of this License; or
 +
 +       b. Requiring preservation of specified reasonable legal notices
 +          or author attributions in that material or in the Appropriate
 +          Legal Notices displayed by works containing it; or
 +
 +       c. Prohibiting misrepresentation of the origin of that material,
 +          or requiring that modified versions of such material be marked
 +          in reasonable ways as different from the original version; or
 +
 +       d. Limiting the use for publicity purposes of names of licensors
 +          or authors of the material; or
 +
 +       e. Declining to grant rights under trademark law for use of some
 +          trade names, trademarks, or service marks; or
 +
 +       f. Requiring indemnification of licensors and authors of that
 +          material by anyone who conveys the material (or modified
 +          versions of it) with contractual assumptions of liability to
 +          the recipient, for any liability that these contractual
 +          assumptions directly impose on those licensors and authors.
 +
 +     All other non-permissive additional terms are considered "further
 +     restrictions" within the meaning of section 10.  If the Program as
 +     you received it, or any part of it, contains a notice stating that
 +     it is governed by this License along with a term that is a further
 +     restriction, you may remove that term.  If a license document
 +     contains a further restriction but permits relicensing or conveying
 +     under this License, you may add to a covered work material governed
 +     by the terms of that license document, provided that the further
 +     restriction does not survive such relicensing or conveying.
 +
 +     If you add terms to a covered work in accord with this section, you
 +     must place, in the relevant source files, a statement of the
 +     additional terms that apply to those files, or a notice indicating
 +     where to find the applicable terms.
 +
 +     Additional terms, permissive or non-permissive, may be stated in
 +     the form of a separately written license, or stated as exceptions;
 +     the above requirements apply either way.
 +
 +  8. Termination.
 +
 +     You may not propagate or modify a covered work except as expressly
 +     provided under this License.  Any attempt otherwise to propagate or
 +     modify it is void, and will automatically terminate your rights
 +     under this License (including any patent licenses granted under the
 +     third paragraph of section 11).
 +
 +     However, if you cease all violation of this License, then your
 +     license from a particular copyright holder is reinstated (a)
 +     provisionally, unless and until the copyright holder explicitly and
 +     finally terminates your license, and (b) permanently, if the
 +     copyright holder fails to notify you of the violation by some
 +     reasonable means prior to 60 days after the cessation.
 +
 +     Moreover, your license from a particular copyright holder is
 +     reinstated permanently if the copyright holder notifies you of the
 +     violation by some reasonable means, this is the first time you have
 +     received notice of violation of this License (for any work) from
 +     that copyright holder, and you cure the violation prior to 30 days
 +     after your receipt of the notice.
 +
 +     Termination of your rights under this section does not terminate
 +     the licenses of parties who have received copies or rights from you
 +     under this License.  If your rights have been terminated and not
 +     permanently reinstated, you do not qualify to receive new licenses
 +     for the same material under section 10.
 +
 +  9. Acceptance Not Required for Having Copies.
 +
 +     You are not required to accept this License in order to receive or
 +     run a copy of the Program.  Ancillary propagation of a covered work
 +     occurring solely as a consequence of using peer-to-peer
 +     transmission to receive a copy likewise does not require
 +     acceptance.  However, nothing other than this License grants you
 +     permission to propagate or modify any covered work.  These actions
 +     infringe copyright if you do not accept this License.  Therefore,
 +     by modifying or propagating a covered work, you indicate your
 +     acceptance of this License to do so.
 +
 +  10. Automatic Licensing of Downstream Recipients.
 +
 +     Each time you convey a covered work, the recipient automatically
 +     receives a license from the original licensors, to run, modify and
 +     propagate that work, subject to this License.  You are not
 +     responsible for enforcing compliance by third parties with this
 +     License.
 +
 +     An "entity transaction" is a transaction transferring control of an
 +     organization, or substantially all assets of one, or subdividing an
 +     organization, or merging organizations.  If propagation of a
 +     covered work results from an entity transaction, each party to that
 +     transaction who receives a copy of the work also receives whatever
 +     licenses to the work the party's predecessor in interest had or
 +     could give under the previous paragraph, plus a right to possession
 +     of the Corresponding Source of the work from the predecessor in
 +     interest, if the predecessor has it or can get it with reasonable
 +     efforts.
 +
 +     You may not impose any further restrictions on the exercise of the
 +     rights granted or affirmed under this License.  For example, you
 +     may not impose a license fee, royalty, or other charge for exercise
 +     of rights granted under this License, and you may not initiate
 +     litigation (including a cross-claim or counterclaim in a lawsuit)
 +     alleging that any patent claim is infringed by making, using,
 +     selling, offering for sale, or importing the Program or any portion
 +     of it.
 +
 +  11. Patents.
 +
 +     A "contributor" is a copyright holder who authorizes use under this
 +     License of the Program or a work on which the Program is based.
 +     The work thus licensed is called the contributor's "contributor
 +     version".
 +
 +     A contributor's "essential patent claims" are all patent claims
 +     owned or controlled by the contributor, whether already acquired or
 +     hereafter acquired, that would be infringed by some manner,
 +     permitted by this License, of making, using, or selling its
 +     contributor version, but do not include claims that would be
 +     infringed only as a consequence of further modification of the
 +     contributor version.  For purposes of this definition, "control"
 +     includes the right to grant patent sublicenses in a manner
 +     consistent with the requirements of this License.
 +
 +     Each contributor grants you a non-exclusive, worldwide,
 +     royalty-free patent license under the contributor's essential
 +     patent claims, to make, use, sell, offer for sale, import and
 +     otherwise run, modify and propagate the contents of its contributor
 +     version.
 +
 +     In the following three paragraphs, a "patent license" is any
 +     express agreement or commitment, however denominated, not to
 +     enforce a patent (such as an express permission to practice a
 +     patent or covenant not to sue for patent infringement).  To "grant"
 +     such a patent license to a party means to make such an agreement or
 +     commitment not to enforce a patent against the party.
 +
 +     If you convey a covered work, knowingly relying on a patent
 +     license, and the Corresponding Source of the work is not available
 +     for anyone to copy, free of charge and under the terms of this
 +     License, through a publicly available network server or other
 +     readily accessible means, then you must either (1) cause the
 +     Corresponding Source to be so available, or (2) arrange to deprive
 +     yourself of the benefit of the patent license for this particular
 +     work, or (3) arrange, in a manner consistent with the requirements
 +     of this License, to extend the patent license to downstream
 +     recipients.  "Knowingly relying" means you have actual knowledge
 +     that, but for the patent license, your conveying the covered work
 +     in a country, or your recipient's use of the covered work in a
 +     country, would infringe one or more identifiable patents in that
 +     country that you have reason to believe are valid.
 +
 +     If, pursuant to or in connection with a single transaction or
 +     arrangement, you convey, or propagate by procuring conveyance of, a
 +     covered work, and grant a patent license to some of the parties
 +     receiving the covered work authorizing them to use, propagate,
 +     modify or convey a specific copy of the covered work, then the
 +     patent license you grant is automatically extended to all
 +     recipients of the covered work and works based on it.
 +
 +     A patent license is "discriminatory" if it does not include within
 +     the scope of its coverage, prohibits the exercise of, or is
 +     conditioned on the non-exercise of one or more of the rights that
 +     are specifically granted under this License.  You may not convey a
 +     covered work if you are a party to an arrangement with a third
 +     party that is in the business of distributing software, under which
 +     you make payment to the third party based on the extent of your
 +     activity of conveying the work, and under which the third party
 +     grants, to any of the parties who would receive the covered work
 +     from you, a discriminatory patent license (a) in connection with
 +     copies of the covered work conveyed by you (or copies made from
 +     those copies), or (b) primarily for and in connection with specific
 +     products or compilations that contain the covered work, unless you
 +     entered into that arrangement, or that patent license was granted,
 +     prior to 28 March 2007.
 +
 +     Nothing in this License shall be construed as excluding or limiting
 +     any implied license or other defenses to infringement that may
 +     otherwise be available to you under applicable patent law.
 +
 +  12. No Surrender of Others' Freedom.
 +
 +     If conditions are imposed on you (whether by court order, agreement
 +     or otherwise) that contradict the conditions of this License, they
 +     do not excuse you from the conditions of this License.  If you
 +     cannot convey a covered work so as to satisfy simultaneously your
 +     obligations under this License and any other pertinent obligations,
 +     then as a consequence you may not convey it at all.  For example,
 +     if you agree to terms that obligate you to collect a royalty for
 +     further conveying from those to whom you convey the Program, the
 +     only way you could satisfy both those terms and this License would
 +     be to refrain entirely from conveying the Program.
 +
 +  13. Use with the GNU Affero General Public License.
 +
 +     Notwithstanding any other provision of this License, you have
 +     permission to link or combine any covered work with a work licensed
 +     under version 3 of the GNU Affero General Public License into a
 +     single combined work, and to convey the resulting work.  The terms
 +     of this License will continue to apply to the part which is the
 +     covered work, but the special requirements of the GNU Affero
 +     General Public License, section 13, concerning interaction through
 +     a network will apply to the combination as such.
 +
 +  14. Revised Versions of this License.
 +
 +     The Free Software Foundation may publish revised and/or new
 +     versions of the GNU General Public License from time to time.  Such
 +     new versions will be similar in spirit to the present version, but
 +     may differ in detail to address new problems or concerns.
 +
 +     Each version is given a distinguishing version number.  If the
 +     Program specifies that a certain numbered version of the GNU
 +     General Public License "or any later version" applies to it, you
 +     have the option of following the terms and conditions either of
 +     that numbered version or of any later version published by the Free
 +     Software Foundation.  If the Program does not specify a version
 +     number of the GNU General Public License, you may choose any
 +     version ever published by the Free Software Foundation.
 +
 +     If the Program specifies that a proxy can decide which future
 +     versions of the GNU General Public License can be used, that
 +     proxy's public statement of acceptance of a version permanently
 +     authorizes you to choose that version for the Program.
 +
 +     Later license versions may give you additional or different
 +     permissions.  However, no additional obligations are imposed on any
 +     author or copyright holder as a result of your choosing to follow a
 +     later version.
 +
 +  15. Disclaimer of Warranty.
 +
 +     THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
 +     APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
 +     COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
 +     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
 +     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 +     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
 +     RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
 +     SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
 +     NECESSARY SERVICING, REPAIR OR CORRECTION.
 +
 +  16. Limitation of Liability.
 +
 +     IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
 +     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
 +     AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
 +     DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
 +     CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
 +     THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
 +     BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
 +     PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 +     PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
 +     THE POSSIBILITY OF SUCH DAMAGES.
 +
 +  17. Interpretation of Sections 15 and 16.
 +
 +     If the disclaimer of warranty and limitation of liability provided
 +     above cannot be given local legal effect according to their terms,
 +     reviewing courts shall apply local law that most closely
 +     approximates an absolute waiver of all civil liability in
 +     connection with the Program, unless a warranty or assumption of
 +     liability accompanies a copy of the Program in return for a fee.
 +
 +                      END OF TERMS AND CONDITIONS
 +
 +How to Apply These Terms to Your New Programs
 +=============================================
 +
 +If you develop a new program, and you want it to be of the greatest
 +possible use to the public, the best way to achieve this is to make it
 +free software which everyone can redistribute and change under these
 +terms.
 +
 +   To do so, attach the following notices to the program.  It is safest
 +to attach them to the start of each source file to most effectively
 +state the exclusion of warranty; and each file should have at least the
 +"copyright" line and a pointer to where the full notice is found.
 +     ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
 +     Copyright (C) YEAR NAME OF AUTHOR
 +
 +     This program is free software: you can redistribute it and/or modify
 +     it under the terms of the GNU General Public License as published by
 +     the Free Software Foundation, either version 3 of the License, or (at
 +     your option) any later version.
 +
 +     This program is distributed in the hope that it will be useful, but
 +     WITHOUT ANY WARRANTY; without even the implied warranty of
 +     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 +     General Public License for more details.
 +
 +     You should have received a copy of the GNU General Public License
 +     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 +
 +   Also add information on how to contact you by electronic and paper
 +mail.
 +
 +   If the program does terminal interaction, make it output a short
 +notice like this when it starts in an interactive mode:
 +
 +     PROGRAM Copyright (C) YEAR NAME OF AUTHOR
 +     This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
 +     This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details.
 +
 +   The hypothetical commands 'show w' and 'show c' should show the
 +appropriate parts of the General Public License.  Of course, your
 +program's commands might be different; for a GUI interface, you would
 +use an "about box".
 +
 +   You should also get your employer (if you work as a programmer) or
 +school, if any, to sign a "copyright disclaimer" for the program, if
 +necessary.  For more information on this, and how to apply and follow
 +the GNU GPL, see <http://www.gnu.org/licenses/>.
 +
 +   The GNU General Public License does not permit incorporating your
 +program into proprietary programs.  If your program is a subroutine
 +library, you may consider it more useful to permit linking proprietary
 +applications with the library.  If this is what you want to do, use the
 +GNU Lesser General Public License instead of this License.  But first,
 +please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
 +
 +
 +File: assuan.info,  Node: Index,  Prev: Copying,  Up: Top
 +
 +Index
 +*****
 +
 +
 +* Menu:
 +
 +* AM_PATH_LIBASSUAN:                     Automake.            (line  11)
- * assuan_accept:                         Server code.         (line 263)
- * assuan_begin_confidential:             Contexts.            (line 106)
- * assuan_close_input_fd:                 Utilities.           (line  92)
- * assuan_close_output_fd:                Utilities.           (line  99)
- * assuan_command_parse_fd:               Utilities.           (line  56)
++* assuan_accept:                         Server code.         (line 267)
++* assuan_begin_confidential:             Contexts.            (line 110)
++* assuan_close_input_fd:                 Utilities.           (line  93)
++* assuan_close_output_fd:                Utilities.           (line 100)
++* assuan_command_parse_fd:               Utilities.           (line  57)
 +* assuan_context_t:                      Data Types.          (line   9)
- * assuan_ctx_set_system_hooks:           Contexts.            (line 208)
- * assuan_end_confidential:               Contexts.            (line 113)
++* assuan_ctx_set_system_hooks:           Contexts.            (line 213)
++* assuan_end_confidential:               Contexts.            (line 117)
 +* assuan_fdopen:                         Data Types.          (line  21)
 +* assuan_fd_t:                           Data Types.          (line  16)
- * assuan_flag_t:                         Contexts.            (line  78)
- * assuan_get_active_fds:                 Utilities.           (line 153)
++* assuan_flag_t:                         Contexts.            (line  81)
++* assuan_get_active_fds:                 Utilities.           (line 154)
 +* assuan_get_assuan_log_prefix:          Default Log Handler. (line  12)
 +* assuan_get_assuan_log_stream:          Default Log Handler. (line  26)
- * assuan_get_command_name:               Utilities.           (line  72)
- * assuan_get_data_fp:                    Utilities.           (line  35)
- * assuan_get_flag:                       Contexts.            (line 102)
++* assuan_get_command_name:               Utilities.           (line  73)
++* assuan_get_data_fp:                    Utilities.           (line  36)
++* assuan_get_flag:                       Contexts.            (line 105)
 +* assuan_get_gpg_err_source:             Initializing the library.
-                                                               (line  70)
- * assuan_get_input_fd:                   Utilities.           (line  80)
++                                                              (line  72)
++* assuan_get_input_fd:                   Utilities.           (line  81)
 +* assuan_get_log_cb:                     Initializing the library.
-                                                               (line 109)
++                                                              (line 112)
 +* assuan_get_malloc_hooks:               Initializing the library.
-                                                               (line  53)
- * assuan_get_output_fd:                  Utilities.           (line  86)
- * assuan_get_peercred:                   Utilities.           (line 140)
- * assuan_get_pid:                        Utilities.           (line 117)
- * assuan_get_pointer:                    Contexts.            (line  59)
++                                                              (line  54)
++* assuan_get_output_fd:                  Utilities.           (line  87)
++* assuan_get_peercred:                   Utilities.           (line 141)
++* assuan_get_pid:                        Utilities.           (line 118)
++* assuan_get_pointer:                    Contexts.            (line  61)
 +* assuan_init_pipe_server:               Server code.         (line  74)
 +* assuan_init_socket_server:             Server code.         (line  90)
 +* assuan_inquire:                        Utilities.           (line  17)
 +* assuan_inquire_ext:                    External I/O Loop Server.
 +                                                              (line  80)
 +* assuan_malloc_hooks_t:                 Initializing the library.
 +                                                              (line  41)
 +* assuan_new:                            Contexts.            (line  13)
 +* assuan_new_ext:                        Contexts.            (line  33)
- * assuan_peercred_t:                     Utilities.           (line 127)
- * assuan_pending_line:                   Utilities.           (line 173)
++* assuan_peercred_t:                     Utilities.           (line 128)
++* assuan_pending_line:                   Utilities.           (line 174)
 +* assuan_pipe_connect:                   Client code.         (line  12)
- * assuan_process:                        Server code.         (line 273)
++* assuan_process:                        Server code.         (line 277)
 +* assuan_process_done:                   External I/O Loop Server.
 +                                                              (line  75)
 +* assuan_process_next:                   External I/O Loop Server.
 +                                                              (line  69)
 +* assuan_read_line:                      Reading and Writing. (line  12)
- * assuan_receivefd:                      Client code.         (line 121)
- * assuan_register_bye_notify:            Server code.         (line 168)
- * assuan_register_cancel_notify:         Server code.         (line 180)
- * assuan_register_command:               Server code.         (line 141)
- * assuan_register_input_notify:          Server code.         (line 198)
- * assuan_register_option_handler:        Server code.         (line 186)
- * assuan_register_output_notify:         Server code.         (line 211)
- * assuan_register_post_cmd_notify:       Server code.         (line 159)
- * assuan_register_reset_notify:          Server code.         (line 174)
- * assuan_release:                        Contexts.            (line  44)
- * assuan_sendfd:                         Client code.         (line 108)
++* assuan_receivefd:                      Client code.         (line 127)
++* assuan_register_bye_notify:            Server code.         (line 170)
++* assuan_register_cancel_notify:         Server code.         (line 183)
++* assuan_register_command:               Server code.         (line 142)
++* assuan_register_input_notify:          Server code.         (line 202)
++* assuan_register_option_handler:        Server code.         (line 189)
++* assuan_register_output_notify:         Server code.         (line 215)
++* assuan_register_post_cmd_notify:       Server code.         (line 161)
++* assuan_register_reset_notify:          Server code.         (line 177)
++* assuan_release:                        Contexts.            (line  45)
++* assuan_sendfd:                         Client code.         (line 114)
 +* assuan_send_data:                      Reading and Writing. (line  35)
 +* assuan_set_assuan_log_prefix:          Default Log Handler. (line   8)
 +* assuan_set_assuan_log_stream:          Default Log Handler. (line  17)
- * assuan_set_error:                      Utilities.           (line 106)
- * assuan_set_flag:                       Contexts.            (line  72)
++* assuan_set_error:                      Utilities.           (line 107)
++* assuan_set_flag:                       Contexts.            (line  74)
 +* assuan_set_gpg_err_source:             Initializing the library.
-                                                               (line  62)
- * assuan_set_hello_line:                 Server code.         (line 224)
- * assuan_set_io_monitor:                 Reading and Writing. (line  73)
++                                                              (line  63)
++* assuan_set_hello_line:                 Server code.         (line 228)
++* assuan_set_io_monitor:                 Reading and Writing. (line  72)
 +* assuan_set_log_cb:                     Initializing the library.
-                                                               (line 104)
++                                                              (line 106)
 +* assuan_set_log_stream:                 Default Log Handler. (line  33)
 +* assuan_set_malloc_hooks:               Initializing the library.
 +                                                              (line  44)
- * assuan_set_okay_line:                  Utilities.           (line  48)
- * assuan_set_pointer:                    Contexts.            (line  52)
- * assuan_set_sock_nonce:                 Server code.         (line 111)
- * assuan_set_system_hooks:               Contexts.            (line 203)
++* assuan_set_okay_line:                  Utilities.           (line  49)
++* assuan_set_pointer:                    Contexts.            (line  53)
++* assuan_set_sock_nonce:                 Server code.         (line 112)
++* assuan_set_system_hooks:               Contexts.            (line 207)
 +* assuan_socket_connect:                 Client code.         (line  55)
- * assuan_sock_bind:                      Socket wrappers.     (line  55)
- * assuan_sock_check_nonce:               Socket wrappers.     (line  93)
++* assuan_sock_bind:                      Socket wrappers.     (line  56)
++* assuan_sock_check_nonce:               Socket wrappers.     (line  95)
 +* assuan_sock_close:                     Socket wrappers.     (line  20)
- * assuan_sock_connect:                   Socket wrappers.     (line  27)
- * assuan_sock_connect_byname:            Socket wrappers.     (line  38)
++* assuan_sock_connect:                   Socket wrappers.     (line  28)
++* assuan_sock_connect_byname:            Socket wrappers.     (line  39)
 +* assuan_sock_deinit:                    Socket wrappers.     (line  17)
- * assuan_sock_get_flag:                  Socket wrappers.     (line 119)
- * assuan_sock_get_nonce:                 Socket wrappers.     (line  87)
++* assuan_sock_get_flag:                  Socket wrappers.     (line 122)
++* assuan_sock_get_nonce:                 Socket wrappers.     (line  88)
 +* assuan_sock_init:                      Socket wrappers.     (line  13)
 +* assuan_sock_new:                       Socket wrappers.     (line  23)
- * assuan_sock_set_flag:                  Socket wrappers.     (line 112)
- * assuan_sock_set_sockaddr_un:           Socket wrappers.     (line  61)
++* assuan_sock_set_flag:                  Socket wrappers.     (line 114)
++* assuan_sock_set_sockaddr_un:           Socket wrappers.     (line  62)
 +* assuan_transact:                       Client code.         (line  72)
 +* assuan_write_line:                     Reading and Writing. (line  23)
 +* assuan_write_status:                   Utilities.           (line  10)
 +* gpg_error_t (*assuan_handler_t) (assuan_context_t CTX, char *LINE): Server code.
-                                                               (line 135)
++                                                              (line 136)
 +* int (*assuan_log_cb_t) (assuan_context_t CTX, void *HOOK_VALUE, unsigned int CAT, const char *MSG): Initializing the library.
-                                                               (line  77)
++                                                              (line  79)
 +* introduction:                          Top.                 (line   6)
 +* LGPL, GNU Lesser General Public License: Library Copying.   (line   6)
 +* struct assuan_malloc_hooks:            Initializing the library.
 +                                                              (line  24)
- * struct assuan_system_hooks:            Contexts.            (line 120)
++* struct assuan_system_hooks:            Contexts.            (line 124)
 +* unsigned int (*assuan_io_monitor_t) (assuan_context_t CTX, void *HOOK_VALUE, int INOUT, const char *LINE, size_t LINELEN): Reading and Writing.
 +                                                              (line  54)
 +
 +
 +
 +Tag Table:
 +Node: Top908
 +Node: Introduction1974
 +Node: Assuan4229
 +Node: Implementation5273
 +Node: Server responses6452
 +Node: Client requests8742
 +Node: Error codes11780
 +Node: Preparation12119
 +Node: Header12694
 +Node: Building sources13480
 +Node: Automake15379
 +Node: Multi Threading16527
 +Node: Generalities17486
 +Node: Data Types17890
 +Node: Initializing the library18998
 +Ref: function assuan_set_gpg_err_source21694
 +Node: Default Log Handler24013
 +Node: Contexts25779
 +Ref: function assuan_new26359
 +Node: Reading and Writing36549
 +Node: Client code40024
 +Ref: function assuan_sendfd45021
 +Ref: function assuan_receivefd45612
 +Node: Server code45987
 +Node: External I/O Loop58112
 +Node: External I/O Loop Client59937
 +Node: External I/O Loop Server63022
 +Node: Utilities67606
 +Ref: Utilities-Footnote-175707
 +Node: Socket wrappers75771
 +Node: Library Copying82752
 +Node: Copying110864
 +Node: Index148378
 +
 +End Tag Table
diff --cc doc/stamp-vti
index 82b0086,0000000..4b7939c
mode 100644,000000..100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@@ -1,4 -1,0 +1,4 @@@
 + at set UPDATED 27 November 2015
 + at set UPDATED-MONTH November 2015
- @set EDITION 2.4.3
- @set VERSION 2.4.3
++ at set EDITION 2.4.4
++ at set VERSION 2.4.4
diff --cc doc/version.texi
index 82b0086,0000000..4b7939c
mode 100644,000000..100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@@ -1,4 -1,0 +1,4 @@@
 + at set UPDATED 27 November 2015
 + at set UPDATED-MONTH November 2015
- @set EDITION 2.4.3
- @set VERSION 2.4.3
++ at set EDITION 2.4.4
++ at set VERSION 2.4.4
diff --cc m4/libtool.m4
index 1d62b05,1d62b05..0000000
deleted file mode 100644,100644
--- a/m4/libtool.m4
+++ /dev/null
@@@ -1,8027 -1,8027 +1,0 @@@
--# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
--#
--#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
--#                 Foundation, Inc.
--#   Written by Gordon Matzigkeit, 1996
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--m4_define([_LT_COPYING], [dnl
--#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
--#                 Foundation, Inc.
--#   Written by Gordon Matzigkeit, 1996
--#
--#   This file is part of GNU Libtool.
--#
--# GNU Libtool is free software; you can redistribute it and/or
--# modify it under the terms of the GNU General Public License as
--# published by the Free Software Foundation; either version 2 of
--# the License, or (at your option) any later version.
--#
--# As a special exception to the GNU General Public License,
--# if you distribute this file as part of a program or library that
--# is built using GNU Libtool, you may include this file under the
--# same distribution terms that you use for the rest of that program.
--#
--# GNU Libtool is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with GNU Libtool; see the file COPYING.  If not, a copy
--# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
--# obtained by writing to the Free Software Foundation, Inc.,
--# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--])
--
--# serial 57 LT_INIT
--
--
--# LT_PREREQ(VERSION)
--# ------------------
--# Complain and exit if this libtool version is less that VERSION.
--m4_defun([LT_PREREQ],
--[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
--       [m4_default([$3],
--		   [m4_fatal([Libtool version $1 or higher is required],
--		             63)])],
--       [$2])])
--
--
--# _LT_CHECK_BUILDDIR
--# ------------------
--# Complain if the absolute build directory name contains unusual characters
--m4_defun([_LT_CHECK_BUILDDIR],
--[case `pwd` in
--  *\ * | *\	*)
--    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
--esac
--])
--
--
--# LT_INIT([OPTIONS])
--# ------------------
--AC_DEFUN([LT_INIT],
--[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
--AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
--AC_BEFORE([$0], [LT_LANG])dnl
--AC_BEFORE([$0], [LT_OUTPUT])dnl
--AC_BEFORE([$0], [LTDL_INIT])dnl
--m4_require([_LT_CHECK_BUILDDIR])dnl
--
--dnl Autoconf doesn't catch unexpanded LT_ macros by default:
--m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
--m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
--dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
--dnl unless we require an AC_DEFUNed macro:
--AC_REQUIRE([LTOPTIONS_VERSION])dnl
--AC_REQUIRE([LTSUGAR_VERSION])dnl
--AC_REQUIRE([LTVERSION_VERSION])dnl
--AC_REQUIRE([LTOBSOLETE_VERSION])dnl
--m4_require([_LT_PROG_LTMAIN])dnl
--
--_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
--
--dnl Parse OPTIONS
--_LT_SET_OPTIONS([$0], [$1])
--
--# This can be used to rebuild libtool when needed
--LIBTOOL_DEPS="$ltmain"
--
--# Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
--AC_SUBST(LIBTOOL)dnl
--
--_LT_SETUP
--
--# Only expand once:
--m4_define([LT_INIT])
--])# LT_INIT
--
--# Old names:
--AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
--AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
--dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
--
--
--# _LT_CC_BASENAME(CC)
--# -------------------
--# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
--m4_defun([_LT_CC_BASENAME],
--[for cc_temp in $1""; do
--  case $cc_temp in
--    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
--    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
--    \-*) ;;
--    *) break;;
--  esac
--done
--cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
--])
--
--
--# _LT_FILEUTILS_DEFAULTS
--# ----------------------
--# It is okay to use these file commands and assume they have been set
--# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
--m4_defun([_LT_FILEUTILS_DEFAULTS],
--[: ${CP="cp -f"}
--: ${MV="mv -f"}
--: ${RM="rm -f"}
--])# _LT_FILEUTILS_DEFAULTS
--
--
--# _LT_SETUP
--# ---------
--m4_defun([_LT_SETUP],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
--AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
--
--_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
--dnl
--_LT_DECL([], [host_alias], [0], [The host system])dnl
--_LT_DECL([], [host], [0])dnl
--_LT_DECL([], [host_os], [0])dnl
--dnl
--_LT_DECL([], [build_alias], [0], [The build system])dnl
--_LT_DECL([], [build], [0])dnl
--_LT_DECL([], [build_os], [0])dnl
--dnl
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([LT_PATH_LD])dnl
--AC_REQUIRE([LT_PATH_NM])dnl
--dnl
--AC_REQUIRE([AC_PROG_LN_S])dnl
--test -z "$LN_S" && LN_S="ln -s"
--_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
--dnl
--AC_REQUIRE([LT_CMD_MAX_LEN])dnl
--_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
--_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
--dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_CHECK_SHELL_FEATURES])dnl
--m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
--m4_require([_LT_CMD_RELOAD])dnl
--m4_require([_LT_CHECK_MAGIC_METHOD])dnl
--m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
--m4_require([_LT_CMD_OLD_ARCHIVE])dnl
--m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
--m4_require([_LT_WITH_SYSROOT])dnl
--
--_LT_CONFIG_LIBTOOL_INIT([
--# See if we are running on zsh, and set the options which allow our
--# commands through without removal of \ escapes INIT.
--if test -n "\${ZSH_VERSION+set}" ; then
--   setopt NO_GLOB_SUBST
--fi
--])
--if test -n "${ZSH_VERSION+set}" ; then
--   setopt NO_GLOB_SUBST
--fi
--
--_LT_CHECK_OBJDIR
--
--m4_require([_LT_TAG_COMPILER])dnl
--
--case $host_os in
--aix3*)
--  # AIX sometimes has problems with the GCC collect2 program.  For some
--  # reason, if we set the COLLECT_NAMES environment variable, the problems
--  # vanish in a puff of smoke.
--  if test "X${COLLECT_NAMES+set}" != Xset; then
--    COLLECT_NAMES=
--    export COLLECT_NAMES
--  fi
--  ;;
--esac
--
--# Global variables:
--ofile=libtool
--can_build_shared=yes
--
--# All known linkers require a `.a' archive for static linking (except MSVC,
--# which needs '.lib').
--libext=a
--
--with_gnu_ld="$lt_cv_prog_gnu_ld"
--
--old_CC="$CC"
--old_CFLAGS="$CFLAGS"
--
--# Set sane defaults for various variables
--test -z "$CC" && CC=cc
--test -z "$LTCC" && LTCC=$CC
--test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
--test -z "$LD" && LD=ld
--test -z "$ac_objext" && ac_objext=o
--
--_LT_CC_BASENAME([$compiler])
--
--# Only perform the check for file, if the check method requires it
--test -z "$MAGIC_CMD" && MAGIC_CMD=file
--case $deplibs_check_method in
--file_magic*)
--  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
--    _LT_PATH_MAGIC
--  fi
--  ;;
--esac
--
--# Use C for the default configuration in the libtool script
--LT_SUPPORTED_TAG([CC])
--_LT_LANG_C_CONFIG
--_LT_LANG_DEFAULT_CONFIG
--_LT_CONFIG_COMMANDS
--])# _LT_SETUP
--
--
--# _LT_PREPARE_SED_QUOTE_VARS
--# --------------------------
--# Define a few sed substitution that help us do robust quoting.
--m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
--[# Backslashify metacharacters that are still active within
--# double-quoted strings.
--sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\([["`\\]]\)/\\\1/g'
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
--
--# Sed substitution to delay expansion of an escaped single quote.
--delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
--
--# Sed substitution to avoid accidental globbing in evaled expressions
--no_glob_subst='s/\*/\\\*/g'
--])
--
--# _LT_PROG_LTMAIN
--# ---------------
--# Note that this code is called both from `configure', and `config.status'
--# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
--# `config.status' has no value for ac_aux_dir unless we are using Automake,
--# so we pass a copy along to make sure it has a sensible value anyway.
--m4_defun([_LT_PROG_LTMAIN],
--[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
--_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
--ltmain="$ac_aux_dir/ltmain.sh"
--])# _LT_PROG_LTMAIN
--
--
--## ------------------------------------- ##
--## Accumulate code for creating libtool. ##
--## ------------------------------------- ##
--
--# So that we can recreate a full libtool script including additional
--# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
--# in macros and then make a single call at the end using the `libtool'
--# label.
--
--
--# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
--# ----------------------------------------
--# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
--m4_define([_LT_CONFIG_LIBTOOL_INIT],
--[m4_ifval([$1],
--          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
--                     [$1
--])])])
--
--# Initialize.
--m4_define([_LT_OUTPUT_LIBTOOL_INIT])
--
--
--# _LT_CONFIG_LIBTOOL([COMMANDS])
--# ------------------------------
--# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
--m4_define([_LT_CONFIG_LIBTOOL],
--[m4_ifval([$1],
--          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
--                     [$1
--])])])
--
--# Initialize.
--m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
--
--
--# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
--# -----------------------------------------------------
--m4_defun([_LT_CONFIG_SAVE_COMMANDS],
--[_LT_CONFIG_LIBTOOL([$1])
--_LT_CONFIG_LIBTOOL_INIT([$2])
--])
--
--
--# _LT_FORMAT_COMMENT([COMMENT])
--# -----------------------------
--# Add leading comment marks to the start of each line, and a trailing
--# full-stop to the whole comment if one is not present already.
--m4_define([_LT_FORMAT_COMMENT],
--[m4_ifval([$1], [
--m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
--              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
--)])
--
--
--
--## ------------------------ ##
--## FIXME: Eliminate VARNAME ##
--## ------------------------ ##
--
--
--# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
--# -------------------------------------------------------------------
--# CONFIGNAME is the name given to the value in the libtool script.
--# VARNAME is the (base) name used in the configure script.
--# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
--# VARNAME.  Any other value will be used directly.
--m4_define([_LT_DECL],
--[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
--    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
--	[m4_ifval([$1], [$1], [$2])])
--    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
--    m4_ifval([$4],
--	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
--    lt_dict_add_subkey([lt_decl_dict], [$2],
--	[tagged?], [m4_ifval([$5], [yes], [no])])])
--])
--
--
--# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
--# --------------------------------------------------------
--m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
--
--
--# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
--# ------------------------------------------------
--m4_define([lt_decl_tag_varnames],
--[_lt_decl_filter([tagged?], [yes], $@)])
--
--
--# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
--# ---------------------------------------------------------
--m4_define([_lt_decl_filter],
--[m4_case([$#],
--  [0], [m4_fatal([$0: too few arguments: $#])],
--  [1], [m4_fatal([$0: too few arguments: $#: $1])],
--  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
--  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
--  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
--])
--
--
--# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
--# --------------------------------------------------
--m4_define([lt_decl_quote_varnames],
--[_lt_decl_filter([value], [1], $@)])
--
--
--# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
--# ---------------------------------------------------
--m4_define([lt_decl_dquote_varnames],
--[_lt_decl_filter([value], [2], $@)])
--
--
--# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
--# ---------------------------------------------------
--m4_define([lt_decl_varnames_tagged],
--[m4_assert([$# <= 2])dnl
--_$0(m4_quote(m4_default([$1], [[, ]])),
--    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
--    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
--m4_define([_lt_decl_varnames_tagged],
--[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
--
--
--# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
--# ------------------------------------------------
--m4_define([lt_decl_all_varnames],
--[_$0(m4_quote(m4_default([$1], [[, ]])),
--     m4_if([$2], [],
--	   m4_quote(lt_decl_varnames),
--	m4_quote(m4_shift($@))))[]dnl
--])
--m4_define([_lt_decl_all_varnames],
--[lt_join($@, lt_decl_varnames_tagged([$1],
--			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
--])
--
--
--# _LT_CONFIG_STATUS_DECLARE([VARNAME])
--# ------------------------------------
--# Quote a variable value, and forward it to `config.status' so that its
--# declaration there will have the same value as in `configure'.  VARNAME
--# must have a single quote delimited value for this to work.
--m4_define([_LT_CONFIG_STATUS_DECLARE],
--[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
--
--
--# _LT_CONFIG_STATUS_DECLARATIONS
--# ------------------------------
--# We delimit libtool config variables with single quotes, so when
--# we write them to config.status, we have to be sure to quote all
--# embedded single quotes properly.  In configure, this macro expands
--# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
--#
--#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
--m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
--[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
--    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
--
--
--# _LT_LIBTOOL_TAGS
--# ----------------
--# Output comment and list of tags supported by the script
--m4_defun([_LT_LIBTOOL_TAGS],
--[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
--available_tags="_LT_TAGS"dnl
--])
--
--
--# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
--# -----------------------------------
--# Extract the dictionary values for VARNAME (optionally with TAG) and
--# expand to a commented shell variable setting:
--#
--#    # Some comment about what VAR is for.
--#    visible_name=$lt_internal_name
--m4_define([_LT_LIBTOOL_DECLARE],
--[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
--					   [description])))[]dnl
--m4_pushdef([_libtool_name],
--    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
--m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
--    [0], [_libtool_name=[$]$1],
--    [1], [_libtool_name=$lt_[]$1],
--    [2], [_libtool_name=$lt_[]$1],
--    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
--m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
--])
--
--
--# _LT_LIBTOOL_CONFIG_VARS
--# -----------------------
--# Produce commented declarations of non-tagged libtool config variables
--# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
--# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
--# section) are produced by _LT_LIBTOOL_TAG_VARS.
--m4_defun([_LT_LIBTOOL_CONFIG_VARS],
--[m4_foreach([_lt_var],
--    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
--    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
--
--
--# _LT_LIBTOOL_TAG_VARS(TAG)
--# -------------------------
--m4_define([_LT_LIBTOOL_TAG_VARS],
--[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
--    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
--
--
--# _LT_TAGVAR(VARNAME, [TAGNAME])
--# ------------------------------
--m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
--
--
--# _LT_CONFIG_COMMANDS
--# -------------------
--# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
--# variables for single and double quote escaping we saved from calls
--# to _LT_DECL, we can put quote escaped variables declarations
--# into `config.status', and then the shell code to quote escape them in
--# for loops in `config.status'.  Finally, any additional code accumulated
--# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
--m4_defun([_LT_CONFIG_COMMANDS],
--[AC_PROVIDE_IFELSE([LT_OUTPUT],
--	dnl If the libtool generation code has been placed in $CONFIG_LT,
--	dnl instead of duplicating it all over again into config.status,
--	dnl then we will have config.status run $CONFIG_LT later, so it
--	dnl needs to know what name is stored there:
--        [AC_CONFIG_COMMANDS([libtool],
--            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
--    dnl If the libtool generation code is destined for config.status,
--    dnl expand the accumulated commands and init code now:
--    [AC_CONFIG_COMMANDS([libtool],
--        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
--])#_LT_CONFIG_COMMANDS
--
--
--# Initialize.
--m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
--[
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--sed_quote_subst='$sed_quote_subst'
--double_quote_subst='$double_quote_subst'
--delay_variable_subst='$delay_variable_subst'
--_LT_CONFIG_STATUS_DECLARATIONS
--LTCC='$LTCC'
--LTCFLAGS='$LTCFLAGS'
--compiler='$compiler_DEFAULT'
--
--# A function that is used when there is no print builtin or printf.
--func_fallback_echo ()
--{
--  eval 'cat <<_LTECHO_EOF
--\$[]1
--_LTECHO_EOF'
--}
--
--# Quote evaled strings.
--for var in lt_decl_all_varnames([[ \
--]], lt_decl_quote_varnames); do
--    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
--    *[[\\\\\\\`\\"\\\$]]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
--      ;;
--    *)
--      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
--      ;;
--    esac
--done
--
--# Double-quote double-evaled strings.
--for var in lt_decl_all_varnames([[ \
--]], lt_decl_dquote_varnames); do
--    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
--    *[[\\\\\\\`\\"\\\$]]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
--      ;;
--    *)
--      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
--      ;;
--    esac
--done
--
--_LT_OUTPUT_LIBTOOL_INIT
--])
--
--# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
--# ------------------------------------
--# Generate a child script FILE with all initialization necessary to
--# reuse the environment learned by the parent script, and make the
--# file executable.  If COMMENT is supplied, it is inserted after the
--# `#!' sequence but before initialization text begins.  After this
--# macro, additional text can be appended to FILE to form the body of
--# the child script.  The macro ends with non-zero status if the
--# file could not be fully written (such as if the disk is full).
--m4_ifdef([AS_INIT_GENERATED],
--[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
--[m4_defun([_LT_GENERATED_FILE_INIT],
--[m4_require([AS_PREPARE])]dnl
--[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
--[lt_write_fail=0
--cat >$1 <<_ASEOF || lt_write_fail=1
--#! $SHELL
--# Generated by $as_me.
--$2
--SHELL=\${CONFIG_SHELL-$SHELL}
--export SHELL
--_ASEOF
--cat >>$1 <<\_ASEOF || lt_write_fail=1
--AS_SHELL_SANITIZE
--_AS_PREPARE
--exec AS_MESSAGE_FD>&1
--_ASEOF
--test $lt_write_fail = 0 && chmod +x $1[]dnl
--m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
--
--# LT_OUTPUT
--# ---------
--# This macro allows early generation of the libtool script (before
--# AC_OUTPUT is called), incase it is used in configure for compilation
--# tests.
--AC_DEFUN([LT_OUTPUT],
--[: ${CONFIG_LT=./config.lt}
--AC_MSG_NOTICE([creating $CONFIG_LT])
--_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
--[# Run this file to recreate a libtool stub with the current configuration.])
--
--cat >>"$CONFIG_LT" <<\_LTEOF
--lt_cl_silent=false
--exec AS_MESSAGE_LOG_FD>>config.log
--{
--  echo
--  AS_BOX([Running $as_me.])
--} >&AS_MESSAGE_LOG_FD
--
--lt_cl_help="\
--\`$as_me' creates a local libtool stub from the current configuration,
--for use in further configure time tests before the real libtool is
--generated.
--
--Usage: $[0] [[OPTIONS]]
--
--  -h, --help      print this help, then exit
--  -V, --version   print version number, then exit
--  -q, --quiet     do not print progress messages
--  -d, --debug     don't remove temporary files
--
--Report bugs to <bug-libtool at gnu.org>."
--
--lt_cl_version="\
--m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
--m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
--configured by $[0], generated by m4_PACKAGE_STRING.
--
--Copyright (C) 2011 Free Software Foundation, Inc.
--This config.lt script is free software; the Free Software Foundation
--gives unlimited permision to copy, distribute and modify it."
--
--while test $[#] != 0
--do
--  case $[1] in
--    --version | --v* | -V )
--      echo "$lt_cl_version"; exit 0 ;;
--    --help | --h* | -h )
--      echo "$lt_cl_help"; exit 0 ;;
--    --debug | --d* | -d )
--      debug=: ;;
--    --quiet | --q* | --silent | --s* | -q )
--      lt_cl_silent=: ;;
--
--    -*) AC_MSG_ERROR([unrecognized option: $[1]
--Try \`$[0] --help' for more information.]) ;;
--
--    *) AC_MSG_ERROR([unrecognized argument: $[1]
--Try \`$[0] --help' for more information.]) ;;
--  esac
--  shift
--done
--
--if $lt_cl_silent; then
--  exec AS_MESSAGE_FD>/dev/null
--fi
--_LTEOF
--
--cat >>"$CONFIG_LT" <<_LTEOF
--_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
--_LTEOF
--
--cat >>"$CONFIG_LT" <<\_LTEOF
--AC_MSG_NOTICE([creating $ofile])
--_LT_OUTPUT_LIBTOOL_COMMANDS
--AS_EXIT(0)
--_LTEOF
--chmod +x "$CONFIG_LT"
--
--# configure is writing to config.log, but config.lt does its own redirection,
--# appending to config.log, which fails on DOS, as config.log is still kept
--# open by configure.  Here we exec the FD to /dev/null, effectively closing
--# config.log, so it can be properly (re)opened and appended to by config.lt.
--lt_cl_success=:
--test "$silent" = yes &&
--  lt_config_lt_args="$lt_config_lt_args --quiet"
--exec AS_MESSAGE_LOG_FD>/dev/null
--$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
--exec AS_MESSAGE_LOG_FD>>config.log
--$lt_cl_success || AS_EXIT(1)
--])# LT_OUTPUT
--
--
--# _LT_CONFIG(TAG)
--# ---------------
--# If TAG is the built-in tag, create an initial libtool script with a
--# default configuration from the untagged config vars.  Otherwise add code
--# to config.status for appending the configuration named by TAG from the
--# matching tagged config vars.
--m4_defun([_LT_CONFIG],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--_LT_CONFIG_SAVE_COMMANDS([
--  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
--  m4_if(_LT_TAG, [C], [
--    # See if we are running on zsh, and set the options which allow our
--    # commands through without removal of \ escapes.
--    if test -n "${ZSH_VERSION+set}" ; then
--      setopt NO_GLOB_SUBST
--    fi
--
--    cfgfile="${ofile}T"
--    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
--    $RM "$cfgfile"
--
--    cat <<_LT_EOF >> "$cfgfile"
--#! $SHELL
--
--# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
--# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--# NOTE: Changes made to this file will be lost: look at ltmain.sh.
--#
--_LT_COPYING
--_LT_LIBTOOL_TAGS
--
--# ### BEGIN LIBTOOL CONFIG
--_LT_LIBTOOL_CONFIG_VARS
--_LT_LIBTOOL_TAG_VARS
--# ### END LIBTOOL CONFIG
--
--_LT_EOF
--
--  case $host_os in
--  aix3*)
--    cat <<\_LT_EOF >> "$cfgfile"
--# AIX sometimes has problems with the GCC collect2 program.  For some
--# reason, if we set the COLLECT_NAMES environment variable, the problems
--# vanish in a puff of smoke.
--if test "X${COLLECT_NAMES+set}" != Xset; then
--  COLLECT_NAMES=
--  export COLLECT_NAMES
--fi
--_LT_EOF
--    ;;
--  esac
--
--  _LT_PROG_LTMAIN
--
--  # We use sed instead of cat because bash on DJGPP gets confused if
--  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
--  # text mode, it properly converts lines to CR/LF.  This bash problem
--  # is reportedly fixed, but why not run on old versions too?
--  sed '$q' "$ltmain" >> "$cfgfile" \
--     || (rm -f "$cfgfile"; exit 1)
--
--  _LT_PROG_REPLACE_SHELLFNS
--
--   mv -f "$cfgfile" "$ofile" ||
--    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
--  chmod +x "$ofile"
--],
--[cat <<_LT_EOF >> "$ofile"
--
--dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
--dnl in a comment (ie after a #).
--# ### BEGIN LIBTOOL TAG CONFIG: $1
--_LT_LIBTOOL_TAG_VARS(_LT_TAG)
--# ### END LIBTOOL TAG CONFIG: $1
--_LT_EOF
--])dnl /m4_if
--],
--[m4_if([$1], [], [
--    PACKAGE='$PACKAGE'
--    VERSION='$VERSION'
--    TIMESTAMP='$TIMESTAMP'
--    RM='$RM'
--    ofile='$ofile'], [])
--])dnl /_LT_CONFIG_SAVE_COMMANDS
--])# _LT_CONFIG
--
--
--# LT_SUPPORTED_TAG(TAG)
--# ---------------------
--# Trace this macro to discover what tags are supported by the libtool
--# --tag option, using:
--#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
--AC_DEFUN([LT_SUPPORTED_TAG], [])
--
--
--# C support is built-in for now
--m4_define([_LT_LANG_C_enabled], [])
--m4_define([_LT_TAGS], [])
--
--
--# LT_LANG(LANG)
--# -------------
--# Enable libtool support for the given language if not already enabled.
--AC_DEFUN([LT_LANG],
--[AC_BEFORE([$0], [LT_OUTPUT])dnl
--m4_case([$1],
--  [C],			[_LT_LANG(C)],
--  [C++],		[_LT_LANG(CXX)],
--  [Go],			[_LT_LANG(GO)],
--  [Java],		[_LT_LANG(GCJ)],
--  [Fortran 77],		[_LT_LANG(F77)],
--  [Fortran],		[_LT_LANG(FC)],
--  [Windows Resource],	[_LT_LANG(RC)],
--  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
--    [_LT_LANG($1)],
--    [m4_fatal([$0: unsupported language: "$1"])])])dnl
--])# LT_LANG
--
--
--# _LT_LANG(LANGNAME)
--# ------------------
--m4_defun([_LT_LANG],
--[m4_ifdef([_LT_LANG_]$1[_enabled], [],
--  [LT_SUPPORTED_TAG([$1])dnl
--  m4_append([_LT_TAGS], [$1 ])dnl
--  m4_define([_LT_LANG_]$1[_enabled], [])dnl
--  _LT_LANG_$1_CONFIG($1)])dnl
--])# _LT_LANG
--
--
--m4_ifndef([AC_PROG_GO], [
--############################################################
--# NOTE: This macro has been submitted for inclusion into   #
--#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
--#  a released version of Autoconf we should remove this    #
--#  macro and use it instead.                               #
--############################################################
--m4_defun([AC_PROG_GO],
--[AC_LANG_PUSH(Go)dnl
--AC_ARG_VAR([GOC],     [Go compiler command])dnl
--AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
--_AC_ARG_VAR_LDFLAGS()dnl
--AC_CHECK_TOOL(GOC, gccgo)
--if test -z "$GOC"; then
--  if test -n "$ac_tool_prefix"; then
--    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
--  fi
--fi
--if test -z "$GOC"; then
--  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
--fi
--])#m4_defun
--])#m4_ifndef
--
--
--# _LT_LANG_DEFAULT_CONFIG
--# -----------------------
--m4_defun([_LT_LANG_DEFAULT_CONFIG],
--[AC_PROVIDE_IFELSE([AC_PROG_CXX],
--  [LT_LANG(CXX)],
--  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
--
--AC_PROVIDE_IFELSE([AC_PROG_F77],
--  [LT_LANG(F77)],
--  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
--
--AC_PROVIDE_IFELSE([AC_PROG_FC],
--  [LT_LANG(FC)],
--  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
--
--dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
--dnl pulling things in needlessly.
--AC_PROVIDE_IFELSE([AC_PROG_GCJ],
--  [LT_LANG(GCJ)],
--  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
--    [LT_LANG(GCJ)],
--    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
--      [LT_LANG(GCJ)],
--      [m4_ifdef([AC_PROG_GCJ],
--	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
--       m4_ifdef([A][M_PROG_GCJ],
--	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
--       m4_ifdef([LT_PROG_GCJ],
--	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
--
--AC_PROVIDE_IFELSE([AC_PROG_GO],
--  [LT_LANG(GO)],
--  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
--
--AC_PROVIDE_IFELSE([LT_PROG_RC],
--  [LT_LANG(RC)],
--  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
--])# _LT_LANG_DEFAULT_CONFIG
--
--# Obsolete macros:
--AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
--AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
--AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
--AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
--AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
--dnl AC_DEFUN([AC_LIBTOOL_F77], [])
--dnl AC_DEFUN([AC_LIBTOOL_FC], [])
--dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
--dnl AC_DEFUN([AC_LIBTOOL_RC], [])
--
--
--# _LT_TAG_COMPILER
--# ----------------
--m4_defun([_LT_TAG_COMPILER],
--[AC_REQUIRE([AC_PROG_CC])dnl
--
--_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
--_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
--_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
--_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
--
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
--
--# If no C compiler flags were specified, use CFLAGS.
--LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
--
--# Allow CC to be a program name with arguments.
--compiler=$CC
--])# _LT_TAG_COMPILER
--
--
--# _LT_COMPILER_BOILERPLATE
--# ------------------------
--# Check for compiler boilerplate output or warnings with
--# the simple compiler test code.
--m4_defun([_LT_COMPILER_BOILERPLATE],
--[m4_require([_LT_DECL_SED])dnl
--ac_outfile=conftest.$ac_objext
--echo "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$RM conftest*
--])# _LT_COMPILER_BOILERPLATE
--
--
--# _LT_LINKER_BOILERPLATE
--# ----------------------
--# Check for linker boilerplate output or warnings with
--# the simple link test code.
--m4_defun([_LT_LINKER_BOILERPLATE],
--[m4_require([_LT_DECL_SED])dnl
--ac_outfile=conftest.$ac_objext
--echo "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$RM -r conftest*
--])# _LT_LINKER_BOILERPLATE
--
--# _LT_REQUIRED_DARWIN_CHECKS
--# -------------------------
--m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
--  case $host_os in
--    rhapsody* | darwin*)
--    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
--    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
--    AC_CHECK_TOOL([LIPO], [lipo], [:])
--    AC_CHECK_TOOL([OTOOL], [otool], [:])
--    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
--    _LT_DECL([], [DSYMUTIL], [1],
--      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
--    _LT_DECL([], [NMEDIT], [1],
--      [Tool to change global to local symbols on Mac OS X])
--    _LT_DECL([], [LIPO], [1],
--      [Tool to manipulate fat objects and archives on Mac OS X])
--    _LT_DECL([], [OTOOL], [1],
--      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
--    _LT_DECL([], [OTOOL64], [1],
--      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
--
--    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
--      [lt_cv_apple_cc_single_mod=no
--      if test -z "${LT_MULTI_MODULE}"; then
--	# By default we will add the -single_module flag. You can override
--	# by either setting the environment variable LT_MULTI_MODULE
--	# non-empty at configure time, or by adding -multi_module to the
--	# link flags.
--	rm -rf libconftest.dylib*
--	echo "int foo(void){return 1;}" > conftest.c
--	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
---dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
--	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
--        _lt_result=$?
--	# If there is a non-empty error log, and "single_module"
--	# appears in it, assume the flag caused a linker warning
--        if test -s conftest.err && $GREP single_module conftest.err; then
--	  cat conftest.err >&AS_MESSAGE_LOG_FD
--	# Otherwise, if the output was created with a 0 exit code from
--	# the compiler, it worked.
--	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
--	  lt_cv_apple_cc_single_mod=yes
--	else
--	  cat conftest.err >&AS_MESSAGE_LOG_FD
--	fi
--	rm -rf libconftest.dylib*
--	rm -f conftest.*
--      fi])
--
--    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
--      [lt_cv_ld_exported_symbols_list],
--      [lt_cv_ld_exported_symbols_list=no
--      save_LDFLAGS=$LDFLAGS
--      echo "_main" > conftest.sym
--      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
--      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
--	[lt_cv_ld_exported_symbols_list=yes],
--	[lt_cv_ld_exported_symbols_list=no])
--	LDFLAGS="$save_LDFLAGS"
--    ])
--
--    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
--      [lt_cv_ld_force_load=no
--      cat > conftest.c << _LT_EOF
--int forced_loaded() { return 2;}
--_LT_EOF
--      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
--      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
--      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
--      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
--      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
--      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
--      cat > conftest.c << _LT_EOF
--int main() { return 0;}
--_LT_EOF
--      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
--      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
--      _lt_result=$?
--      if test -s conftest.err && $GREP force_load conftest.err; then
--	cat conftest.err >&AS_MESSAGE_LOG_FD
--      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
--	lt_cv_ld_force_load=yes
--      else
--	cat conftest.err >&AS_MESSAGE_LOG_FD
--      fi
--        rm -f conftest.err libconftest.a conftest conftest.c
--        rm -rf conftest.dSYM
--    ])
--    case $host_os in
--    rhapsody* | darwin1.[[012]])
--      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
--    darwin1.*)
--      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
--    darwin*) # darwin 5.x on
--      # if running on 10.5 or later, the deployment target defaults
--      # to the OS version, if on x86, and 10.4, the deployment
--      # target defaults to 10.4. Don't you love it?
--      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
--	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
--	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
--	10.[[012]]*)
--	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
--	10.*)
--	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
--      esac
--    ;;
--  esac
--    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
--      _lt_dar_single_mod='$single_module'
--    fi
--    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
--      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
--    else
--      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
--    fi
--    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
--      _lt_dsymutil='~$DSYMUTIL $lib || :'
--    else
--      _lt_dsymutil=
--    fi
--    ;;
--  esac
--])
--
--
--# _LT_DARWIN_LINKER_FEATURES([TAG])
--# ---------------------------------
--# Checks for linker and compiler features on darwin
--m4_defun([_LT_DARWIN_LINKER_FEATURES],
--[
--  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
--  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--  _LT_TAGVAR(hardcode_direct, $1)=no
--  _LT_TAGVAR(hardcode_automatic, $1)=yes
--  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--  if test "$lt_cv_ld_force_load" = "yes"; then
--    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
--    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
--                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
--  else
--    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
--  fi
--  _LT_TAGVAR(link_all_deplibs, $1)=yes
--  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
--  case $cc_basename in
--     ifort*) _lt_dar_can_shared=yes ;;
--     *) _lt_dar_can_shared=$GCC ;;
--  esac
--  if test "$_lt_dar_can_shared" = "yes"; then
--    output_verbose_link_cmd=func_echo_all
--    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
--    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
--    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
--    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
--    m4_if([$1], [CXX],
--[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
--      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
--      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
--    fi
--],[])
--  else
--  _LT_TAGVAR(ld_shlibs, $1)=no
--  fi
--])
--
--# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
--# ----------------------------------
--# Links a minimal program and checks the executable
--# for the system default hardcoded library path. In most cases,
--# this is /usr/lib:/lib, but when the MPI compilers are used
--# the location of the communication and MPI libs are included too.
--# If we don't find anything, use the default library path according
--# to the aix ld manual.
--# Store the results from the different compilers for each TAGNAME.
--# Allow to override them for all tags through lt_cv_aix_libpath.
--m4_defun([_LT_SYS_MODULE_PATH_AIX],
--[m4_require([_LT_DECL_SED])dnl
--if test "${lt_cv_aix_libpath+set}" = set; then
--  aix_libpath=$lt_cv_aix_libpath
--else
--  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
--  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
--  lt_aix_libpath_sed='[
--      /Import File Strings/,/^$/ {
--	  /^0/ {
--	      s/^0  *\([^ ]*\) *$/\1/
--	      p
--	  }
--      }]'
--  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--  # Check for a 64-bit object if we didn't find anything.
--  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
--    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--  fi],[])
--  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
--    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
--  fi
--  ])
--  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
--fi
--])# _LT_SYS_MODULE_PATH_AIX
--
--
--# _LT_SHELL_INIT(ARG)
--# -------------------
--m4_define([_LT_SHELL_INIT],
--[m4_divert_text([M4SH-INIT], [$1
--])])# _LT_SHELL_INIT
--
--
--
--# _LT_PROG_ECHO_BACKSLASH
--# -----------------------
--# Find how we can fake an echo command that does not interpret backslash.
--# In particular, with Autoconf 2.60 or later we add some code to the start
--# of the generated configure script which will find a shell with a builtin
--# printf (which we can use as an echo command).
--m4_defun([_LT_PROG_ECHO_BACKSLASH],
--[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
--ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
--ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
--
--AC_MSG_CHECKING([how to print strings])
--# Test print first, because it will be a builtin if present.
--if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
--   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
--  ECHO='print -r --'
--elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
--  ECHO='printf %s\n'
--else
--  # Use this function as a fallback that always works.
--  func_fallback_echo ()
--  {
--    eval 'cat <<_LTECHO_EOF
--$[]1
--_LTECHO_EOF'
--  }
--  ECHO='func_fallback_echo'
--fi
--
--# func_echo_all arg...
--# Invoke $ECHO with all args, space-separated.
--func_echo_all ()
--{
--    $ECHO "$*"
--}
--
--case "$ECHO" in
--  printf*) AC_MSG_RESULT([printf]) ;;
--  print*) AC_MSG_RESULT([print -r]) ;;
--  *) AC_MSG_RESULT([cat]) ;;
--esac
--
--m4_ifdef([_AS_DETECT_SUGGESTED],
--[_AS_DETECT_SUGGESTED([
--  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
--    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
--    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
--    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
--    PATH=/empty FPATH=/empty; export PATH FPATH
--    test "X`printf %s $ECHO`" = "X$ECHO" \
--      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
--
--_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
--_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
--])# _LT_PROG_ECHO_BACKSLASH
--
--
--# _LT_WITH_SYSROOT
--# ----------------
--AC_DEFUN([_LT_WITH_SYSROOT],
--[AC_MSG_CHECKING([for sysroot])
--AC_ARG_WITH([sysroot],
--[  --with-sysroot[=DIR] Search for dependent libraries within DIR
--                        (or the compiler's sysroot if not specified).],
--[], [with_sysroot=no])
--
--dnl lt_sysroot will always be passed unquoted.  We quote it here
--dnl in case the user passed a directory name.
--lt_sysroot=
--case ${with_sysroot} in #(
-- yes)
--   if test "$GCC" = yes; then
--     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
--   fi
--   ;; #(
-- /*)
--   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
--   ;; #(
-- no|'')
--   ;; #(
-- *)
--   AC_MSG_RESULT([${with_sysroot}])
--   AC_MSG_ERROR([The sysroot must be an absolute path.])
--   ;;
--esac
--
-- AC_MSG_RESULT([${lt_sysroot:-no}])
--_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
--[dependent libraries, and in which our libraries should be installed.])])
--
--# _LT_ENABLE_LOCK
--# ---------------
--m4_defun([_LT_ENABLE_LOCK],
--[AC_ARG_ENABLE([libtool-lock],
--  [AS_HELP_STRING([--disable-libtool-lock],
--    [avoid locking (might break parallel builds)])])
--test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
--
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case $host in
--ia64-*-hpux*)
--  # Find out which ABI we are using.
--  echo 'int i;' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    case `/usr/bin/file conftest.$ac_objext` in
--      *ELF-32*)
--	HPUX_IA64_MODE="32"
--	;;
--      *ELF-64*)
--	HPUX_IA64_MODE="64"
--	;;
--    esac
--  fi
--  rm -rf conftest*
--  ;;
--*-*-irix6*)
--  # Find out which ABI we are using.
--  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    if test "$lt_cv_prog_gnu_ld" = yes; then
--      case `/usr/bin/file conftest.$ac_objext` in
--	*32-bit*)
--	  LD="${LD-ld} -melf32bsmip"
--	  ;;
--	*N32*)
--	  LD="${LD-ld} -melf32bmipn32"
--	  ;;
--	*64-bit*)
--	  LD="${LD-ld} -melf64bmip"
--	;;
--      esac
--    else
--      case `/usr/bin/file conftest.$ac_objext` in
--	*32-bit*)
--	  LD="${LD-ld} -32"
--	  ;;
--	*N32*)
--	  LD="${LD-ld} -n32"
--	  ;;
--	*64-bit*)
--	  LD="${LD-ld} -64"
--	  ;;
--      esac
--    fi
--  fi
--  rm -rf conftest*
--  ;;
--
--x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
--s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
--  # Find out which ABI we are using.
--  echo 'int i;' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    case `/usr/bin/file conftest.o` in
--      *32-bit*)
--	case $host in
--	  x86_64-*kfreebsd*-gnu)
--	    LD="${LD-ld} -m elf_i386_fbsd"
--	    ;;
--	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
--	    ;;
--         powerpc64le-*)
--           LD="${LD-ld} -m elf32lppclinux"
--           ;;
--         powerpc64-*)
--	    LD="${LD-ld} -m elf32ppclinux"
--	    ;;
--	  s390x-*linux*)
--	    LD="${LD-ld} -m elf_s390"
--	    ;;
--	  sparc64-*linux*)
--	    LD="${LD-ld} -m elf32_sparc"
--	    ;;
--	esac
--	;;
--      *64-bit*)
--	case $host in
--	  x86_64-*kfreebsd*-gnu)
--	    LD="${LD-ld} -m elf_x86_64_fbsd"
--	    ;;
--	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_x86_64"
--	    ;;
--         powerpcle-*)
--           LD="${LD-ld} -m elf64lppc"
--           ;;
--         powerpc-*)
--	    LD="${LD-ld} -m elf64ppc"
--	    ;;
--	  s390*-*linux*|s390*-*tpf*)
--	    LD="${LD-ld} -m elf64_s390"
--	    ;;
--	  sparc*-*linux*)
--	    LD="${LD-ld} -m elf64_sparc"
--	    ;;
--	esac
--	;;
--    esac
--  fi
--  rm -rf conftest*
--  ;;
--
--*-*-sco3.2v5*)
--  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
--  SAVE_CFLAGS="$CFLAGS"
--  CFLAGS="$CFLAGS -belf"
--  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
--    [AC_LANG_PUSH(C)
--     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
--     AC_LANG_POP])
--  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
--    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
--    CFLAGS="$SAVE_CFLAGS"
--  fi
--  ;;
--*-*solaris*)
--  # Find out which ABI we are using.
--  echo 'int i;' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    case `/usr/bin/file conftest.o` in
--    *64-bit*)
--      case $lt_cv_prog_gnu_ld in
--      yes*)
--        case $host in
--        i?86-*-solaris*)
--          LD="${LD-ld} -m elf_x86_64"
--          ;;
--        sparc*-*-solaris*)
--          LD="${LD-ld} -m elf64_sparc"
--          ;;
--        esac
--        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
--        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
--          LD="${LD-ld}_sol2"
--        fi
--        ;;
--      *)
--	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
--	  LD="${LD-ld} -64"
--	fi
--	;;
--      esac
--      ;;
--    esac
--  fi
--  rm -rf conftest*
--  ;;
--esac
--
--need_locks="$enable_libtool_lock"
--])# _LT_ENABLE_LOCK
--
--
--# _LT_PROG_AR
--# -----------
--m4_defun([_LT_PROG_AR],
--[AC_CHECK_TOOLS(AR, [ar], false)
--: ${AR=ar}
--: ${AR_FLAGS=cru}
--_LT_DECL([], [AR], [1], [The archiver])
--_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
--
--AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
--  [lt_cv_ar_at_file=no
--   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
--     [echo conftest.$ac_objext > conftest.lst
--      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
--      AC_TRY_EVAL([lt_ar_try])
--      if test "$ac_status" -eq 0; then
--	# Ensure the archiver fails upon bogus file names.
--	rm -f conftest.$ac_objext libconftest.a
--	AC_TRY_EVAL([lt_ar_try])
--	if test "$ac_status" -ne 0; then
--          lt_cv_ar_at_file=@
--        fi
--      fi
--      rm -f conftest.* libconftest.a
--     ])
--  ])
--
--if test "x$lt_cv_ar_at_file" = xno; then
--  archiver_list_spec=
--else
--  archiver_list_spec=$lt_cv_ar_at_file
--fi
--_LT_DECL([], [archiver_list_spec], [1],
--  [How to feed a file listing to the archiver])
--])# _LT_PROG_AR
--
--
--# _LT_CMD_OLD_ARCHIVE
--# -------------------
--m4_defun([_LT_CMD_OLD_ARCHIVE],
--[_LT_PROG_AR
--
--AC_CHECK_TOOL(STRIP, strip, :)
--test -z "$STRIP" && STRIP=:
--_LT_DECL([], [STRIP], [1], [A symbol stripping program])
--
--AC_CHECK_TOOL(RANLIB, ranlib, :)
--test -z "$RANLIB" && RANLIB=:
--_LT_DECL([], [RANLIB], [1],
--    [Commands used to install an old-style archive])
--
--# Determine commands to create old-style static archives.
--old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
--old_postinstall_cmds='chmod 644 $oldlib'
--old_postuninstall_cmds=
--
--if test -n "$RANLIB"; then
--  case $host_os in
--  openbsd*)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
--    ;;
--  *)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
--    ;;
--  esac
--  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
--fi
--
--case $host_os in
--  darwin*)
--    lock_old_archive_extraction=yes ;;
--  *)
--    lock_old_archive_extraction=no ;;
--esac
--_LT_DECL([], [old_postinstall_cmds], [2])
--_LT_DECL([], [old_postuninstall_cmds], [2])
--_LT_TAGDECL([], [old_archive_cmds], [2],
--    [Commands used to build an old-style archive])
--_LT_DECL([], [lock_old_archive_extraction], [0],
--    [Whether to use a lock for old archive extraction])
--])# _LT_CMD_OLD_ARCHIVE
--
--
--# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
--#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
--# ----------------------------------------------------------------
--# Check whether the given compiler option works
--AC_DEFUN([_LT_COMPILER_OPTION],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_SED])dnl
--AC_CACHE_CHECK([$1], [$2],
--  [$2=no
--   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
--   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--   lt_compiler_flag="$3"
--   # Insert the option either (1) after the last *FLAGS variable, or
--   # (2) before a word containing "conftest.", or (3) at the end.
--   # Note that $ac_compile itself does not contain backslashes and begins
--   # with a dollar sign (not a hyphen), so the echo should work correctly.
--   # The option is referenced via a variable to avoid confusing sed.
--   lt_compile=`echo "$ac_compile" | $SED \
--   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
--   -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
--   (eval "$lt_compile" 2>conftest.err)
--   ac_status=$?
--   cat conftest.err >&AS_MESSAGE_LOG_FD
--   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
--   if (exit $ac_status) && test -s "$ac_outfile"; then
--     # The compiler can only warn and ignore the option if not recognized
--     # So say no if there are warnings other than the usual output.
--     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
--     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
--     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
--       $2=yes
--     fi
--   fi
--   $RM conftest*
--])
--
--if test x"[$]$2" = xyes; then
--    m4_if([$5], , :, [$5])
--else
--    m4_if([$6], , :, [$6])
--fi
--])# _LT_COMPILER_OPTION
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
--
--
--# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
--#                  [ACTION-SUCCESS], [ACTION-FAILURE])
--# ----------------------------------------------------
--# Check whether the given linker option works
--AC_DEFUN([_LT_LINKER_OPTION],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_SED])dnl
--AC_CACHE_CHECK([$1], [$2],
--  [$2=no
--   save_LDFLAGS="$LDFLAGS"
--   LDFLAGS="$LDFLAGS $3"
--   echo "$lt_simple_link_test_code" > conftest.$ac_ext
--   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
--     # The linker can only warn and ignore the option if not recognized
--     # So say no if there are warnings
--     if test -s conftest.err; then
--       # Append any errors to the config.log.
--       cat conftest.err 1>&AS_MESSAGE_LOG_FD
--       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
--       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
--       if diff conftest.exp conftest.er2 >/dev/null; then
--         $2=yes
--       fi
--     else
--       $2=yes
--     fi
--   fi
--   $RM -r conftest*
--   LDFLAGS="$save_LDFLAGS"
--])
--
--if test x"[$]$2" = xyes; then
--    m4_if([$4], , :, [$4])
--else
--    m4_if([$5], , :, [$5])
--fi
--])# _LT_LINKER_OPTION
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
--
--
--# LT_CMD_MAX_LEN
--#---------------
--AC_DEFUN([LT_CMD_MAX_LEN],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--# find the maximum length of command line arguments
--AC_MSG_CHECKING([the maximum length of command line arguments])
--AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
--  i=0
--  teststring="ABCD"
--
--  case $build_os in
--  msdosdjgpp*)
--    # On DJGPP, this test can blow up pretty badly due to problems in libc
--    # (any single argument exceeding 2000 bytes causes a buffer overrun
--    # during glob expansion).  Even if it were fixed, the result of this
--    # check would be larger than it should be.
--    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
--    ;;
--
--  gnu*)
--    # Under GNU Hurd, this test is not required because there is
--    # no limit to the length of command line arguments.
--    # Libtool will interpret -1 as no limit whatsoever
--    lt_cv_sys_max_cmd_len=-1;
--    ;;
--
--  cygwin* | mingw* | cegcc*)
--    # On Win9x/ME, this test blows up -- it succeeds, but takes
--    # about 5 minutes as the teststring grows exponentially.
--    # Worse, since 9x/ME are not pre-emptively multitasking,
--    # you end up with a "frozen" computer, even though with patience
--    # the test eventually succeeds (with a max line length of 256k).
--    # Instead, let's just punt: use the minimum linelength reported by
--    # all of the supported platforms: 8192 (on NT/2K/XP).
--    lt_cv_sys_max_cmd_len=8192;
--    ;;
--
--  mint*)
--    # On MiNT this can take a long time and run out of memory.
--    lt_cv_sys_max_cmd_len=8192;
--    ;;
--
--  amigaos*)
--    # On AmigaOS with pdksh, this test takes hours, literally.
--    # So we just punt and use a minimum line length of 8192.
--    lt_cv_sys_max_cmd_len=8192;
--    ;;
--
--  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
--    # This has been around since 386BSD, at least.  Likely further.
--    if test -x /sbin/sysctl; then
--      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
--    elif test -x /usr/sbin/sysctl; then
--      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
--    else
--      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
--    fi
--    # And add a safety zone
--    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
--    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
--    ;;
--
--  interix*)
--    # We know the value 262144 and hardcode it with a safety zone (like BSD)
--    lt_cv_sys_max_cmd_len=196608
--    ;;
--
--  os2*)
--    # The test takes a long time on OS/2.
--    lt_cv_sys_max_cmd_len=8192
--    ;;
--
--  osf*)
--    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
--    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
--    # nice to cause kernel panics so lets avoid the loop below.
--    # First set a reasonable default.
--    lt_cv_sys_max_cmd_len=16384
--    #
--    if test -x /sbin/sysconfig; then
--      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
--        *1*) lt_cv_sys_max_cmd_len=-1 ;;
--      esac
--    fi
--    ;;
--  sco3.2v5*)
--    lt_cv_sys_max_cmd_len=102400
--    ;;
--  sysv5* | sco5v6* | sysv4.2uw2*)
--    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
--    if test -n "$kargmax"; then
--      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
--    else
--      lt_cv_sys_max_cmd_len=32768
--    fi
--    ;;
--  *)
--    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
--    if test -n "$lt_cv_sys_max_cmd_len"; then
--      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
--      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
--    else
--      # Make teststring a little bigger before we do anything with it.
--      # a 1K string should be a reasonable start.
--      for i in 1 2 3 4 5 6 7 8 ; do
--        teststring=$teststring$teststring
--      done
--      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
--      # If test is not a shell built-in, we'll probably end up computing a
--      # maximum length that is only half of the actual maximum length, but
--      # we can't tell.
--      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
--	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
--	      test $i != 17 # 1/2 MB should be enough
--      do
--        i=`expr $i + 1`
--        teststring=$teststring$teststring
--      done
--      # Only check the string length outside the loop.
--      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
--      teststring=
--      # Add a significant safety factor because C++ compilers can tack on
--      # massive amounts of additional arguments before passing them to the
--      # linker.  It appears as though 1/2 is a usable value.
--      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
--    fi
--    ;;
--  esac
--])
--if test -n $lt_cv_sys_max_cmd_len ; then
--  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
--else
--  AC_MSG_RESULT(none)
--fi
--max_cmd_len=$lt_cv_sys_max_cmd_len
--_LT_DECL([], [max_cmd_len], [0],
--    [What is the maximum length of a command?])
--])# LT_CMD_MAX_LEN
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
--
--
--# _LT_HEADER_DLFCN
--# ----------------
--m4_defun([_LT_HEADER_DLFCN],
--[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
--])# _LT_HEADER_DLFCN
--
--
--# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
--#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
--# ----------------------------------------------------------------
--m4_defun([_LT_TRY_DLOPEN_SELF],
--[m4_require([_LT_HEADER_DLFCN])dnl
--if test "$cross_compiling" = yes; then :
--  [$4]
--else
--  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
--  lt_status=$lt_dlunknown
--  cat > conftest.$ac_ext <<_LT_EOF
--[#line $LINENO "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--#  define LT_DLGLOBAL		RTLD_GLOBAL
--#else
--#  ifdef DL_GLOBAL
--#    define LT_DLGLOBAL		DL_GLOBAL
--#  else
--#    define LT_DLGLOBAL		0
--#  endif
--#endif
--
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
--   find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--#  ifdef RTLD_LAZY
--#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
--#  else
--#    ifdef DL_LAZY
--#      define LT_DLLAZY_OR_NOW		DL_LAZY
--#    else
--#      ifdef RTLD_NOW
--#        define LT_DLLAZY_OR_NOW	RTLD_NOW
--#      else
--#        ifdef DL_NOW
--#          define LT_DLLAZY_OR_NOW	DL_NOW
--#        else
--#          define LT_DLLAZY_OR_NOW	0
--#        endif
--#      endif
--#    endif
--#  endif
--#endif
--
--/* When -fvisbility=hidden is used, assume the code has been annotated
--   correspondingly for the symbols needed.  */
--#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
--int fnord () __attribute__((visibility("default")));
--#endif
--
--int fnord () { return 42; }
--int main ()
--{
--  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
--  int status = $lt_dlunknown;
--
--  if (self)
--    {
--      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
--      else
--        {
--	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
--          else puts (dlerror ());
--	}
--      /* dlclose (self); */
--    }
--  else
--    puts (dlerror ());
--
--  return status;
--}]
--_LT_EOF
--  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
--    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
--    lt_status=$?
--    case x$lt_status in
--      x$lt_dlno_uscore) $1 ;;
--      x$lt_dlneed_uscore) $2 ;;
--      x$lt_dlunknown|x*) $3 ;;
--    esac
--  else :
--    # compilation failed
--    $3
--  fi
--fi
--rm -fr conftest*
--])# _LT_TRY_DLOPEN_SELF
--
--
--# LT_SYS_DLOPEN_SELF
--# ------------------
--AC_DEFUN([LT_SYS_DLOPEN_SELF],
--[m4_require([_LT_HEADER_DLFCN])dnl
--if test "x$enable_dlopen" != xyes; then
--  enable_dlopen=unknown
--  enable_dlopen_self=unknown
--  enable_dlopen_self_static=unknown
--else
--  lt_cv_dlopen=no
--  lt_cv_dlopen_libs=
--
--  case $host_os in
--  beos*)
--    lt_cv_dlopen="load_add_on"
--    lt_cv_dlopen_libs=
--    lt_cv_dlopen_self=yes
--    ;;
--
--  mingw* | pw32* | cegcc*)
--    lt_cv_dlopen="LoadLibrary"
--    lt_cv_dlopen_libs=
--    ;;
--
--  cygwin*)
--    lt_cv_dlopen="dlopen"
--    lt_cv_dlopen_libs=
--    ;;
--
--  darwin*)
--  # if libdl is installed we need to link against it
--    AC_CHECK_LIB([dl], [dlopen],
--		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
--    lt_cv_dlopen="dyld"
--    lt_cv_dlopen_libs=
--    lt_cv_dlopen_self=yes
--    ])
--    ;;
--
--  *)
--    AC_CHECK_FUNC([shl_load],
--	  [lt_cv_dlopen="shl_load"],
--      [AC_CHECK_LIB([dld], [shl_load],
--	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
--	[AC_CHECK_FUNC([dlopen],
--	      [lt_cv_dlopen="dlopen"],
--	  [AC_CHECK_LIB([dl], [dlopen],
--		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
--	    [AC_CHECK_LIB([svld], [dlopen],
--		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
--	      [AC_CHECK_LIB([dld], [dld_link],
--		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
--	      ])
--	    ])
--	  ])
--	])
--      ])
--    ;;
--  esac
--
--  if test "x$lt_cv_dlopen" != xno; then
--    enable_dlopen=yes
--  else
--    enable_dlopen=no
--  fi
--
--  case $lt_cv_dlopen in
--  dlopen)
--    save_CPPFLAGS="$CPPFLAGS"
--    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
--
--    save_LDFLAGS="$LDFLAGS"
--    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
--
--    save_LIBS="$LIBS"
--    LIBS="$lt_cv_dlopen_libs $LIBS"
--
--    AC_CACHE_CHECK([whether a program can dlopen itself],
--	  lt_cv_dlopen_self, [dnl
--	  _LT_TRY_DLOPEN_SELF(
--	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
--	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
--    ])
--
--    if test "x$lt_cv_dlopen_self" = xyes; then
--      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
--      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
--	  lt_cv_dlopen_self_static, [dnl
--	  _LT_TRY_DLOPEN_SELF(
--	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
--	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
--      ])
--    fi
--
--    CPPFLAGS="$save_CPPFLAGS"
--    LDFLAGS="$save_LDFLAGS"
--    LIBS="$save_LIBS"
--    ;;
--  esac
--
--  case $lt_cv_dlopen_self in
--  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
--  *) enable_dlopen_self=unknown ;;
--  esac
--
--  case $lt_cv_dlopen_self_static in
--  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
--  *) enable_dlopen_self_static=unknown ;;
--  esac
--fi
--_LT_DECL([dlopen_support], [enable_dlopen], [0],
--	 [Whether dlopen is supported])
--_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
--	 [Whether dlopen of programs is supported])
--_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
--	 [Whether dlopen of statically linked programs is supported])
--])# LT_SYS_DLOPEN_SELF
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
--
--
--# _LT_COMPILER_C_O([TAGNAME])
--# ---------------------------
--# Check to see if options -c and -o are simultaneously supported by compiler.
--# This macro does not hard code the compiler like AC_PROG_CC_C_O.
--m4_defun([_LT_COMPILER_C_O],
--[m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_TAG_COMPILER])dnl
--AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
--  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
--  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
--   $RM -r conftest 2>/dev/null
--   mkdir conftest
--   cd conftest
--   mkdir out
--   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--
--   lt_compiler_flag="-o out/conftest2.$ac_objext"
--   # Insert the option either (1) after the last *FLAGS variable, or
--   # (2) before a word containing "conftest.", or (3) at the end.
--   # Note that $ac_compile itself does not contain backslashes and begins
--   # with a dollar sign (not a hyphen), so the echo should work correctly.
--   lt_compile=`echo "$ac_compile" | $SED \
--   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
--   -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
--   (eval "$lt_compile" 2>out/conftest.err)
--   ac_status=$?
--   cat out/conftest.err >&AS_MESSAGE_LOG_FD
--   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
--   if (exit $ac_status) && test -s out/conftest2.$ac_objext
--   then
--     # The compiler can only warn and ignore the option if not recognized
--     # So say no if there are warnings
--     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
--     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
--     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
--       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
--     fi
--   fi
--   chmod u+w . 2>&AS_MESSAGE_LOG_FD
--   $RM conftest*
--   # SGI C++ compiler will create directory out/ii_files/ for
--   # template instantiation
--   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
--   $RM out/* && rmdir out
--   cd ..
--   $RM -r conftest
--   $RM conftest*
--])
--_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
--	[Does compiler simultaneously support -c and -o options?])
--])# _LT_COMPILER_C_O
--
--
--# _LT_COMPILER_FILE_LOCKS([TAGNAME])
--# ----------------------------------
--# Check to see if we can do hard links to lock some files if needed
--m4_defun([_LT_COMPILER_FILE_LOCKS],
--[m4_require([_LT_ENABLE_LOCK])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--_LT_COMPILER_C_O([$1])
--
--hard_links="nottested"
--if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
--  # do not overwrite the value of need_locks provided by the user
--  AC_MSG_CHECKING([if we can lock with hard links])
--  hard_links=yes
--  $RM conftest*
--  ln conftest.a conftest.b 2>/dev/null && hard_links=no
--  touch conftest.a
--  ln conftest.a conftest.b 2>&5 || hard_links=no
--  ln conftest.a conftest.b 2>/dev/null && hard_links=no
--  AC_MSG_RESULT([$hard_links])
--  if test "$hard_links" = no; then
--    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
--    need_locks=warn
--  fi
--else
--  need_locks=no
--fi
--_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
--])# _LT_COMPILER_FILE_LOCKS
--
--
--# _LT_CHECK_OBJDIR
--# ----------------
--m4_defun([_LT_CHECK_OBJDIR],
--[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
--[rm -f .libs 2>/dev/null
--mkdir .libs 2>/dev/null
--if test -d .libs; then
--  lt_cv_objdir=.libs
--else
--  # MS-DOS does not allow filenames that begin with a dot.
--  lt_cv_objdir=_libs
--fi
--rmdir .libs 2>/dev/null])
--objdir=$lt_cv_objdir
--_LT_DECL([], [objdir], [0],
--         [The name of the directory that contains temporary libtool files])dnl
--m4_pattern_allow([LT_OBJDIR])dnl
--AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
--  [Define to the sub-directory in which libtool stores uninstalled libraries.])
--])# _LT_CHECK_OBJDIR
--
--
--# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
--# --------------------------------------
--# Check hardcoding attributes.
--m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
--[AC_MSG_CHECKING([how to hardcode library paths into programs])
--_LT_TAGVAR(hardcode_action, $1)=
--if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
--   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
--   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
--
--  # We can hardcode non-existent directories.
--  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
--     # If the only mechanism to avoid hardcoding is shlibpath_var, we
--     # have to relink, otherwise we might link with an installed library
--     # when we should be linking with a yet-to-be-installed one
--     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
--     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
--    # Linking always hardcodes the temporary library directory.
--    _LT_TAGVAR(hardcode_action, $1)=relink
--  else
--    # We can link without hardcoding, and we can hardcode nonexisting dirs.
--    _LT_TAGVAR(hardcode_action, $1)=immediate
--  fi
--else
--  # We cannot hardcode anything, or else we can only hardcode existing
--  # directories.
--  _LT_TAGVAR(hardcode_action, $1)=unsupported
--fi
--AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
--
--if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
--   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
--  # Fast installation is not supported
--  enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
--     test "$enable_shared" = no; then
--  # Fast installation is not necessary
--  enable_fast_install=needless
--fi
--_LT_TAGDECL([], [hardcode_action], [0],
--    [How to hardcode a shared library path into an executable])
--])# _LT_LINKER_HARDCODE_LIBPATH
--
--
--# _LT_CMD_STRIPLIB
--# ----------------
--m4_defun([_LT_CMD_STRIPLIB],
--[m4_require([_LT_DECL_EGREP])
--striplib=
--old_striplib=
--AC_MSG_CHECKING([whether stripping libraries is possible])
--if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
--  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
--  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
--  AC_MSG_RESULT([yes])
--else
--# FIXME - insert some real tests, host_os isn't really good enough
--  case $host_os in
--  darwin*)
--    if test -n "$STRIP" ; then
--      striplib="$STRIP -x"
--      old_striplib="$STRIP -S"
--      AC_MSG_RESULT([yes])
--    else
--      AC_MSG_RESULT([no])
--    fi
--    ;;
--  *)
--    AC_MSG_RESULT([no])
--    ;;
--  esac
--fi
--_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
--_LT_DECL([], [striplib], [1])
--])# _LT_CMD_STRIPLIB
--
--
--# _LT_SYS_DYNAMIC_LINKER([TAG])
--# -----------------------------
--# PORTME Fill in your ld.so characteristics
--m4_defun([_LT_SYS_DYNAMIC_LINKER],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_OBJDUMP])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_CHECK_SHELL_FEATURES])dnl
--AC_MSG_CHECKING([dynamic linker characteristics])
--m4_if([$1],
--	[], [
--if test "$GCC" = yes; then
--  case $host_os in
--    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
--    *) lt_awk_arg="/^libraries:/" ;;
--  esac
--  case $host_os in
--    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
--    *) lt_sed_strip_eq="s,=/,/,g" ;;
--  esac
--  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
--  case $lt_search_path_spec in
--  *\;*)
--    # if the path contains ";" then we assume it to be the separator
--    # otherwise default to the standard path separator (i.e. ":") - it is
--    # assumed that no part of a normal pathname contains ";" but that should
--    # okay in the real world where ";" in dirpaths is itself problematic.
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
--    ;;
--  *)
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
--    ;;
--  esac
--  # Ok, now we have the path, separated by spaces, we can step through it
--  # and add multilib dir if necessary.
--  lt_tmp_lt_search_path_spec=
--  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
--  for lt_sys_path in $lt_search_path_spec; do
--    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
--      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
--    else
--      test -d "$lt_sys_path" && \
--	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
--    fi
--  done
--  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
--BEGIN {RS=" "; FS="/|\n";} {
--  lt_foo="";
--  lt_count=0;
--  for (lt_i = NF; lt_i > 0; lt_i--) {
--    if ($lt_i != "" && $lt_i != ".") {
--      if ($lt_i == "..") {
--        lt_count++;
--      } else {
--        if (lt_count == 0) {
--          lt_foo="/" $lt_i lt_foo;
--        } else {
--          lt_count--;
--        }
--      }
--    }
--  }
--  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
--  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
--}'`
--  # AWK program above erroneously prepends '/' to C:/dos/paths
--  # for these hosts.
--  case $host_os in
--    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
--      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
--  esac
--  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
--else
--  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--fi])
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--shrext_cmds=".so"
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--need_lib_prefix=unknown
--hardcode_into_libs=no
--
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
--
--case $host_os in
--aix3*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
--  shlibpath_var=LIBPATH
--
--  # AIX 3 has no versioning support, so we append a major version to the name.
--  soname_spec='${libname}${release}${shared_ext}$major'
--  ;;
--
--aix[[4-9]]*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  hardcode_into_libs=yes
--  if test "$host_cpu" = ia64; then
--    # AIX 5 supports IA64
--    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
--    shlibpath_var=LD_LIBRARY_PATH
--  else
--    # With GCC up to 2.95.x, collect2 would create an import file
--    # for dependence libraries.  The import file would start with
--    # the line `#! .'.  This would cause the generated library to
--    # depend on `.', always an invalid library.  This was fixed in
--    # development snapshots of GCC prior to 3.0.
--    case $host_os in
--      aix4 | aix4.[[01]] | aix4.[[01]].*)
--      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
--	   echo ' yes '
--	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
--	:
--      else
--	can_build_shared=no
--      fi
--      ;;
--    esac
--    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
--    # soname into executable. Probably we can add versioning support to
--    # collect2, so additional links can be useful in future.
--    if test "$aix_use_runtimelinking" = yes; then
--      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
--      # instead of lib<name>.a to let people know that these are not
--      # typical AIX shared libraries.
--      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    else
--      # We preserve .a as extension for shared libraries through AIX4.2
--      # and later when we are not doing run time linking.
--      library_names_spec='${libname}${release}.a $libname.a'
--      soname_spec='${libname}${release}${shared_ext}$major'
--    fi
--    shlibpath_var=LIBPATH
--  fi
--  ;;
--
--amigaos*)
--  case $host_cpu in
--  powerpc)
--    # Since July 2007 AmigaOS4 officially supports .so libraries.
--    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    ;;
--  m68k)
--    library_names_spec='$libname.ixlibrary $libname.a'
--    # Create ${libname}_ixlibrary.a entries in /sys/libs.
--    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
--    ;;
--  esac
--  ;;
--
--beos*)
--  library_names_spec='${libname}${shared_ext}'
--  dynamic_linker="$host_os ld.so"
--  shlibpath_var=LIBRARY_PATH
--  ;;
--
--bsdi[[45]]*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
--  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
--  # the default ld.so.conf also contains /usr/contrib/lib and
--  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
--  # libtool to hard-code these into programs
--  ;;
--
--cygwin* | mingw* | pw32* | cegcc*)
--  version_type=windows
--  shrext_cmds=".dll"
--  need_version=no
--  need_lib_prefix=no
--
--  case $GCC,$cc_basename in
--  yes,*)
--    # gcc
--    library_names_spec='$libname.dll.a'
--    # DLL is installed to $(libdir)/../bin by postinstall_cmds
--    postinstall_cmds='base_file=`basename \${file}`~
--      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
--      dldir=$destdir/`dirname \$dlpath`~
--      test -d \$dldir || mkdir -p \$dldir~
--      $install_prog $dir/$dlname \$dldir/$dlname~
--      chmod a+x \$dldir/$dlname~
--      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
--        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
--      fi'
--    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
--      dlpath=$dir/\$dldll~
--       $RM \$dlpath'
--    shlibpath_overrides_runpath=yes
--
--    case $host_os in
--    cygwin*)
--      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
--      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--m4_if([$1], [],[
--      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
--      ;;
--    mingw* | cegcc*)
--      # MinGW DLLs use traditional 'lib' prefix
--      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      ;;
--    pw32*)
--      # pw32 DLLs use 'pw' prefix rather than 'lib'
--      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      ;;
--    esac
--    dynamic_linker='Win32 ld.exe'
--    ;;
--
--  *,cl*)
--    # Native MSVC
--    libname_spec='$name'
--    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--    library_names_spec='${libname}.dll.lib'
--
--    case $build_os in
--    mingw*)
--      sys_lib_search_path_spec=
--      lt_save_ifs=$IFS
--      IFS=';'
--      for lt_path in $LIB
--      do
--        IFS=$lt_save_ifs
--        # Let DOS variable expansion print the short 8.3 style file name.
--        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
--        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
--      done
--      IFS=$lt_save_ifs
--      # Convert to MSYS style.
--      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
--      ;;
--    cygwin*)
--      # Convert to unix form, then to dos form, then back to unix form
--      # but this time dos style (no spaces!) so that the unix form looks
--      # like /cygdrive/c/PROGRA~1:/cygdr...
--      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
--      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
--      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
--      ;;
--    *)
--      sys_lib_search_path_spec="$LIB"
--      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
--        # It is most probably a Windows format PATH.
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
--      else
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
--      fi
--      # FIXME: find the short name or the path components, as spaces are
--      # common. (e.g. "Program Files" -> "PROGRA~1")
--      ;;
--    esac
--
--    # DLL is installed to $(libdir)/../bin by postinstall_cmds
--    postinstall_cmds='base_file=`basename \${file}`~
--      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
--      dldir=$destdir/`dirname \$dlpath`~
--      test -d \$dldir || mkdir -p \$dldir~
--      $install_prog $dir/$dlname \$dldir/$dlname'
--    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
--      dlpath=$dir/\$dldll~
--       $RM \$dlpath'
--    shlibpath_overrides_runpath=yes
--    dynamic_linker='Win32 link.exe'
--    ;;
--
--  *)
--    # Assume MSVC wrapper
--    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
--    dynamic_linker='Win32 ld.exe'
--    ;;
--  esac
--  # FIXME: first we should search . and the directory the executable is in
--  shlibpath_var=PATH
--  ;;
--
--darwin* | rhapsody*)
--  dynamic_linker="$host_os dyld"
--  version_type=darwin
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
--  soname_spec='${libname}${release}${major}$shared_ext'
--  shlibpath_overrides_runpath=yes
--  shlibpath_var=DYLD_LIBRARY_PATH
--  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
--m4_if([$1], [],[
--  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
--  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
--  ;;
--
--dgux*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--freebsd* | dragonfly*)
--  # DragonFly does not have aout.  When/if they implement a new
--  # versioning mechanism, adjust this.
--  if test -x /usr/bin/objformat; then
--    objformat=`/usr/bin/objformat`
--  else
--    case $host_os in
--    freebsd[[23]].*) objformat=aout ;;
--    *) objformat=elf ;;
--    esac
--  fi
--  version_type=freebsd-$objformat
--  case $version_type in
--    freebsd-elf*)
--      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
--      need_version=no
--      need_lib_prefix=no
--      ;;
--    freebsd-*)
--      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
--      need_version=yes
--      ;;
--  esac
--  shlibpath_var=LD_LIBRARY_PATH
--  case $host_os in
--  freebsd2.*)
--    shlibpath_overrides_runpath=yes
--    ;;
--  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
--    shlibpath_overrides_runpath=yes
--    hardcode_into_libs=yes
--    ;;
--  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
--  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
--    shlibpath_overrides_runpath=no
--    hardcode_into_libs=yes
--    ;;
--  *) # from 4.6 on, and DragonFly
--    shlibpath_overrides_runpath=yes
--    hardcode_into_libs=yes
--    ;;
--  esac
--  ;;
--
--gnu*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  ;;
--
--haiku*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  dynamic_linker="$host_os runtime_loader"
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
--  hardcode_into_libs=yes
--  ;;
--
--hpux9* | hpux10* | hpux11*)
--  # Give a soname corresponding to the major version so that dld.sl refuses to
--  # link against other versions.
--  version_type=sunos
--  need_lib_prefix=no
--  need_version=no
--  case $host_cpu in
--  ia64*)
--    shrext_cmds='.so'
--    hardcode_into_libs=yes
--    dynamic_linker="$host_os dld.so"
--    shlibpath_var=LD_LIBRARY_PATH
--    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    if test "X$HPUX_IA64_MODE" = X32; then
--      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
--    else
--      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
--    fi
--    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
--    ;;
--  hppa*64*)
--    shrext_cmds='.sl'
--    hardcode_into_libs=yes
--    dynamic_linker="$host_os dld.sl"
--    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
--    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
--    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
--    ;;
--  *)
--    shrext_cmds='.sl'
--    dynamic_linker="$host_os dld.sl"
--    shlibpath_var=SHLIB_PATH
--    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    ;;
--  esac
--  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
--  postinstall_cmds='chmod 555 $lib'
--  # or fails outright, so override atomically:
--  install_override_mode=555
--  ;;
--
--interix[[3-9]]*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  ;;
--
--irix5* | irix6* | nonstopux*)
--  case $host_os in
--    nonstopux*) version_type=nonstopux ;;
--    *)
--	if test "$lt_cv_prog_gnu_ld" = yes; then
--		version_type=linux # correct to gnu/linux during the next big refactor
--	else
--		version_type=irix
--	fi ;;
--  esac
--  need_lib_prefix=no
--  need_version=no
--  soname_spec='${libname}${release}${shared_ext}$major'
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
--  case $host_os in
--  irix5* | nonstopux*)
--    libsuff= shlibsuff=
--    ;;
--  *)
--    case $LD in # libtool.m4 will add one of these switches to LD
--    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
--      libsuff= shlibsuff= libmagic=32-bit;;
--    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
--      libsuff=32 shlibsuff=N32 libmagic=N32;;
--    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
--      libsuff=64 shlibsuff=64 libmagic=64-bit;;
--    *) libsuff= shlibsuff= libmagic=never-match;;
--    esac
--    ;;
--  esac
--  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
--  shlibpath_overrides_runpath=no
--  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
--  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
--  hardcode_into_libs=yes
--  ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
--  dynamic_linker=no
--  ;;
--
--linux*android*)
--  version_type=none # Android doesn't support versioned libraries.
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='$libname$release$shared_ext'
--  soname_spec='$libname$release$shared_ext'
--  finish_cmds=
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--
--  # This implies no fast_install, which is unacceptable.
--  # Some rework will be needed to allow for fast_install
--  # before this can be enabled.
--  hardcode_into_libs=yes
--
--  dynamic_linker='Android linker'
--  # Don't embed -rpath directories since the linker doesn't support them.
--  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--  ;;
--
--# This must be glibc/ELF.
--linux* | k*bsd*-gnu | kopensolaris*-gnu)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--
--  # Some binutils ld are patched to set DT_RUNPATH
--  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
--    [lt_cv_shlibpath_overrides_runpath=no
--    save_LDFLAGS=$LDFLAGS
--    save_libdir=$libdir
--    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
--	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
--    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
--      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
--	 [lt_cv_shlibpath_overrides_runpath=yes])])
--    LDFLAGS=$save_LDFLAGS
--    libdir=$save_libdir
--    ])
--  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
--
--  # This implies no fast_install, which is unacceptable.
--  # Some rework will be needed to allow for fast_install
--  # before this can be enabled.
--  hardcode_into_libs=yes
--
--  # Append ld.so.conf contents to the search path
--  if test -f /etc/ld.so.conf; then
--    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
--  fi
--
--  # We used to test for /lib/ld.so.1 and disable shared libraries on
--  # powerpc, because MkLinux only supported shared libraries with the
--  # GNU dynamic linker.  Since this was broken with cross compilers,
--  # most powerpc-linux boxes support dynamic linking these days and
--  # people can always --disable-shared, the test was removed, and we
--  # assume the GNU/Linux dynamic linker is in use.
--  dynamic_linker='GNU/Linux ld.so'
--  ;;
--
--netbsdelf*-gnu)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  dynamic_linker='NetBSD ld.elf_so'
--  ;;
--
--netbsd*)
--  version_type=sunos
--  need_lib_prefix=no
--  need_version=no
--  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
--    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
--    dynamic_linker='NetBSD (a.out) ld.so'
--  else
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    dynamic_linker='NetBSD ld.elf_so'
--  fi
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  hardcode_into_libs=yes
--  ;;
--
--newsos6)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  ;;
--
--*nto* | *qnx*)
--  version_type=qnx
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  dynamic_linker='ldqnx.so'
--  ;;
--
--openbsd*)
--  version_type=sunos
--  sys_lib_dlsearch_path_spec="/usr/lib"
--  need_lib_prefix=no
--  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
--  case $host_os in
--    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
--    *)				need_version=no  ;;
--  esac
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--    case $host_os in
--      openbsd2.[[89]] | openbsd2.[[89]].*)
--	shlibpath_overrides_runpath=no
--	;;
--      *)
--	shlibpath_overrides_runpath=yes
--	;;
--      esac
--  else
--    shlibpath_overrides_runpath=yes
--  fi
--  ;;
--
--os2*)
--  libname_spec='$name'
--  shrext_cmds=".dll"
--  need_lib_prefix=no
--  library_names_spec='$libname${shared_ext} $libname.a'
--  dynamic_linker='OS/2 ld.exe'
--  shlibpath_var=LIBPATH
--  ;;
--
--osf3* | osf4* | osf5*)
--  version_type=osf
--  need_lib_prefix=no
--  need_version=no
--  soname_spec='${libname}${release}${shared_ext}$major'
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  shlibpath_var=LD_LIBRARY_PATH
--  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
--  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
--  ;;
--
--rdos*)
--  dynamic_linker=no
--  ;;
--
--solaris*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  hardcode_into_libs=yes
--  # ldd complains unless libraries are executable
--  postinstall_cmds='chmod +x $lib'
--  ;;
--
--sunos4*)
--  version_type=sunos
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
--  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  if test "$with_gnu_ld" = yes; then
--    need_lib_prefix=no
--  fi
--  need_version=yes
--  ;;
--
--sysv4 | sysv4.3*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  case $host_vendor in
--    sni)
--      shlibpath_overrides_runpath=no
--      need_lib_prefix=no
--      runpath_var=LD_RUN_PATH
--      ;;
--    siemens)
--      need_lib_prefix=no
--      ;;
--    motorola)
--      need_lib_prefix=no
--      need_version=no
--      shlibpath_overrides_runpath=no
--      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
--      ;;
--  esac
--  ;;
--
--sysv4*MP*)
--  if test -d /usr/nec ;then
--    version_type=linux # correct to gnu/linux during the next big refactor
--    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
--    soname_spec='$libname${shared_ext}.$major'
--    shlibpath_var=LD_LIBRARY_PATH
--  fi
--  ;;
--
--sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
--  version_type=freebsd-elf
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  hardcode_into_libs=yes
--  if test "$with_gnu_ld" = yes; then
--    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
--  else
--    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
--    case $host_os in
--      sco3.2v5*)
--        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
--	;;
--    esac
--  fi
--  sys_lib_dlsearch_path_spec='/usr/lib'
--  ;;
--
--tpf*)
--  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
--  version_type=linux # correct to gnu/linux during the next big refactor
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  ;;
--
--uts4*)
--  version_type=linux # correct to gnu/linux during the next big refactor
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--*)
--  dynamic_linker=no
--  ;;
--esac
--AC_MSG_RESULT([$dynamic_linker])
--test "$dynamic_linker" = no && can_build_shared=no
--
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
--  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
--
--if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
--  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
--fi
--if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
--  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
--fi
--
--_LT_DECL([], [variables_saved_for_relink], [1],
--    [Variables whose values should be saved in libtool wrapper scripts and
--    restored at link time])
--_LT_DECL([], [need_lib_prefix], [0],
--    [Do we need the "lib" prefix for modules?])
--_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
--_LT_DECL([], [version_type], [0], [Library versioning type])
--_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
--_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
--_LT_DECL([], [shlibpath_overrides_runpath], [0],
--    [Is shlibpath searched before the hard-coded library search path?])
--_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
--_LT_DECL([], [library_names_spec], [1],
--    [[List of archive names.  First name is the real one, the rest are links.
--    The last name is the one that the linker finds with -lNAME]])
--_LT_DECL([], [soname_spec], [1],
--    [[The coded name of the library, if different from the real name]])
--_LT_DECL([], [install_override_mode], [1],
--    [Permission mode override for installation of shared libraries])
--_LT_DECL([], [postinstall_cmds], [2],
--    [Command to use after installation of a shared archive])
--_LT_DECL([], [postuninstall_cmds], [2],
--    [Command to use after uninstallation of a shared archive])
--_LT_DECL([], [finish_cmds], [2],
--    [Commands used to finish a libtool library installation in a directory])
--_LT_DECL([], [finish_eval], [1],
--    [[As "finish_cmds", except a single script fragment to be evaled but
--    not shown]])
--_LT_DECL([], [hardcode_into_libs], [0],
--    [Whether we should hardcode library paths into libraries])
--_LT_DECL([], [sys_lib_search_path_spec], [2],
--    [Compile-time system search path for libraries])
--_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
--    [Run-time system search path for libraries])
--])# _LT_SYS_DYNAMIC_LINKER
--
--
--# _LT_PATH_TOOL_PREFIX(TOOL)
--# --------------------------
--# find a file program which can recognize shared library
--AC_DEFUN([_LT_PATH_TOOL_PREFIX],
--[m4_require([_LT_DECL_EGREP])dnl
--AC_MSG_CHECKING([for $1])
--AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
--[case $MAGIC_CMD in
--[[\\/*] |  ?:[\\/]*])
--  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
--  ;;
--*)
--  lt_save_MAGIC_CMD="$MAGIC_CMD"
--  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--dnl $ac_dummy forces splitting on constant user-supplied paths.
--dnl POSIX.2 word splitting is done only on the output of word expansions,
--dnl not every word.  This closes a longstanding sh security hole.
--  ac_dummy="m4_if([$2], , $PATH, [$2])"
--  for ac_dir in $ac_dummy; do
--    IFS="$lt_save_ifs"
--    test -z "$ac_dir" && ac_dir=.
--    if test -f $ac_dir/$1; then
--      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
--      if test -n "$file_magic_test_file"; then
--	case $deplibs_check_method in
--	"file_magic "*)
--	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
--	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
--	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
--	    $EGREP "$file_magic_regex" > /dev/null; then
--	    :
--	  else
--	    cat <<_LT_EOF 1>&2
--
--*** Warning: the command libtool uses to detect shared libraries,
--*** $file_magic_cmd, produces output that libtool cannot recognize.
--*** The result is that libtool may fail to recognize shared libraries
--*** as such.  This will affect the creation of libtool libraries that
--*** depend on shared libraries, but programs linked with such libtool
--*** libraries will work regardless of this problem.  Nevertheless, you
--*** may want to report the problem to your system manager and/or to
--*** bug-libtool at gnu.org
--
--_LT_EOF
--	  fi ;;
--	esac
--      fi
--      break
--    fi
--  done
--  IFS="$lt_save_ifs"
--  MAGIC_CMD="$lt_save_MAGIC_CMD"
--  ;;
--esac])
--MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
--if test -n "$MAGIC_CMD"; then
--  AC_MSG_RESULT($MAGIC_CMD)
--else
--  AC_MSG_RESULT(no)
--fi
--_LT_DECL([], [MAGIC_CMD], [0],
--	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
--])# _LT_PATH_TOOL_PREFIX
--
--# Old name:
--AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
--
--
--# _LT_PATH_MAGIC
--# --------------
--# find a file program which can recognize a shared library
--m4_defun([_LT_PATH_MAGIC],
--[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
--if test -z "$lt_cv_path_MAGIC_CMD"; then
--  if test -n "$ac_tool_prefix"; then
--    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
--  else
--    MAGIC_CMD=:
--  fi
--fi
--])# _LT_PATH_MAGIC
--
--
--# LT_PATH_LD
--# ----------
--# find the pathname to the GNU or non-GNU linker
--AC_DEFUN([LT_PATH_LD],
--[AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
--
--AC_ARG_WITH([gnu-ld],
--    [AS_HELP_STRING([--with-gnu-ld],
--	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
--    [test "$withval" = no || with_gnu_ld=yes],
--    [with_gnu_ld=no])dnl
--
--ac_prog=ld
--if test "$GCC" = yes; then
--  # Check if gcc -print-prog-name=ld gives a path.
--  AC_MSG_CHECKING([for ld used by $CC])
--  case $host in
--  *-*-mingw*)
--    # gcc leaves a trailing carriage return which upsets mingw
--    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
--  *)
--    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
--  esac
--  case $ac_prog in
--    # Accept absolute paths.
--    [[\\/]]* | ?:[[\\/]]*)
--      re_direlt='/[[^/]][[^/]]*/\.\./'
--      # Canonicalize the pathname of ld
--      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
--      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
--	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
--      done
--      test -z "$LD" && LD="$ac_prog"
--      ;;
--  "")
--    # If it fails, then pretend we aren't using GCC.
--    ac_prog=ld
--    ;;
--  *)
--    # If it is relative, then search for the first ld in PATH.
--    with_gnu_ld=unknown
--    ;;
--  esac
--elif test "$with_gnu_ld" = yes; then
--  AC_MSG_CHECKING([for GNU ld])
--else
--  AC_MSG_CHECKING([for non-GNU ld])
--fi
--AC_CACHE_VAL(lt_cv_path_LD,
--[if test -z "$LD"; then
--  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--  for ac_dir in $PATH; do
--    IFS="$lt_save_ifs"
--    test -z "$ac_dir" && ac_dir=.
--    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
--      lt_cv_path_LD="$ac_dir/$ac_prog"
--      # Check to see if the program is GNU ld.  I'd rather use --version,
--      # but apparently some variants of GNU ld only accept -v.
--      # Break only if it was the GNU/non-GNU ld that we prefer.
--      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
--      *GNU* | *'with BFD'*)
--	test "$with_gnu_ld" != no && break
--	;;
--      *)
--	test "$with_gnu_ld" != yes && break
--	;;
--      esac
--    fi
--  done
--  IFS="$lt_save_ifs"
--else
--  lt_cv_path_LD="$LD" # Let the user override the test with a path.
--fi])
--LD="$lt_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])
--_LT_PATH_LD_GNU
--AC_SUBST([LD])
--
--_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
--])# LT_PATH_LD
--
--# Old names:
--AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
--AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_PROG_LD], [])
--dnl AC_DEFUN([AC_PROG_LD], [])
--
--
--# _LT_PATH_LD_GNU
--#- --------------
--m4_defun([_LT_PATH_LD_GNU],
--[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
--[# I'd rather use --version here, but apparently some GNU lds only accept -v.
--case `$LD -v 2>&1 </dev/null` in
--*GNU* | *'with BFD'*)
--  lt_cv_prog_gnu_ld=yes
--  ;;
--*)
--  lt_cv_prog_gnu_ld=no
--  ;;
--esac])
--with_gnu_ld=$lt_cv_prog_gnu_ld
--])# _LT_PATH_LD_GNU
--
--
--# _LT_CMD_RELOAD
--# --------------
--# find reload flag for linker
--#   -- PORTME Some linkers may need a different reload flag.
--m4_defun([_LT_CMD_RELOAD],
--[AC_CACHE_CHECK([for $LD option to reload object files],
--  lt_cv_ld_reload_flag,
--  [lt_cv_ld_reload_flag='-r'])
--reload_flag=$lt_cv_ld_reload_flag
--case $reload_flag in
--"" | " "*) ;;
--*) reload_flag=" $reload_flag" ;;
--esac
--reload_cmds='$LD$reload_flag -o $output$reload_objs'
--case $host_os in
--  cygwin* | mingw* | pw32* | cegcc*)
--    if test "$GCC" != yes; then
--      reload_cmds=false
--    fi
--    ;;
--  darwin*)
--    if test "$GCC" = yes; then
--      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
--    else
--      reload_cmds='$LD$reload_flag -o $output$reload_objs'
--    fi
--    ;;
--esac
--_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
--_LT_TAGDECL([], [reload_cmds], [2])dnl
--])# _LT_CMD_RELOAD
--
--
--# _LT_CHECK_MAGIC_METHOD
--# ----------------------
--# how to check for library dependencies
--#  -- PORTME fill in with the dynamic library characteristics
--m4_defun([_LT_CHECK_MAGIC_METHOD],
--[m4_require([_LT_DECL_EGREP])
--m4_require([_LT_DECL_OBJDUMP])
--AC_CACHE_CHECK([how to recognize dependent libraries],
--lt_cv_deplibs_check_method,
--[lt_cv_file_magic_cmd='$MAGIC_CMD'
--lt_cv_file_magic_test_file=
--lt_cv_deplibs_check_method='unknown'
--# Need to set the preceding variable on all platforms that support
--# interlibrary dependencies.
--# 'none' -- dependencies not supported.
--# `unknown' -- same as none, but documents that we really don't know.
--# 'pass_all' -- all dependencies passed with no checks.
--# 'test_compile' -- check by making test program.
--# 'file_magic [[regex]]' -- check by looking for files in library path
--# which responds to the $file_magic_cmd with a given extended regex.
--# If you have `file' or equivalent on your system and you're not sure
--# whether `pass_all' will *always* work, you probably want this one.
--
--case $host_os in
--aix[[4-9]]*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--beos*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--bsdi[[45]]*)
--  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
--  lt_cv_file_magic_cmd='/usr/bin/file -L'
--  lt_cv_file_magic_test_file=/shlib/libc.so
--  ;;
--
--cygwin*)
--  # func_win32_libid is a shell function defined in ltmain.sh
--  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
--  lt_cv_file_magic_cmd='func_win32_libid'
--  ;;
--
--mingw* | pw32*)
--  # Base MSYS/MinGW do not provide the 'file' command needed by
--  # func_win32_libid shell function, so use a weaker test based on 'objdump',
--  # unless we find 'file', for example because we are cross-compiling.
--  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
--  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
--    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
--    lt_cv_file_magic_cmd='func_win32_libid'
--  else
--    # Keep this pattern in sync with the one in func_win32_libid.
--    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
--    lt_cv_file_magic_cmd='$OBJDUMP -f'
--  fi
--  ;;
--
--cegcc*)
--  # use the weaker test based on 'objdump'. See mingw*.
--  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
--  lt_cv_file_magic_cmd='$OBJDUMP -f'
--  ;;
--
--darwin* | rhapsody*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--freebsd* | dragonfly*)
--  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
--    case $host_cpu in
--    i*86 )
--      # Not sure whether the presence of OpenBSD here was a mistake.
--      # Let's accept both of them until this is cleared up.
--      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
--      lt_cv_file_magic_cmd=/usr/bin/file
--      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
--      ;;
--    esac
--  else
--    lt_cv_deplibs_check_method=pass_all
--  fi
--  ;;
--
--gnu*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--haiku*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--hpux10.20* | hpux11*)
--  lt_cv_file_magic_cmd=/usr/bin/file
--  case $host_cpu in
--  ia64*)
--    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
--    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
--    ;;
--  hppa*64*)
--    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
--    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
--    ;;
--  *)
--    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
--    lt_cv_file_magic_test_file=/usr/lib/libc.sl
--    ;;
--  esac
--  ;;
--
--interix[[3-9]]*)
--  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
--  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
--  ;;
--
--irix5* | irix6* | nonstopux*)
--  case $LD in
--  *-32|*"-32 ") libmagic=32-bit;;
--  *-n32|*"-n32 ") libmagic=N32;;
--  *-64|*"-64 ") libmagic=64-bit;;
--  *) libmagic=never-match;;
--  esac
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--# This must be glibc/ELF.
--linux* | k*bsd*-gnu | kopensolaris*-gnu)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--netbsd* | netbsdelf*-gnu)
--  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
--  else
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
--  fi
--  ;;
--
--newos6*)
--  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
--  lt_cv_file_magic_cmd=/usr/bin/file
--  lt_cv_file_magic_test_file=/usr/lib/libnls.so
--  ;;
--
--*nto* | *qnx*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--openbsd*)
--  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
--  else
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
--  fi
--  ;;
--
--osf3* | osf4* | osf5*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--rdos*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--solaris*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--sysv4 | sysv4.3*)
--  case $host_vendor in
--  motorola)
--    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
--    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
--    ;;
--  ncr)
--    lt_cv_deplibs_check_method=pass_all
--    ;;
--  sequent)
--    lt_cv_file_magic_cmd='/bin/file'
--    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
--    ;;
--  sni)
--    lt_cv_file_magic_cmd='/bin/file'
--    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
--    lt_cv_file_magic_test_file=/lib/libc.so
--    ;;
--  siemens)
--    lt_cv_deplibs_check_method=pass_all
--    ;;
--  pc)
--    lt_cv_deplibs_check_method=pass_all
--    ;;
--  esac
--  ;;
--
--tpf*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--esac
--])
--
--file_magic_glob=
--want_nocaseglob=no
--if test "$build" = "$host"; then
--  case $host_os in
--  mingw* | pw32*)
--    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
--      want_nocaseglob=yes
--    else
--      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
--    fi
--    ;;
--  esac
--fi
--
--file_magic_cmd=$lt_cv_file_magic_cmd
--deplibs_check_method=$lt_cv_deplibs_check_method
--test -z "$deplibs_check_method" && deplibs_check_method=unknown
--
--_LT_DECL([], [deplibs_check_method], [1],
--    [Method to check whether dependent libraries are shared objects])
--_LT_DECL([], [file_magic_cmd], [1],
--    [Command to use when deplibs_check_method = "file_magic"])
--_LT_DECL([], [file_magic_glob], [1],
--    [How to find potential files when deplibs_check_method = "file_magic"])
--_LT_DECL([], [want_nocaseglob], [1],
--    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
--])# _LT_CHECK_MAGIC_METHOD
--
--
--# LT_PATH_NM
--# ----------
--# find the pathname to a BSD- or MS-compatible name lister
--AC_DEFUN([LT_PATH_NM],
--[AC_REQUIRE([AC_PROG_CC])dnl
--AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
--[if test -n "$NM"; then
--  # Let the user override the test.
--  lt_cv_path_NM="$NM"
--else
--  lt_nm_to_check="${ac_tool_prefix}nm"
--  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
--    lt_nm_to_check="$lt_nm_to_check nm"
--  fi
--  for lt_tmp_nm in $lt_nm_to_check; do
--    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
--      IFS="$lt_save_ifs"
--      test -z "$ac_dir" && ac_dir=.
--      tmp_nm="$ac_dir/$lt_tmp_nm"
--      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
--	# Check to see if the nm accepts a BSD-compat flag.
--	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
--	#   nm: unknown option "B" ignored
--	# Tru64's nm complains that /dev/null is an invalid object file
--	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
--	*/dev/null* | *'Invalid file or object type'*)
--	  lt_cv_path_NM="$tmp_nm -B"
--	  break
--	  ;;
--	*)
--	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
--	  */dev/null*)
--	    lt_cv_path_NM="$tmp_nm -p"
--	    break
--	    ;;
--	  *)
--	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
--	    continue # so that we can try to find one that supports BSD flags
--	    ;;
--	  esac
--	  ;;
--	esac
--      fi
--    done
--    IFS="$lt_save_ifs"
--  done
--  : ${lt_cv_path_NM=no}
--fi])
--if test "$lt_cv_path_NM" != "no"; then
--  NM="$lt_cv_path_NM"
--else
--  # Didn't find any BSD compatible name lister, look for dumpbin.
--  if test -n "$DUMPBIN"; then :
--    # Let the user override the test.
--  else
--    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
--    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
--    *COFF*)
--      DUMPBIN="$DUMPBIN -symbols"
--      ;;
--    *)
--      DUMPBIN=:
--      ;;
--    esac
--  fi
--  AC_SUBST([DUMPBIN])
--  if test "$DUMPBIN" != ":"; then
--    NM="$DUMPBIN"
--  fi
--fi
--test -z "$NM" && NM=nm
--AC_SUBST([NM])
--_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
--
--AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
--  [lt_cv_nm_interface="BSD nm"
--  echo "int some_variable = 0;" > conftest.$ac_ext
--  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
--  (eval "$ac_compile" 2>conftest.err)
--  cat conftest.err >&AS_MESSAGE_LOG_FD
--  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
--  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
--  cat conftest.err >&AS_MESSAGE_LOG_FD
--  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
--  cat conftest.out >&AS_MESSAGE_LOG_FD
--  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
--    lt_cv_nm_interface="MS dumpbin"
--  fi
--  rm -f conftest*])
--])# LT_PATH_NM
--
--# Old names:
--AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
--AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_PROG_NM], [])
--dnl AC_DEFUN([AC_PROG_NM], [])
--
--# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
--# --------------------------------
--# how to determine the name of the shared library
--# associated with a specific link library.
--#  -- PORTME fill in with the dynamic library characteristics
--m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
--[m4_require([_LT_DECL_EGREP])
--m4_require([_LT_DECL_OBJDUMP])
--m4_require([_LT_DECL_DLLTOOL])
--AC_CACHE_CHECK([how to associate runtime and link libraries],
--lt_cv_sharedlib_from_linklib_cmd,
--[lt_cv_sharedlib_from_linklib_cmd='unknown'
--
--case $host_os in
--cygwin* | mingw* | pw32* | cegcc*)
--  # two different shell functions defined in ltmain.sh
--  # decide which to use based on capabilities of $DLLTOOL
--  case `$DLLTOOL --help 2>&1` in
--  *--identify-strict*)
--    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
--    ;;
--  *)
--    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
--    ;;
--  esac
--  ;;
--*)
--  # fallback: assume linklib IS sharedlib
--  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
--  ;;
--esac
--])
--sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
--test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
--
--_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
--    [Command to associate shared and link libraries])
--])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
--
--
--# _LT_PATH_MANIFEST_TOOL
--# ----------------------
--# locate the manifest tool
--m4_defun([_LT_PATH_MANIFEST_TOOL],
--[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
--test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
--AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
--  [lt_cv_path_mainfest_tool=no
--  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
--  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
--  cat conftest.err >&AS_MESSAGE_LOG_FD
--  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
--    lt_cv_path_mainfest_tool=yes
--  fi
--  rm -f conftest*])
--if test "x$lt_cv_path_mainfest_tool" != xyes; then
--  MANIFEST_TOOL=:
--fi
--_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
--])# _LT_PATH_MANIFEST_TOOL
--
--
--# LT_LIB_M
--# --------
--# check for math library
--AC_DEFUN([LT_LIB_M],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--LIBM=
--case $host in
--*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
--  # These system don't have libm, or don't need it
--  ;;
--*-ncr-sysv4.3*)
--  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
--  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
--  ;;
--*)
--  AC_CHECK_LIB(m, cos, LIBM="-lm")
--  ;;
--esac
--AC_SUBST([LIBM])
--])# LT_LIB_M
--
--# Old name:
--AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_CHECK_LIBM], [])
--
--
--# _LT_COMPILER_NO_RTTI([TAGNAME])
--# -------------------------------
--m4_defun([_LT_COMPILER_NO_RTTI],
--[m4_require([_LT_TAG_COMPILER])dnl
--
--_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
--
--if test "$GCC" = yes; then
--  case $cc_basename in
--  nvcc*)
--    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
--  *)
--    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
--  esac
--
--  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
--    lt_cv_prog_compiler_rtti_exceptions,
--    [-fno-rtti -fno-exceptions], [],
--    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
--fi
--_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
--	[Compiler flag to turn off builtin functions])
--])# _LT_COMPILER_NO_RTTI
--
--
--# _LT_CMD_GLOBAL_SYMBOLS
--# ----------------------
--m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([AC_PROG_AWK])dnl
--AC_REQUIRE([LT_PATH_NM])dnl
--AC_REQUIRE([LT_PATH_LD])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_TAG_COMPILER])dnl
--
--# Check for command to grab the raw symbol name followed by C symbol from nm.
--AC_MSG_CHECKING([command to parse $NM output from $compiler object])
--AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
--[
--# These are sane defaults that work on at least a few old systems.
--# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
--
--# Character class describing NM global symbol codes.
--symcode='[[BCDEGRST]]'
--
--# Regexp to match symbols that can be accessed directly from C.
--sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
--
--# Define system-specific variables.
--case $host_os in
--aix*)
--  symcode='[[BCDT]]'
--  ;;
--cygwin* | mingw* | pw32* | cegcc*)
--  symcode='[[ABCDGISTW]]'
--  ;;
--hpux*)
--  if test "$host_cpu" = ia64; then
--    symcode='[[ABCDEGRST]]'
--  fi
--  ;;
--irix* | nonstopux*)
--  symcode='[[BCDEGRST]]'
--  ;;
--osf*)
--  symcode='[[BCDEGQRST]]'
--  ;;
--solaris*)
--  symcode='[[BDRT]]'
--  ;;
--sco3.2v5*)
--  symcode='[[DT]]'
--  ;;
--sysv4.2uw2*)
--  symcode='[[DT]]'
--  ;;
--sysv5* | sco5v6* | unixware* | OpenUNIX*)
--  symcode='[[ABDT]]'
--  ;;
--sysv4)
--  symcode='[[DFNSTU]]'
--  ;;
--esac
--
--# If we're using GNU nm, then use its standard symbol codes.
--case `$NM -V 2>&1` in
--*GNU* | *'with BFD'*)
--  symcode='[[ABCDGIRSTW]]' ;;
--esac
--
--# Transform an extracted symbol line into a proper C declaration.
--# Some systems (esp. on ia64) link data and code symbols differently,
--# so use this general approach.
--lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
--
--# Transform an extracted symbol line into symbol name and symbol address
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
--
--# Handle CRLF in mingw tool chain
--opt_cr=
--case $build_os in
--mingw*)
--  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
--  ;;
--esac
--
--# Try without a prefix underscore, then with it.
--for ac_symprfx in "" "_"; do
--
--  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
--  symxfrm="\\1 $ac_symprfx\\2 \\2"
--
--  # Write the raw and C identifiers.
--  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
--    # Fake it for dumpbin and say T for any non-static function
--    # and D for any global variable.
--    # Also find C++ and __fastcall symbols from MSVC++,
--    # which start with @ or ?.
--    lt_cv_sys_global_symbol_pipe="$AWK ['"\
--"     {last_section=section; section=\$ 3};"\
--"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
--"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
--"     \$ 0!~/External *\|/{next};"\
--"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
--"     {if(hide[section]) next};"\
--"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
--"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
--"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
--"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
--"     ' prfx=^$ac_symprfx]"
--  else
--    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
--  fi
--  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
--
--  # Check to see that the pipe works correctly.
--  pipe_works=no
--
--  rm -f conftest*
--  cat > conftest.$ac_ext <<_LT_EOF
--#ifdef __cplusplus
--extern "C" {
--#endif
--char nm_test_var;
--void nm_test_func(void);
--void nm_test_func(void){}
--#ifdef __cplusplus
--}
--#endif
--int main(){nm_test_var='a';nm_test_func();return(0);}
--_LT_EOF
--
--  if AC_TRY_EVAL(ac_compile); then
--    # Now try to grab the symbols.
--    nlist=conftest.nm
--    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
--      # Try sorting and uniquifying the output.
--      if sort "$nlist" | uniq > "$nlist"T; then
--	mv -f "$nlist"T "$nlist"
--      else
--	rm -f "$nlist"T
--      fi
--
--      # Make sure that we snagged all the symbols we need.
--      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
--	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
--	  cat <<_LT_EOF > conftest.$ac_ext
--/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
--#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
--/* DATA imports from DLLs on WIN32 con't be const, because runtime
--   relocations are performed -- see ld's documentation on pseudo-relocs.  */
--# define LT@&t at _DLSYM_CONST
--#elif defined(__osf__)
--/* This system does not cope well with relocations in const data.  */
--# define LT@&t at _DLSYM_CONST
--#else
--# define LT@&t at _DLSYM_CONST const
--#endif
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--_LT_EOF
--	  # Now generate the symbol file.
--	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
--
--	  cat <<_LT_EOF >> conftest.$ac_ext
--
--/* The mapping between symbol names and symbols.  */
--LT@&t at _DLSYM_CONST struct {
--  const char *name;
--  void       *address;
--}
--lt__PROGRAM__LTX_preloaded_symbols[[]] =
--{
--  { "@PROGRAM@", (void *) 0 },
--_LT_EOF
--	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
--	  cat <<\_LT_EOF >> conftest.$ac_ext
--  {0, (void *) 0}
--};
--
--/* This works around a problem in FreeBSD linker */
--#ifdef FREEBSD_WORKAROUND
--static const void *lt_preloaded_setup() {
--  return lt__PROGRAM__LTX_preloaded_symbols;
--}
--#endif
--
--#ifdef __cplusplus
--}
--#endif
--_LT_EOF
--	  # Now try linking the two files.
--	  mv conftest.$ac_objext conftstm.$ac_objext
--	  lt_globsym_save_LIBS=$LIBS
--	  lt_globsym_save_CFLAGS=$CFLAGS
--	  LIBS="conftstm.$ac_objext"
--	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
--	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
--	    pipe_works=yes
--	  fi
--	  LIBS=$lt_globsym_save_LIBS
--	  CFLAGS=$lt_globsym_save_CFLAGS
--	else
--	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
--	fi
--      else
--	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
--      fi
--    else
--      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
--    fi
--  else
--    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
--    cat conftest.$ac_ext >&5
--  fi
--  rm -rf conftest* conftst*
--
--  # Do not use the global_symbol_pipe unless it works.
--  if test "$pipe_works" = yes; then
--    break
--  else
--    lt_cv_sys_global_symbol_pipe=
--  fi
--done
--])
--if test -z "$lt_cv_sys_global_symbol_pipe"; then
--  lt_cv_sys_global_symbol_to_cdecl=
--fi
--if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
--  AC_MSG_RESULT(failed)
--else
--  AC_MSG_RESULT(ok)
--fi
--
--# Response file support.
--if test "$lt_cv_nm_interface" = "MS dumpbin"; then
--  nm_file_list_spec='@'
--elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
--  nm_file_list_spec='@'
--fi
--
--_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
--    [Take the output of nm and produce a listing of raw symbols and C names])
--_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
--    [Transform the output of nm in a proper C declaration])
--_LT_DECL([global_symbol_to_c_name_address],
--    [lt_cv_sys_global_symbol_to_c_name_address], [1],
--    [Transform the output of nm in a C name address pair])
--_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
--    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
--    [Transform the output of nm in a C name address pair when lib prefix is needed])
--_LT_DECL([], [nm_file_list_spec], [1],
--    [Specify filename containing input files for $NM])
--]) # _LT_CMD_GLOBAL_SYMBOLS
--
--
--# _LT_COMPILER_PIC([TAGNAME])
--# ---------------------------
--m4_defun([_LT_COMPILER_PIC],
--[m4_require([_LT_TAG_COMPILER])dnl
--_LT_TAGVAR(lt_prog_compiler_wl, $1)=
--_LT_TAGVAR(lt_prog_compiler_pic, $1)=
--_LT_TAGVAR(lt_prog_compiler_static, $1)=
--
--m4_if([$1], [CXX], [
--  # C++ specific cases for pic, static, wl, etc.
--  if test "$GXX" = yes; then
--    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--
--    case $host_os in
--    aix*)
--      # All AIX code is PIC.
--      if test "$host_cpu" = ia64; then
--	# AIX 5 now supports IA64 processor
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--        ;;
--      m68k)
--            # FIXME: we need at least 68020 code to build shared libraries, but
--            # adding the `-m68020' flag to GCC prevents building anything better,
--            # like `-m68040'.
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
--        ;;
--      esac
--      ;;
--
--    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
--      # PIC is the default for these OSes.
--      ;;
--    mingw* | cygwin* | os2* | pw32* | cegcc*)
--      # This hack is so that the source file can tell whether it is being
--      # built for inclusion in a dll (and should export symbols for example).
--      # Although the cygwin gcc ignores -fPIC, still need this for old-style
--      # (--disable-auto-import) libraries
--      m4_if([$1], [GCJ], [],
--	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--      ;;
--    darwin* | rhapsody*)
--      # PIC is the default on this platform
--      # Common symbols not allowed in MH_DYLIB files
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
--      ;;
--    *djgpp*)
--      # DJGPP does not support shared libraries at all
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--      ;;
--    haiku*)
--      # PIC is the default for Haiku.
--      # The "-static" flag exists, but is broken.
--      _LT_TAGVAR(lt_prog_compiler_static, $1)=
--      ;;
--    interix[[3-9]]*)
--      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
--      # Instead, we relocate shared libraries at runtime.
--      ;;
--    sysv4*MP*)
--      if test -d /usr/nec; then
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
--      fi
--      ;;
--    hpux*)
--      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
--      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
--      # sets the default TLS model and affects inlining.
--      case $host_cpu in
--      hppa*64*)
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	;;
--      esac
--      ;;
--    *qnx* | *nto*)
--      # QNX uses GNU C++, but need to define -shared option too, otherwise
--      # it will coredump.
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--      ;;
--    *)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--      ;;
--    esac
--  else
--    case $host_os in
--      aix[[4-9]]*)
--	# All AIX code is PIC.
--	if test "$host_cpu" = ia64; then
--	  # AIX 5 now supports IA64 processor
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	else
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
--	fi
--	;;
--      chorus*)
--	case $cc_basename in
--	cxch68*)
--	  # Green Hills C++ Compiler
--	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
--	  ;;
--	esac
--	;;
--      mingw* | cygwin* | os2* | pw32* | cegcc*)
--	# This hack is so that the source file can tell whether it is being
--	# built for inclusion in a dll (and should export symbols for example).
--	m4_if([$1], [GCJ], [],
--	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--	;;
--      dgux*)
--	case $cc_basename in
--	  ec++*)
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    ;;
--	  ghcx*)
--	    # Green Hills C++ Compiler
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      freebsd* | dragonfly*)
--	# FreeBSD uses GNU C++
--	;;
--      hpux9* | hpux10* | hpux11*)
--	case $cc_basename in
--	  CC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
--	    if test "$host_cpu" != ia64; then
--	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
--	    fi
--	    ;;
--	  aCC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
--	    case $host_cpu in
--	    hppa*64*|ia64*)
--	      # +Z the default
--	      ;;
--	    *)
--	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
--	      ;;
--	    esac
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      interix*)
--	# This is c89, which is MS Visual C++ (no shared libs)
--	# Anyone wants to do a port?
--	;;
--      irix5* | irix6* | nonstopux*)
--	case $cc_basename in
--	  CC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--	    # CC pic flag -KPIC is the default.
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      linux* | k*bsd*-gnu | kopensolaris*-gnu)
--	case $cc_basename in
--	  KCC*)
--	    # KAI C++ Compiler
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	    ;;
--	  ecpc* )
--	    # old Intel C++ for x86_64 which still supported -KPIC.
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--	    ;;
--	  icpc* )
--	    # Intel C++, used to be incompatible with GCC.
--	    # ICC 10 doesn't accept -KPIC any more.
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--	    ;;
--	  pgCC* | pgcpp*)
--	    # Portland Group C++ compiler
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    ;;
--	  cxx*)
--	    # Compaq C++
--	    # Make sure the PIC flag is empty.  It appears that all Alpha
--	    # Linux and Compaq Tru64 Unix objects are PIC.
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--	    ;;
--	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
--	    # IBM XL 8.0, 9.0 on PPC and BlueGene
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
--	    ;;
--	  *)
--	    case `$CC -V 2>&1 | sed 5q` in
--	    *Sun\ C*)
--	      # Sun C++ 5.9
--	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--	      ;;
--	    esac
--	    ;;
--	esac
--	;;
--      lynxos*)
--	;;
--      m88k*)
--	;;
--      mvs*)
--	case $cc_basename in
--	  cxx*)
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      netbsd* | netbsdelf*-gnu)
--	;;
--      *qnx* | *nto*)
--        # QNX uses GNU C++, but need to define -shared option too, otherwise
--        # it will coredump.
--        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--        ;;
--      osf3* | osf4* | osf5*)
--	case $cc_basename in
--	  KCC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
--	    ;;
--	  RCC*)
--	    # Rational C++ 2.4.1
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    ;;
--	  cxx*)
--	    # Digital/Compaq C++
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    # Make sure the PIC flag is empty.  It appears that all Alpha
--	    # Linux and Compaq Tru64 Unix objects are PIC.
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      psos*)
--	;;
--      solaris*)
--	case $cc_basename in
--	  CC* | sunCC*)
--	    # Sun C++ 4.2, 5.x and Centerline C++
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--	    ;;
--	  gcx*)
--	    # Green Hills C++ Compiler
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      sunos4*)
--	case $cc_basename in
--	  CC*)
--	    # Sun C++ 4.x
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    ;;
--	  lcc*)
--	    # Lucid
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
--	case $cc_basename in
--	  CC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    ;;
--	esac
--	;;
--      tandem*)
--	case $cc_basename in
--	  NCC*)
--	    # NonStop-UX NCC 3.20
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      vxworks*)
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--	;;
--    esac
--  fi
--],
--[
--  if test "$GCC" = yes; then
--    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--
--    case $host_os in
--      aix*)
--      # All AIX code is PIC.
--      if test "$host_cpu" = ia64; then
--	# AIX 5 now supports IA64 processor
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--        ;;
--      m68k)
--            # FIXME: we need at least 68020 code to build shared libraries, but
--            # adding the `-m68020' flag to GCC prevents building anything better,
--            # like `-m68040'.
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
--        ;;
--      esac
--      ;;
--
--    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
--      # PIC is the default for these OSes.
--      ;;
--
--    mingw* | cygwin* | pw32* | os2* | cegcc*)
--      # This hack is so that the source file can tell whether it is being
--      # built for inclusion in a dll (and should export symbols for example).
--      # Although the cygwin gcc ignores -fPIC, still need this for old-style
--      # (--disable-auto-import) libraries
--      m4_if([$1], [GCJ], [],
--	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--      ;;
--
--    darwin* | rhapsody*)
--      # PIC is the default on this platform
--      # Common symbols not allowed in MH_DYLIB files
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
--      ;;
--
--    haiku*)
--      # PIC is the default for Haiku.
--      # The "-static" flag exists, but is broken.
--      _LT_TAGVAR(lt_prog_compiler_static, $1)=
--      ;;
--
--    hpux*)
--      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
--      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
--      # sets the default TLS model and affects inlining.
--      case $host_cpu in
--      hppa*64*)
--	# +Z the default
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	;;
--      esac
--      ;;
--
--    interix[[3-9]]*)
--      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
--      # Instead, we relocate shared libraries at runtime.
--      ;;
--
--    msdosdjgpp*)
--      # Just because we use GCC doesn't mean we suddenly get shared libraries
--      # on systems that don't support them.
--      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--      enable_shared=no
--      ;;
--
--    *nto* | *qnx*)
--      # QNX uses GNU C++, but need to define -shared option too, otherwise
--      # it will coredump.
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--      ;;
--
--    sysv4*MP*)
--      if test -d /usr/nec; then
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
--      fi
--      ;;
--
--    *)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--      ;;
--    esac
--
--    case $cc_basename in
--    nvcc*) # Cuda Compiler Driver 2.2
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
--      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
--        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
--      fi
--      ;;
--    esac
--  else
--    # PORTME Check for flag to pass linker flags through the system compiler.
--    case $host_os in
--    aix*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      if test "$host_cpu" = ia64; then
--	# AIX 5 now supports IA64 processor
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      else
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
--      fi
--      ;;
--
--    mingw* | cygwin* | pw32* | os2* | cegcc*)
--      # This hack is so that the source file can tell whether it is being
--      # built for inclusion in a dll (and should export symbols for example).
--      m4_if([$1], [GCJ], [],
--	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--      ;;
--
--    hpux9* | hpux10* | hpux11*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
--      # not for PA HP-UX.
--      case $host_cpu in
--      hppa*64*|ia64*)
--	# +Z the default
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
--	;;
--      esac
--      # Is there a better lt_prog_compiler_static that works with the bundled CC?
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
--      ;;
--
--    irix5* | irix6* | nonstopux*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      # PIC (with -KPIC) is the default.
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--      ;;
--
--    linux* | k*bsd*-gnu | kopensolaris*-gnu)
--      case $cc_basename in
--      # old Intel for x86_64 which still supported -KPIC.
--      ecc*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--        ;;
--      # icc used to be incompatible with GCC.
--      # ICC 10 doesn't accept -KPIC any more.
--      icc* | ifort*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--        ;;
--      # Lahey Fortran 8.1.
--      lf95*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
--	;;
--      nagfor*)
--	# NAG Fortran compiler
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	;;
--      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
--        # Portland Group compilers (*not* the Pentium gcc compiler,
--	# which looks to be a dead project)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--        ;;
--      ccc*)
--        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--        # All Alpha code is PIC.
--        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--        ;;
--      xl* | bgxl* | bgf* | mpixl*)
--	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
--	;;
--      *)
--	case `$CC -V 2>&1 | sed 5q` in
--	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
--	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
--	  ;;
--	*Sun\ F* | *Sun*Fortran*)
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--	  ;;
--	*Sun\ C*)
--	  # Sun C 5.9
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	  ;;
--        *Intel*\ [[CF]]*Compiler*)
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--	  ;;
--	*Portland\ Group*)
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  ;;
--	esac
--	;;
--      esac
--      ;;
--
--    newsos6)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    *nto* | *qnx*)
--      # QNX uses GNU C++, but need to define -shared option too, otherwise
--      # it will coredump.
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--      ;;
--
--    osf3* | osf4* | osf5*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      # All OSF/1 code is PIC.
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--      ;;
--
--    rdos*)
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--      ;;
--
--    solaris*)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      case $cc_basename in
--      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
--      esac
--      ;;
--
--    sunos4*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    sysv4 | sysv4.2uw2* | sysv4.3*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    sysv4*MP*)
--      if test -d /usr/nec ;then
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      fi
--      ;;
--
--    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    unicos*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--      ;;
--
--    uts4*)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    *)
--      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--      ;;
--    esac
--  fi
--])
--case $host_os in
--  # For platforms which do not support PIC, -DPIC is meaningless:
--  *djgpp*)
--    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--    ;;
--  *)
--    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
--    ;;
--esac
--
--AC_CACHE_CHECK([for $compiler option to produce PIC],
--  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
--  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
--_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
--
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
--  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
--    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
--    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
--    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
--     "" | " "*) ;;
--     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
--     esac],
--    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
--     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
--fi
--_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
--	[Additional compiler flags for building library objects])
--
--_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
--	[How to pass a linker flag through the compiler])
--#
--# Check to make sure the static flag actually works.
--#
--wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
--_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
--  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
--  $lt_tmp_static_flag,
--  [],
--  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
--_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
--	[Compiler flag to prevent dynamic linking])
--])# _LT_COMPILER_PIC
--
--
--# _LT_LINKER_SHLIBS([TAGNAME])
--# ----------------------------
--# See if the linker supports building shared libraries.
--m4_defun([_LT_LINKER_SHLIBS],
--[AC_REQUIRE([LT_PATH_LD])dnl
--AC_REQUIRE([LT_PATH_NM])dnl
--m4_require([_LT_PATH_MANIFEST_TOOL])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
--m4_require([_LT_TAG_COMPILER])dnl
--AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
--m4_if([$1], [CXX], [
--  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
--  case $host_os in
--  aix[[4-9]]*)
--    # If we're using GNU nm, then we don't want the "-C" option.
--    # -C means demangle to AIX nm, but means don't demangle with GNU nm
--    # Also, AIX nm treats weak defined symbols like other global defined
--    # symbols, whereas GNU nm marks them as "W".
--    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--    else
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--    fi
--    ;;
--  pw32*)
--    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
--    ;;
--  cygwin* | mingw* | cegcc*)
--    case $cc_basename in
--    cl*)
--      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
--      ;;
--    *)
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
--      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
--      ;;
--    esac
--    ;;
--  linux* | k*bsd*-gnu | gnu*)
--    _LT_TAGVAR(link_all_deplibs, $1)=no
--    ;;
--  *)
--    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--    ;;
--  esac
--], [
--  runpath_var=
--  _LT_TAGVAR(allow_undefined_flag, $1)=
--  _LT_TAGVAR(always_export_symbols, $1)=no
--  _LT_TAGVAR(archive_cmds, $1)=
--  _LT_TAGVAR(archive_expsym_cmds, $1)=
--  _LT_TAGVAR(compiler_needs_object, $1)=no
--  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
--  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--  _LT_TAGVAR(hardcode_automatic, $1)=no
--  _LT_TAGVAR(hardcode_direct, $1)=no
--  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
--  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--  _LT_TAGVAR(hardcode_libdir_separator, $1)=
--  _LT_TAGVAR(hardcode_minus_L, $1)=no
--  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--  _LT_TAGVAR(inherit_rpath, $1)=no
--  _LT_TAGVAR(link_all_deplibs, $1)=unknown
--  _LT_TAGVAR(module_cmds, $1)=
--  _LT_TAGVAR(module_expsym_cmds, $1)=
--  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
--  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
--  _LT_TAGVAR(thread_safe_flag_spec, $1)=
--  _LT_TAGVAR(whole_archive_flag_spec, $1)=
--  # include_expsyms should be a list of space-separated symbols to be *always*
--  # included in the symbol list
--  _LT_TAGVAR(include_expsyms, $1)=
--  # exclude_expsyms can be an extended regexp of symbols to exclude
--  # it will be wrapped by ` (' and `)$', so one must not match beginning or
--  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
--  # as well as any symbol that contains `d'.
--  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
--  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
--  # platforms (ab)use it in PIC code, but their linkers get confused if
--  # the symbol is explicitly referenced.  Since portable code cannot
--  # rely on this symbol name, it's probably fine to never include it in
--  # preloaded symbol tables.
--  # Exclude shared library initialization/finalization symbols.
--dnl Note also adjust exclude_expsyms for C++ above.
--  extract_expsyms_cmds=
--
--  case $host_os in
--  cygwin* | mingw* | 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
--    ;;
--  linux* | k*bsd*-gnu | gnu*)
--    _LT_TAGVAR(link_all_deplibs, $1)=no
--    ;;
--  esac
--
--  _LT_TAGVAR(ld_shlibs, $1)=yes
--
--  # On some targets, GNU ld is compatible enough with the native linker
--  # that we're better off using the native interface for both.
--  lt_use_gnu_ld_interface=no
--  if test "$with_gnu_ld" = yes; then
--    case $host_os in
--      aix*)
--	# The AIX port of GNU ld has always aspired to compatibility
--	# with the native linker.  However, as the warning in the GNU ld
--	# block says, versions before 2.19.5* couldn't really create working
--	# shared libraries, regardless of the interface used.
--	case `$LD -v 2>&1` in
--	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
--	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
--	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
--	  *)
--	    lt_use_gnu_ld_interface=yes
--	    ;;
--	esac
--	;;
--      *)
--	lt_use_gnu_ld_interface=yes
--	;;
--    esac
--  fi
--
--  if test "$lt_use_gnu_ld_interface" = yes; then
--    # If archive_cmds runs LD, not CC, wlarc should be empty
--    wlarc='${wl}'
--
--    # Set some defaults for GNU ld with shared library support. These
--    # are reset later if shared libraries are not supported. Putting them
--    # here allows them to be overridden if necessary.
--    runpath_var=LD_RUN_PATH
--    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--    # ancient GNU ld didn't support --whole-archive et. al.
--    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
--      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--    else
--      _LT_TAGVAR(whole_archive_flag_spec, $1)=
--    fi
--    supports_anon_versioning=no
--    case `$LD -v 2>&1` in
--      *GNU\ gold*) supports_anon_versioning=yes ;;
--      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
--      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
--      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
--      *\ 2.11.*) ;; # other 2.11 versions
--      *) supports_anon_versioning=yes ;;
--    esac
--
--    # See if GNU ld supports shared libraries.
--    case $host_os in
--    aix[[3-9]]*)
--      # On AIX/PPC, the GNU linker is very broken
--      if test "$host_cpu" != ia64; then
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	cat <<_LT_EOF 1>&2
--
--*** Warning: the GNU linker, at least up to release 2.19, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support.  If you
--*** really care for shared libraries, you may want to install binutils
--*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
--*** You will then need to restart the configuration process.
--
--_LT_EOF
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--            _LT_TAGVAR(archive_expsym_cmds, $1)=''
--        ;;
--      m68k)
--            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
--            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--            _LT_TAGVAR(hardcode_minus_L, $1)=yes
--        ;;
--      esac
--      ;;
--
--    beos*)
--      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
--	# support --undefined.  This deserves some investigation.  FIXME
--	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    cygwin* | mingw* | pw32* | cegcc*)
--      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
--      # as there is no search path for DLLs.
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(always_export_symbols, $1)=no
--      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
--      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
--
--      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--	# If the export-symbols file already is a .def file (1st line
--	# is EXPORTS), use it as is; otherwise, prepend...
--	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
--	  cp $export_symbols $output_objdir/$soname.def;
--	else
--	  echo EXPORTS > $output_objdir/$soname.def;
--	  cat $export_symbols >> $output_objdir/$soname.def;
--	fi~
--	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    haiku*)
--      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      ;;
--
--    interix[[3-9]]*)
--      _LT_TAGVAR(hardcode_direct, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
--      # Instead, shared libraries are loaded at an image base (0x10000000 by
--      # default) and relocated if they conflict, which is a slow very memory
--      # consuming and fragmenting process.  To avoid this, we pick a random,
--      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
--      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
--      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--      ;;
--
--    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
--      tmp_diet=no
--      if test "$host_os" = linux-dietlibc; then
--	case $cc_basename in
--	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
--	esac
--      fi
--      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
--	 && test "$tmp_diet" = no
--      then
--	tmp_addflag=' $pic_flag'
--	tmp_sharedflag='-shared'
--	case $cc_basename,$host_cpu in
--        pgcc*)				# Portland Group C compiler
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
--	  tmp_addflag=' $pic_flag'
--	  ;;
--	pgf77* | pgf90* | pgf95* | pgfortran*)
--					# Portland Group f77 and f90 compilers
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
--	  tmp_addflag=' $pic_flag -Mnomain' ;;
--	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
--	  tmp_addflag=' -i_dynamic' ;;
--	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
--	  tmp_addflag=' -i_dynamic -nofor_main' ;;
--	ifc* | ifort*)			# Intel Fortran compiler
--	  tmp_addflag=' -nofor_main' ;;
--	lf95*)				# Lahey Fortran 8.1
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
--	  tmp_sharedflag='--shared' ;;
--	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
--	  tmp_sharedflag='-qmkshrobj'
--	  tmp_addflag= ;;
--	nvcc*)	# Cuda Compiler Driver 2.2
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
--	  _LT_TAGVAR(compiler_needs_object, $1)=yes
--	  ;;
--	esac
--	case `$CC -V 2>&1 | sed 5q` in
--	*Sun\ C*)			# Sun C 5.9
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
--	  _LT_TAGVAR(compiler_needs_object, $1)=yes
--	  tmp_sharedflag='-G' ;;
--	*Sun\ F*)			# Sun Fortran 8.3
--	  tmp_sharedflag='-G' ;;
--	esac
--	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--
--        if test "x$supports_anon_versioning" = xyes; then
--          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
--	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
--	    echo "local: *; };" >> $output_objdir/$libname.ver~
--	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
--        fi
--
--	case $cc_basename in
--	xlf* | bgf* | bgxlf* | mpixlf*)
--	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
--	  if test "x$supports_anon_versioning" = xyes; then
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
--	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
--	      echo "local: *; };" >> $output_objdir/$libname.ver~
--	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
--	  fi
--	  ;;
--	esac
--      else
--        _LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    netbsd* | netbsdelf*-gnu)
--      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
--	wlarc=
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--      fi
--      ;;
--
--    solaris*)
--      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	cat <<_LT_EOF 1>&2
--
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems.  Therefore, libtool
--*** is disabling shared libraries support.  We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer.  Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
--
--_LT_EOF
--      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
--      case `$LD -v 2>&1` in
--        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	cat <<_LT_EOF 1>&2
--
--*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
--*** reliably create shared libraries on SCO systems.  Therefore, libtool
--*** is disabling shared libraries support.  We urge you to upgrade GNU
--*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
--
--_LT_EOF
--	;;
--	*)
--	  # For security reasons, it is highly recommended that you always
--	  # use absolute paths for naming shared libraries, and exclude the
--	  # DT_RUNPATH tag from executables and libraries.  But doing so
--	  # requires that you compile everything twice, which is a pain.
--	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--	  else
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	  fi
--	;;
--      esac
--      ;;
--
--    sunos4*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
--      wlarc=
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    *)
--      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--    esac
--
--    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
--      runpath_var=
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
--      _LT_TAGVAR(whole_archive_flag_spec, $1)=
--    fi
--  else
--    # PORTME fill in a description of your system's linker (not GNU ld)
--    case $host_os in
--    aix3*)
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(always_export_symbols, $1)=yes
--      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
--      # Note: this linker hardcodes the directories in LIBPATH if there
--      # are no directories specified by -L.
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
--	# Neither direct hardcoding nor static linking is supported with a
--	# broken collect2.
--	_LT_TAGVAR(hardcode_direct, $1)=unsupported
--      fi
--      ;;
--
--    aix[[4-9]]*)
--      if test "$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
--	exp_sym_flag='-Bexport'
--	no_entry_flag=""
--      else
--	# If we're using GNU nm, then we don't want the "-C" option.
--	# -C means demangle to AIX nm, but means don't demangle with GNU nm
--	# Also, AIX nm treats weak defined symbols like other global
--	# defined symbols, whereas GNU nm marks them as "W".
--	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--	else
--	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--	fi
--	aix_use_runtimelinking=no
--
--	# Test if we are trying to use run time linking or normal
--	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
--	# 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
--
--	exp_sym_flag='-bexport'
--	no_entry_flag='-bnoentry'
--      fi
--
--      # When large executables or shared objects are built, AIX ld can
--      # have problems creating the table of contents.  If linking a library
--      # or program results in "error TOC overflow" add -mminimal-toc to
--      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
--      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
--      _LT_TAGVAR(archive_cmds, $1)=''
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
--
--      if test "$GCC" = yes; then
--	case $host_os in aix4.[[012]]|aix4.[[012]].*)
--	# We only want to do this on AIX 4.2 and lower, the check
--	# below for broken collect2 doesn't work under 4.3+
--	  collect2name=`${CC} -print-prog-name=collect2`
--	  if test -f "$collect2name" &&
--	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
--	  then
--	  # We have reworked collect2
--	  :
--	  else
--	  # We have old collect2
--	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
--	  # It fails to find uninstalled libraries when the uninstalled
--	  # path is not listed in the libpath.  Setting hardcode_minus_L
--	  # to unsupported forces relinking
--	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
--	  fi
--	  ;;
--	esac
--	shared_flag='-shared'
--	if test "$aix_use_runtimelinking" = yes; then
--	  shared_flag="$shared_flag "'${wl}-G'
--	fi
--	_LT_TAGVAR(link_all_deplibs, $1)=no
--      else
--	# not using gcc
--	if test "$host_cpu" = ia64; then
--	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
--	# chokes on -Wl,-G. The following line is correct:
--	  shared_flag='-G'
--	else
--	  if test "$aix_use_runtimelinking" = yes; then
--	    shared_flag='${wl}-G'
--	  else
--	    shared_flag='${wl}-bM:SRE'
--	  fi
--	fi
--      fi
--
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
--      # It seems that -bexpall does not export symbols beginning with
--      # underscore (_), so it is better to generate a list of symbols to export.
--      _LT_TAGVAR(always_export_symbols, $1)=yes
--      if test "$aix_use_runtimelinking" = yes; then
--	# Warning - without using the other runtime loading flags (-brtl),
--	# -berok will link without error, but may produce a broken library.
--	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
--        # Determine the default libpath from the value encoded in an
--        # empty executable.
--        _LT_SYS_MODULE_PATH_AIX([$1])
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
--      else
--	if test "$host_cpu" = ia64; then
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
--	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
--	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
--	else
--	 # Determine the default libpath from the value encoded in an
--	 # empty executable.
--	 _LT_SYS_MODULE_PATH_AIX([$1])
--	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--	  # Warning - without using the other run time loading flags,
--	  # -berok will link without error, but may produce a broken library.
--	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
--	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
--	  if test "$with_gnu_ld" = yes; then
--	    # We only use this code for GNU lds that support --whole-archive.
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
--	  else
--	    # Exported symbols can be pulled into shared objects from archives
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
--	  fi
--	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--	  # This is similar to how AIX traditionally builds its shared libraries.
--	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
--	fi
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--            _LT_TAGVAR(archive_expsym_cmds, $1)=''
--        ;;
--      m68k)
--            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
--            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--            _LT_TAGVAR(hardcode_minus_L, $1)=yes
--        ;;
--      esac
--      ;;
--
--    bsdi[[45]]*)
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
--      ;;
--
--    cygwin* | mingw* | 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.
--      case $cc_basename in
--      cl*)
--	# Native MSVC
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
--	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	_LT_TAGVAR(always_export_symbols, $1)=yes
--	_LT_TAGVAR(file_list_spec, $1)='@'
--	# Tell ltmain to make .lib files, not .a files.
--	libext=lib
--	# Tell ltmain to make .dll files, not .so files.
--	shrext_cmds=".dll"
--	# FIXME: Setting linknames here is a bad hack.
--	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
--	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
--	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
--	  else
--	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
--	  fi~
--	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
--	  linknames='
--	# The linker will not automatically build a static lib if we build a DLL.
--	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
--	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
--	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
--	# Don't use ranlib
--	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
--	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
--	  lt_tool_outputfile="@TOOL_OUTPUT@"~
--	  case $lt_outputfile in
--	    *.exe|*.EXE) ;;
--	    *)
--	      lt_outputfile="$lt_outputfile.exe"
--	      lt_tool_outputfile="$lt_tool_outputfile.exe"
--	      ;;
--	  esac~
--	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
--	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
--	    $RM "$lt_outputfile.manifest";
--	  fi'
--	;;
--      *)
--	# Assume MSVC wrapper
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
--	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	# Tell ltmain to make .lib files, not .a files.
--	libext=lib
--	# Tell ltmain to make .dll files, not .so files.
--	shrext_cmds=".dll"
--	# FIXME: Setting linknames here is a bad hack.
--	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
--	# The linker will automatically build a .lib file if we build a DLL.
--	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
--	# FIXME: Should let the user specify the lib program.
--	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
--	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--	;;
--      esac
--      ;;
--
--    darwin* | rhapsody*)
--      _LT_DARWIN_LINKER_FEATURES($1)
--      ;;
--
--    dgux*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
--    # support.  Future versions do this automatically, but an explicit c++rt0.o
--    # does not break anything, and helps significantly (at the cost of a little
--    # extra space).
--    freebsd2.2*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
--    freebsd2.*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
--    freebsd* | dragonfly*)
--      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    hpux9*)
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--
--      # hardcode_minus_L: Not really in the search PATH,
--      # but as the default location of the library.
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--      ;;
--
--    hpux10*)
--      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
--      fi
--      if test "$with_gnu_ld" = no; then
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
--	_LT_TAGVAR(hardcode_direct, $1)=yes
--	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	# hardcode_minus_L: Not really in the search PATH,
--	# but as the default location of the library.
--	_LT_TAGVAR(hardcode_minus_L, $1)=yes
--      fi
--      ;;
--
--    hpux11*)
--      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
--	case $host_cpu in
--	hppa*64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	ia64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	esac
--      else
--	case $host_cpu in
--	hppa*64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	ia64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	*)
--	m4_if($1, [], [
--	  # Older versions of the 11.00 compiler do not understand -b yet
--	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
--	  _LT_LINKER_OPTION([if $CC understands -b],
--	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
--	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
--	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
--	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
--	  ;;
--	esac
--      fi
--      if test "$with_gnu_ld" = no; then
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	case $host_cpu in
--	hppa*64*|ia64*)
--	  _LT_TAGVAR(hardcode_direct, $1)=no
--	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	  ;;
--	*)
--	  _LT_TAGVAR(hardcode_direct, $1)=yes
--	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--
--	  # hardcode_minus_L: Not really in the search PATH,
--	  # but as the default location of the library.
--	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
--	  ;;
--	esac
--      fi
--      ;;
--
--    irix5* | irix6* | nonstopux*)
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--	# Try to use the -exported_symbol ld option, if it does not
--	# work, assume that -exports_file does not work either and
--	# implicitly export all symbols.
--	# This should be the same for all languages, so no per-tag cache variable.
--	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
--	  [lt_cv_irix_exported_symbol],
--	  [save_LDFLAGS="$LDFLAGS"
--	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
--	   AC_LINK_IFELSE(
--	     [AC_LANG_SOURCE(
--	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
--			      [C++], [[int foo (void) { return 0; }]],
--			      [Fortran 77], [[
--      subroutine foo
--      end]],
--			      [Fortran], [[
--      subroutine foo
--      end]])])],
--	      [lt_cv_irix_exported_symbol=yes],
--	      [lt_cv_irix_exported_symbol=no])
--           LDFLAGS="$save_LDFLAGS"])
--	if test "$lt_cv_irix_exported_symbol" = yes; then
--          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
--	fi
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
--      fi
--      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      _LT_TAGVAR(inherit_rpath, $1)=yes
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      ;;
--
--    netbsd* | netbsdelf*-gnu)
--      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    newsos6)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    *nto* | *qnx*)
--      ;;
--
--    openbsd*)
--      if test -f /usr/libexec/ld.so; then
--	_LT_TAGVAR(hardcode_direct, $1)=yes
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	else
--	  case $host_os in
--	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
--	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
--	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	     ;;
--	   *)
--	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
--	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	     ;;
--	  esac
--	fi
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    os2*)
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
--      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
--      ;;
--
--    osf3*)
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--      else
--	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
--      fi
--      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      ;;
--
--    osf4* | osf5*)	# as osf3* with the addition of -msym flag
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      else
--	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
--	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
--
--	# Both c and cxx compiler support -rpath directly
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
--      fi
--      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      ;;
--
--    solaris*)
--      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
--      if test "$GCC" = yes; then
--	wlarc='${wl}'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
--      else
--	case `$CC -V 2>&1` in
--	*"Compilers 5.0"*)
--	  wlarc=''
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
--	  ;;
--	*)
--	  wlarc='${wl}'
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
--	  ;;
--	esac
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      case $host_os in
--      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
--      *)
--	# The compiler driver will combine and reorder linker options,
--	# but understands `-z linker_flag'.  GCC discards it without `$wl',
--	# but is careful enough not to reorder.
--	# Supported since Solaris 2.6 (maybe 2.5.1?)
--	if test "$GCC" = yes; then
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
--	else
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
--	fi
--	;;
--      esac
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      ;;
--
--    sunos4*)
--      if test "x$host_vendor" = xsequent; then
--	# Use $CC to link under sequent, because it throws in some extra .o
--	# files that make .init and .fini sections work.
--	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    sysv4)
--      case $host_vendor in
--	sni)
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
--	;;
--	siemens)
--	  ## LD is ld it makes a PLAMLIB
--	  ## CC just makes a GrossModule.
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
--	  _LT_TAGVAR(hardcode_direct, $1)=no
--        ;;
--	motorola)
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
--	;;
--      esac
--      runpath_var='LD_RUN_PATH'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    sysv4.3*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
--      ;;
--
--    sysv4*MP*)
--      if test -d /usr/nec; then
--	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	runpath_var=LD_RUN_PATH
--	hardcode_runpath_var=yes
--	_LT_TAGVAR(ld_shlibs, $1)=yes
--      fi
--      ;;
--
--    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
--      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      runpath_var='LD_RUN_PATH'
--
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      fi
--      ;;
--
--    sysv5* | sco3.2v5* | sco5v6*)
--      # Note: We can NOT use -z defs as we might desire, because we do not
--      # link with -lc, and that would cause any symbols used from libc to
--      # always be unresolved, which means just about no library would
--      # ever link correctly.  If we're not using GNU ld we use -z text
--      # though, which does catch some bad symbols but isn't as heavy-handed
--      # as -z defs.
--      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
--      runpath_var='LD_RUN_PATH'
--
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      fi
--      ;;
--
--    uts4*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    *)
--      _LT_TAGVAR(ld_shlibs, $1)=no
--      ;;
--    esac
--
--    if test x$host_vendor = xsni; then
--      case $host in
--      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
--	;;
--      esac
--    fi
--  fi
--])
--AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
--test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
--
--_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
--
--_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
--_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
--_LT_DECL([], [extract_expsyms_cmds], [2],
--    [The commands to extract the exported symbol list from a shared archive])
--
--#
--# Do we need to explicitly link libc?
--#
--case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
--x|xyes)
--  # Assume -lc should be added
--  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--
--  if test "$enable_shared" = yes && test "$GCC" = yes; then
--    case $_LT_TAGVAR(archive_cmds, $1) in
--    *'~'*)
--      # FIXME: we may have to deal with multi-command sequences.
--      ;;
--    '$CC '*)
--      # Test whether the compiler implicitly links with -lc since on some
--      # systems, -lgcc has to come before -lc. If gcc already passes -lc
--      # to ld, don't add -lc before -lgcc.
--      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
--	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
--	[$RM conftest*
--	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--
--	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
--	  soname=conftest
--	  lib=conftest
--	  libobjs=conftest.$ac_objext
--	  deplibs=
--	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
--	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
--	  compiler_flags=-v
--	  linker_flags=-v
--	  verstring=
--	  output_objdir=.
--	  libname=conftest
--	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
--	  _LT_TAGVAR(allow_undefined_flag, $1)=
--	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
--	  then
--	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--	  else
--	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--	  fi
--	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
--	else
--	  cat conftest.err 1>&5
--	fi
--	$RM conftest*
--	])
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
--      ;;
--    esac
--  fi
--  ;;
--esac
--
--_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
--    [Whether or not to add -lc for building shared libraries])
--_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
--    [enable_shared_with_static_runtimes], [0],
--    [Whether or not to disallow shared libs when runtime libs are static])
--_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
--    [Compiler flag to allow reflexive dlopens])
--_LT_TAGDECL([], [whole_archive_flag_spec], [1],
--    [Compiler flag to generate shared objects directly from archives])
--_LT_TAGDECL([], [compiler_needs_object], [1],
--    [Whether the compiler copes with passing no objects directly])
--_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
--    [Create an old-style archive from a shared archive])
--_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
--    [Create a temporary old-style archive to link instead of a shared archive])
--_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
--_LT_TAGDECL([], [archive_expsym_cmds], [2])
--_LT_TAGDECL([], [module_cmds], [2],
--    [Commands used to build a loadable module if different from building
--    a shared archive.])
--_LT_TAGDECL([], [module_expsym_cmds], [2])
--_LT_TAGDECL([], [with_gnu_ld], [1],
--    [Whether we are building with GNU ld or not])
--_LT_TAGDECL([], [allow_undefined_flag], [1],
--    [Flag that allows shared libraries with undefined symbols to be built])
--_LT_TAGDECL([], [no_undefined_flag], [1],
--    [Flag that enforces no undefined symbols])
--_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
--    [Flag to hardcode $libdir into a binary during linking.
--    This must work even if $libdir does not exist])
--_LT_TAGDECL([], [hardcode_libdir_separator], [1],
--    [Whether we need a single "-rpath" flag with a separated argument])
--_LT_TAGDECL([], [hardcode_direct], [0],
--    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
--    DIR into the resulting binary])
--_LT_TAGDECL([], [hardcode_direct_absolute], [0],
--    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
--    DIR into the resulting binary and the resulting library dependency is
--    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
--    library is relocated])
--_LT_TAGDECL([], [hardcode_minus_L], [0],
--    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
--    into the resulting binary])
--_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
--    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
--    into the resulting binary])
--_LT_TAGDECL([], [hardcode_automatic], [0],
--    [Set to "yes" if building a shared library automatically hardcodes DIR
--    into the library and all subsequent libraries and executables linked
--    against it])
--_LT_TAGDECL([], [inherit_rpath], [0],
--    [Set to yes if linker adds runtime paths of dependent libraries
--    to runtime path list])
--_LT_TAGDECL([], [link_all_deplibs], [0],
--    [Whether libtool must link a program against all its dependency libraries])
--_LT_TAGDECL([], [always_export_symbols], [0],
--    [Set to "yes" if exported symbols are required])
--_LT_TAGDECL([], [export_symbols_cmds], [2],
--    [The commands to list exported symbols])
--_LT_TAGDECL([], [exclude_expsyms], [1],
--    [Symbols that should not be listed in the preloaded symbols])
--_LT_TAGDECL([], [include_expsyms], [1],
--    [Symbols that must always be exported])
--_LT_TAGDECL([], [prelink_cmds], [2],
--    [Commands necessary for linking programs (against libraries) with templates])
--_LT_TAGDECL([], [postlink_cmds], [2],
--    [Commands necessary for finishing linking programs])
--_LT_TAGDECL([], [file_list_spec], [1],
--    [Specify filename containing input files])
--dnl FIXME: Not yet implemented
--dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
--dnl    [Compiler flag to generate thread safe objects])
--])# _LT_LINKER_SHLIBS
--
--
--# _LT_LANG_C_CONFIG([TAG])
--# ------------------------
--# Ensure that the configuration variables for a C compiler are suitably
--# defined.  These variables are subsequently used by _LT_CONFIG to write
--# the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_C_CONFIG],
--[m4_require([_LT_DECL_EGREP])dnl
--lt_save_CC="$CC"
--AC_LANG_PUSH(C)
--
--# Source file extension for C test sources.
--ac_ext=c
--
--# Object file extension for compiled C test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="int some_variable = 0;"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='int main(){return(0);}'
--
--_LT_TAG_COMPILER
--# Save the default compiler, since it gets overwritten when the other
--# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
--compiler_DEFAULT=$CC
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--## CAVEAT EMPTOR:
--## There is no encapsulation within the following macros, do not change
--## the running order or otherwise move them around unless you know exactly
--## what you are doing...
--if test -n "$compiler"; then
--  _LT_COMPILER_NO_RTTI($1)
--  _LT_COMPILER_PIC($1)
--  _LT_COMPILER_C_O($1)
--  _LT_COMPILER_FILE_LOCKS($1)
--  _LT_LINKER_SHLIBS($1)
--  _LT_SYS_DYNAMIC_LINKER($1)
--  _LT_LINKER_HARDCODE_LIBPATH($1)
--  LT_SYS_DLOPEN_SELF
--  _LT_CMD_STRIPLIB
--
--  # Report which library types will actually be built
--  AC_MSG_CHECKING([if libtool supports shared libraries])
--  AC_MSG_RESULT([$can_build_shared])
--
--  AC_MSG_CHECKING([whether to build shared libraries])
--  test "$can_build_shared" = "no" && enable_shared=no
--
--  # On AIX, shared libraries and static libraries use the same namespace, and
--  # are all built from PIC.
--  case $host_os in
--  aix3*)
--    test "$enable_shared" = yes && enable_static=no
--    if test -n "$RANLIB"; then
--      archive_cmds="$archive_cmds~\$RANLIB \$lib"
--      postinstall_cmds='$RANLIB $lib'
--    fi
--    ;;
--
--  aix[[4-9]]*)
--    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
--      test "$enable_shared" = yes && enable_static=no
--    fi
--    ;;
--  esac
--  AC_MSG_RESULT([$enable_shared])
--
--  AC_MSG_CHECKING([whether to build static libraries])
--  # Make sure either enable_shared or enable_static is yes.
--  test "$enable_shared" = yes || enable_static=yes
--  AC_MSG_RESULT([$enable_static])
--
--  _LT_CONFIG($1)
--fi
--AC_LANG_POP
--CC="$lt_save_CC"
--])# _LT_LANG_C_CONFIG
--
--
--# _LT_LANG_CXX_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for a C++ compiler are suitably
--# defined.  These variables are subsequently used by _LT_CONFIG to write
--# the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_CXX_CONFIG],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_PATH_MANIFEST_TOOL])dnl
--if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
--    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
--    (test "X$CXX" != "Xg++"))) ; then
--  AC_PROG_CXXCPP
--else
--  _lt_caught_CXX_error=yes
--fi
--
--AC_LANG_PUSH(C++)
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_TAGVAR(allow_undefined_flag, $1)=
--_LT_TAGVAR(always_export_symbols, $1)=no
--_LT_TAGVAR(archive_expsym_cmds, $1)=
--_LT_TAGVAR(compiler_needs_object, $1)=no
--_LT_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_TAGVAR(hardcode_direct, $1)=no
--_LT_TAGVAR(hardcode_direct_absolute, $1)=no
--_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_TAGVAR(hardcode_minus_L, $1)=no
--_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--_LT_TAGVAR(hardcode_automatic, $1)=no
--_LT_TAGVAR(inherit_rpath, $1)=no
--_LT_TAGVAR(module_cmds, $1)=
--_LT_TAGVAR(module_expsym_cmds, $1)=
--_LT_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(reload_flag, $1)=$reload_flag
--_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
--_LT_TAGVAR(no_undefined_flag, $1)=
--_LT_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for C++ test sources.
--ac_ext=cpp
--
--# Object file extension for compiled C++ test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# No sense in running all these tests if we already determined that
--# the CXX compiler isn't working.  Some variables (like enable_shared)
--# are currently assumed to apply to all compilers on this platform,
--# and will be corrupted by setting them based on a non-working compiler.
--if test "$_lt_caught_CXX_error" != yes; then
--  # Code to be used in simple compile tests
--  lt_simple_compile_test_code="int some_variable = 0;"
--
--  # Code to be used in simple link tests
--  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
--
--  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
--  _LT_TAG_COMPILER
--
--  # save warnings/boilerplate of simple test code
--  _LT_COMPILER_BOILERPLATE
--  _LT_LINKER_BOILERPLATE
--
--  # Allow CC to be a program name with arguments.
--  lt_save_CC=$CC
--  lt_save_CFLAGS=$CFLAGS
--  lt_save_LD=$LD
--  lt_save_GCC=$GCC
--  GCC=$GXX
--  lt_save_with_gnu_ld=$with_gnu_ld
--  lt_save_path_LD=$lt_cv_path_LD
--  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
--    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
--  else
--    $as_unset lt_cv_prog_gnu_ld
--  fi
--  if test -n "${lt_cv_path_LDCXX+set}"; then
--    lt_cv_path_LD=$lt_cv_path_LDCXX
--  else
--    $as_unset lt_cv_path_LD
--  fi
--  test -z "${LDCXX+set}" || LD=$LDCXX
--  CC=${CXX-"c++"}
--  CFLAGS=$CXXFLAGS
--  compiler=$CC
--  _LT_TAGVAR(compiler, $1)=$CC
--  _LT_CC_BASENAME([$compiler])
--
--  if test -n "$compiler"; then
--    # We don't want -fno-exception when compiling C++ code, so set the
--    # no_builtin_flag separately
--    if test "$GXX" = yes; then
--      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
--    else
--      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
--    fi
--
--    if test "$GXX" = yes; then
--      # Set up default GNU C++ configuration
--
--      LT_PATH_LD
--
--      # Check if GNU C++ uses GNU ld as the underlying linker, since the
--      # archiving commands below assume that GNU ld is being used.
--      if test "$with_gnu_ld" = yes; then
--        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--
--        # If archive_cmds runs LD, not CC, wlarc should be empty
--        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
--        #     investigate it a little bit more. (MM)
--        wlarc='${wl}'
--
--        # ancient GNU ld didn't support --whole-archive et. al.
--        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
--	  $GREP 'no-whole-archive' > /dev/null; then
--          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--        else
--          _LT_TAGVAR(whole_archive_flag_spec, $1)=
--        fi
--      else
--        with_gnu_ld=no
--        wlarc=
--
--        # A generic and very simple default shared library creation
--        # command for GNU C++ for the case where it uses the native
--        # linker, instead of GNU ld.  If possible, this setting should
--        # overridden to take advantage of the native linker features on
--        # the platform it is being used on.
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
--      fi
--
--      # Commands to make compiler produce verbose output that lists
--      # what "hidden" libraries, object files and flags are used when
--      # linking a shared library.
--      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
--
--    else
--      GXX=no
--      with_gnu_ld=no
--      wlarc=
--    fi
--
--    # PORTME: fill in a description of your system's C++ link characteristics
--    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
--    _LT_TAGVAR(ld_shlibs, $1)=yes
--    case $host_os in
--      aix3*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--      aix[[4-9]]*)
--        if test "$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
--          exp_sym_flag='-Bexport'
--          no_entry_flag=""
--        else
--          aix_use_runtimelinking=no
--
--          # Test if we are trying to use run time linking or normal
--          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
--          # need to do runtime linking.
--          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
--	    for ld_flag in $LDFLAGS; do
--	      case $ld_flag in
--	      *-brtl*)
--	        aix_use_runtimelinking=yes
--	        break
--	        ;;
--	      esac
--	    done
--	    ;;
--          esac
--
--          exp_sym_flag='-bexport'
--          no_entry_flag='-bnoentry'
--        fi
--
--        # When large executables or shared objects are built, AIX ld can
--        # have problems creating the table of contents.  If linking a library
--        # or program results in "error TOC overflow" add -mminimal-toc to
--        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
--        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
--        _LT_TAGVAR(archive_cmds, $1)=''
--        _LT_TAGVAR(hardcode_direct, $1)=yes
--        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--        _LT_TAGVAR(link_all_deplibs, $1)=yes
--        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
--
--        if test "$GXX" = yes; then
--          case $host_os in aix4.[[012]]|aix4.[[012]].*)
--          # We only want to do this on AIX 4.2 and lower, the check
--          # below for broken collect2 doesn't work under 4.3+
--	  collect2name=`${CC} -print-prog-name=collect2`
--	  if test -f "$collect2name" &&
--	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
--	  then
--	    # We have reworked collect2
--	    :
--	  else
--	    # We have old collect2
--	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
--	    # It fails to find uninstalled libraries when the uninstalled
--	    # path is not listed in the libpath.  Setting hardcode_minus_L
--	    # to unsupported forces relinking
--	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
--	  fi
--          esac
--          shared_flag='-shared'
--	  if test "$aix_use_runtimelinking" = yes; then
--	    shared_flag="$shared_flag "'${wl}-G'
--	  fi
--        else
--          # not using gcc
--          if test "$host_cpu" = ia64; then
--	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
--	  # chokes on -Wl,-G. The following line is correct:
--	  shared_flag='-G'
--          else
--	    if test "$aix_use_runtimelinking" = yes; then
--	      shared_flag='${wl}-G'
--	    else
--	      shared_flag='${wl}-bM:SRE'
--	    fi
--          fi
--        fi
--
--        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
--        # It seems that -bexpall does not export symbols beginning with
--        # underscore (_), so it is better to generate a list of symbols to
--	# export.
--        _LT_TAGVAR(always_export_symbols, $1)=yes
--        if test "$aix_use_runtimelinking" = yes; then
--          # Warning - without using the other runtime loading flags (-brtl),
--          # -berok will link without error, but may produce a broken library.
--          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
--          # Determine the default libpath from the value encoded in an empty
--          # executable.
--          _LT_SYS_MODULE_PATH_AIX([$1])
--          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--
--          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
--        else
--          if test "$host_cpu" = ia64; then
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
--	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
--	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
--          else
--	    # Determine the default libpath from the value encoded in an
--	    # empty executable.
--	    _LT_SYS_MODULE_PATH_AIX([$1])
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--	    # Warning - without using the other run time loading flags,
--	    # -berok will link without error, but may produce a broken library.
--	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
--	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
--	    if test "$with_gnu_ld" = yes; then
--	      # We only use this code for GNU lds that support --whole-archive.
--	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
--	    else
--	      # Exported symbols can be pulled into shared objects from archives
--	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
--	    fi
--	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--	    # This is similar to how AIX traditionally builds its shared
--	    # libraries.
--	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
--          fi
--        fi
--        ;;
--
--      beos*)
--	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
--	  # support --undefined.  This deserves some investigation.  FIXME
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	else
--	  _LT_TAGVAR(ld_shlibs, $1)=no
--	fi
--	;;
--
--      chorus*)
--        case $cc_basename in
--          *)
--	  # FIXME: insert proper C++ library support
--	  _LT_TAGVAR(ld_shlibs, $1)=no
--	  ;;
--        esac
--        ;;
--
--      cygwin* | mingw* | pw32* | cegcc*)
--	case $GXX,$cc_basename in
--	,cl* | no,cl*)
--	  # Native MSVC
--	  # hardcode_libdir_flag_spec is actually meaningless, as there is
--	  # no search path for DLLs.
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
--	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	  _LT_TAGVAR(always_export_symbols, $1)=yes
--	  _LT_TAGVAR(file_list_spec, $1)='@'
--	  # Tell ltmain to make .lib files, not .a files.
--	  libext=lib
--	  # Tell ltmain to make .dll files, not .so files.
--	  shrext_cmds=".dll"
--	  # FIXME: Setting linknames here is a bad hack.
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
--	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
--	    else
--	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
--	    fi~
--	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
--	    linknames='
--	  # The linker will not automatically build a static lib if we build a DLL.
--	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
--	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--	  # Don't use ranlib
--	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
--	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
--	    lt_tool_outputfile="@TOOL_OUTPUT@"~
--	    case $lt_outputfile in
--	      *.exe|*.EXE) ;;
--	      *)
--		lt_outputfile="$lt_outputfile.exe"
--		lt_tool_outputfile="$lt_tool_outputfile.exe"
--		;;
--	    esac~
--	    func_to_tool_file "$lt_outputfile"~
--	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
--	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
--	      $RM "$lt_outputfile.manifest";
--	    fi'
--	  ;;
--	*)
--	  # g++
--	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
--	  # as there is no search path for DLLs.
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
--	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	  _LT_TAGVAR(always_export_symbols, $1)=no
--	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--
--	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--	    # If the export-symbols file already is a .def file (1st line
--	    # is EXPORTS), use it as is; otherwise, prepend...
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
--	      cp $export_symbols $output_objdir/$soname.def;
--	    else
--	      echo EXPORTS > $output_objdir/$soname.def;
--	      cat $export_symbols >> $output_objdir/$soname.def;
--	    fi~
--	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--	  else
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	  fi
--	  ;;
--	esac
--	;;
--      darwin* | rhapsody*)
--        _LT_DARWIN_LINKER_FEATURES($1)
--	;;
--
--      dgux*)
--        case $cc_basename in
--          ec++*)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          ghcx*)
--	    # Green Hills C++ Compiler
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--        esac
--        ;;
--
--      freebsd2.*)
--        # C++ shared libraries reported to be fairly broken before
--	# switch to ELF
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--
--      freebsd-elf*)
--        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--        ;;
--
--      freebsd* | dragonfly*)
--        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
--        # conventions
--        _LT_TAGVAR(ld_shlibs, $1)=yes
--        ;;
--
--      gnu*)
--        ;;
--
--      haiku*)
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--        _LT_TAGVAR(link_all_deplibs, $1)=yes
--        ;;
--
--      hpux9*)
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--        _LT_TAGVAR(hardcode_direct, $1)=yes
--        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
--				             # but as the default
--				             # location of the library.
--
--        case $cc_basename in
--          CC*)
--            # FIXME: insert proper C++ library support
--            _LT_TAGVAR(ld_shlibs, $1)=no
--            ;;
--          aCC*)
--            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--            # Commands to make compiler produce verbose output that lists
--            # what "hidden" libraries, object files and flags are used when
--            # linking a shared library.
--            #
--            # There doesn't appear to be a way to prevent this compiler from
--            # explicitly linking system object files so we need to strip them
--            # from the output so that they don't get included in the library
--            # dependencies.
--            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
--            ;;
--          *)
--            if test "$GXX" = yes; then
--              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--            else
--              # FIXME: insert proper C++ library support
--              _LT_TAGVAR(ld_shlibs, $1)=no
--            fi
--            ;;
--        esac
--        ;;
--
--      hpux10*|hpux11*)
--        if test $with_gnu_ld = no; then
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--          case $host_cpu in
--            hppa*64*|ia64*)
--              ;;
--            *)
--	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--              ;;
--          esac
--        fi
--        case $host_cpu in
--          hppa*64*|ia64*)
--            _LT_TAGVAR(hardcode_direct, $1)=no
--            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--            ;;
--          *)
--            _LT_TAGVAR(hardcode_direct, $1)=yes
--            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
--					         # but as the default
--					         # location of the library.
--            ;;
--        esac
--
--        case $cc_basename in
--          CC*)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          aCC*)
--	    case $host_cpu in
--	      hppa*64*)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	        ;;
--	      ia64*)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	        ;;
--	      *)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	        ;;
--	    esac
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
--	    ;;
--          *)
--	    if test "$GXX" = yes; then
--	      if test $with_gnu_ld = no; then
--	        case $host_cpu in
--	          hppa*64*)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	            ;;
--	          ia64*)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	            ;;
--	          *)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	            ;;
--	        esac
--	      fi
--	    else
--	      # FIXME: insert proper C++ library support
--	      _LT_TAGVAR(ld_shlibs, $1)=no
--	    fi
--	    ;;
--        esac
--        ;;
--
--      interix[[3-9]]*)
--	_LT_TAGVAR(hardcode_direct, $1)=no
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
--	# Instead, shared libraries are loaded at an image base (0x10000000 by
--	# default) and relocated if they conflict, which is a slow very memory
--	# consuming and fragmenting process.  To avoid this, we pick a random,
--	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
--	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--	;;
--      irix5* | irix6*)
--        case $cc_basename in
--          CC*)
--	    # SGI C++
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
--
--	    # Archives containing C++ object files must be created using
--	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
--	    # necessary to make sure instantiated templates are included
--	    # in the archive.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
--	    ;;
--          *)
--	    if test "$GXX" = yes; then
--	      if test "$with_gnu_ld" = no; then
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--	      else
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
--	      fi
--	    fi
--	    _LT_TAGVAR(link_all_deplibs, $1)=yes
--	    ;;
--        esac
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--        _LT_TAGVAR(inherit_rpath, $1)=yes
--        ;;
--
--      linux* | k*bsd*-gnu | kopensolaris*-gnu)
--        case $cc_basename in
--          KCC*)
--	    # Kuck and Associates, Inc. (KAI) C++ Compiler
--
--	    # KCC will only create a shared library if the output file
--	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
--	    # to its proper name (with version) after linking.
--	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--
--	    # Archives containing C++ object files must be created using
--	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
--	    ;;
--	  icpc* | ecpc* )
--	    # Intel C++
--	    with_gnu_ld=yes
--	    # version 8.0 and above of icpc choke on multiply defined symbols
--	    # if we add $predep_objects and $postdep_objects, however 7.1 and
--	    # earlier do not add the objects themselves.
--	    case `$CC -V 2>&1` in
--	      *"Version 7."*)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--		;;
--	      *)  # Version 8.0 or newer
--	        tmp_idyn=
--	        case $host_cpu in
--		  ia64*) tmp_idyn=' -i_dynamic';;
--		esac
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--		;;
--	    esac
--	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
--	    ;;
--          pgCC* | pgcpp*)
--            # Portland Group C++ compiler
--	    case `$CC -V` in
--	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
--	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
--		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
--	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
--		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
--		$RANLIB $oldlib'
--	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
--		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
--		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
--	      ;;
--	    *) # Version 6 and above use weak symbols
--	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
--	      ;;
--	    esac
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
--            ;;
--	  cxx*)
--	    # Compaq C++
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
--
--	    runpath_var=LD_RUN_PATH
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
--	    ;;
--	  xl* | mpixl* | bgxl*)
--	    # IBM XL 8.0 on PPC, with GNU ld
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	    if test "x$supports_anon_versioning" = xyes; then
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
--		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
--		echo "local: *; };" >> $output_objdir/$libname.ver~
--		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
--	    fi
--	    ;;
--	  *)
--	    case `$CC -V 2>&1 | sed 5q` in
--	    *Sun\ C*)
--	      # Sun C++ 5.9
--	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
--	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
--	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
--	      _LT_TAGVAR(compiler_needs_object, $1)=yes
--
--	      # Not sure whether something based on
--	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
--	      # would be better.
--	      output_verbose_link_cmd='func_echo_all'
--
--	      # Archives containing C++ object files must be created using
--	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
--	      # necessary to make sure instantiated templates are included
--	      # in the archive.
--	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
--	      ;;
--	    esac
--	    ;;
--	esac
--	;;
--
--      lynxos*)
--        # FIXME: insert proper C++ library support
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	;;
--
--      m88k*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--	;;
--
--      mvs*)
--        case $cc_basename in
--          cxx*)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--	  *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--	esac
--	;;
--
--      netbsd*)
--        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
--	  wlarc=
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	  _LT_TAGVAR(hardcode_direct, $1)=yes
--	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	fi
--	# Workaround some broken pre-1.5 toolchains
--	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
--	;;
--
--      *nto* | *qnx*)
--        _LT_TAGVAR(ld_shlibs, $1)=yes
--	;;
--
--      openbsd2*)
--        # C++ shared libraries are fairly broken
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	;;
--
--      openbsd*)
--	if test -f /usr/libexec/ld.so; then
--	  _LT_TAGVAR(hardcode_direct, $1)=yes
--	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--	  fi
--	  output_verbose_link_cmd=func_echo_all
--	else
--	  _LT_TAGVAR(ld_shlibs, $1)=no
--	fi
--	;;
--
--      osf3* | osf4* | osf5*)
--        case $cc_basename in
--          KCC*)
--	    # Kuck and Associates, Inc. (KAI) C++ Compiler
--
--	    # KCC will only create a shared library if the output file
--	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
--	    # to its proper name (with version) after linking.
--	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	    # Archives containing C++ object files must be created using
--	    # the KAI C++ compiler.
--	    case $host in
--	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
--	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
--	    esac
--	    ;;
--          RCC*)
--	    # Rational C++ 2.4.1
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          cxx*)
--	    case $host in
--	      osf3*)
--	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
--	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--		;;
--	      *)
--	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
--	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
--	          echo "-hidden">> $lib.exp~
--	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
--	          $RM $lib.exp'
--	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
--		;;
--	    esac
--
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
--	    ;;
--	  *)
--	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
--	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	      case $host in
--	        osf3*)
--	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--		  ;;
--	        *)
--	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--		  ;;
--	      esac
--
--	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	      # Commands to make compiler produce verbose output that lists
--	      # what "hidden" libraries, object files and flags are used when
--	      # linking a shared library.
--	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
--
--	    else
--	      # FIXME: insert proper C++ library support
--	      _LT_TAGVAR(ld_shlibs, $1)=no
--	    fi
--	    ;;
--        esac
--        ;;
--
--      psos*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--
--      sunos4*)
--        case $cc_basename in
--          CC*)
--	    # Sun C++ 4.x
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          lcc*)
--	    # Lucid
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--        esac
--        ;;
--
--      solaris*)
--        case $cc_basename in
--          CC* | sunCC*)
--	    # Sun C++ 4.2, 5.x and Centerline C++
--            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
--	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	    case $host_os in
--	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
--	      *)
--		# The compiler driver will combine and reorder linker options,
--		# but understands `-z linker_flag'.
--	        # Supported since Solaris 2.6 (maybe 2.5.1?)
--		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
--	        ;;
--	    esac
--	    _LT_TAGVAR(link_all_deplibs, $1)=yes
--
--	    output_verbose_link_cmd='func_echo_all'
--
--	    # Archives containing C++ object files must be created using
--	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
--	    # necessary to make sure instantiated templates are included
--	    # in the archive.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
--	    ;;
--          gcx*)
--	    # Green Hills C++ Compiler
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--
--	    # The C++ compiler must be used to create the archive.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
--	    ;;
--          *)
--	    # GNU C++ compiler with Solaris linker
--	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
--	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
--	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
--
--	        # Commands to make compiler produce verbose output that lists
--	        # what "hidden" libraries, object files and flags are used when
--	        # linking a shared library.
--	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
--	      else
--	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
--	        # platform.
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
--
--	        # Commands to make compiler produce verbose output that lists
--	        # what "hidden" libraries, object files and flags are used when
--	        # linking a shared library.
--	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
--	      fi
--
--	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
--	      case $host_os in
--		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
--		*)
--		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
--		  ;;
--	      esac
--	    fi
--	    ;;
--        esac
--        ;;
--
--    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
--      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      runpath_var='LD_RUN_PATH'
--
--      case $cc_basename in
--        CC*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--      esac
--      ;;
--
--      sysv5* | sco3.2v5* | sco5v6*)
--	# Note: We can NOT use -z defs as we might desire, because we do not
--	# link with -lc, and that would cause any symbols used from libc to
--	# always be unresolved, which means just about no library would
--	# ever link correctly.  If we're not using GNU ld we use -z text
--	# though, which does catch some bad symbols but isn't as heavy-handed
--	# as -z defs.
--	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
--	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
--	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--	_LT_TAGVAR(link_all_deplibs, $1)=yes
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
--	runpath_var='LD_RUN_PATH'
--
--	case $cc_basename in
--          CC*)
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
--	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
--	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
--	      '"$_LT_TAGVAR(reload_cmds, $1)"
--	    ;;
--	  *)
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    ;;
--	esac
--      ;;
--
--      tandem*)
--        case $cc_basename in
--          NCC*)
--	    # NonStop-UX NCC 3.20
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--        esac
--        ;;
--
--      vxworks*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--
--      *)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--    esac
--
--    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
--    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
--
--    _LT_TAGVAR(GCC, $1)="$GXX"
--    _LT_TAGVAR(LD, $1)="$LD"
--
--    ## CAVEAT EMPTOR:
--    ## There is no encapsulation within the following macros, do not change
--    ## the running order or otherwise move them around unless you know exactly
--    ## what you are doing...
--    _LT_SYS_HIDDEN_LIBDEPS($1)
--    _LT_COMPILER_PIC($1)
--    _LT_COMPILER_C_O($1)
--    _LT_COMPILER_FILE_LOCKS($1)
--    _LT_LINKER_SHLIBS($1)
--    _LT_SYS_DYNAMIC_LINKER($1)
--    _LT_LINKER_HARDCODE_LIBPATH($1)
--
--    _LT_CONFIG($1)
--  fi # test -n "$compiler"
--
--  CC=$lt_save_CC
--  CFLAGS=$lt_save_CFLAGS
--  LDCXX=$LD
--  LD=$lt_save_LD
--  GCC=$lt_save_GCC
--  with_gnu_ld=$lt_save_with_gnu_ld
--  lt_cv_path_LDCXX=$lt_cv_path_LD
--  lt_cv_path_LD=$lt_save_path_LD
--  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
--  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
--fi # test "$_lt_caught_CXX_error" != yes
--
--AC_LANG_POP
--])# _LT_LANG_CXX_CONFIG
--
--
--# _LT_FUNC_STRIPNAME_CNF
--# ----------------------
--# func_stripname_cnf prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--#
--# This function is identical to the (non-XSI) version of func_stripname,
--# except this one can be used by m4 code that may be executed by configure,
--# rather than the libtool script.
--m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
--AC_REQUIRE([_LT_DECL_SED])
--AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
--func_stripname_cnf ()
--{
--  case ${2} in
--  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
--  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
--  esac
--} # func_stripname_cnf
--])# _LT_FUNC_STRIPNAME_CNF
--
--# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
--# ---------------------------------
--# Figure out "hidden" library dependencies from verbose
--# compiler output when linking a shared library.
--# Parse the compiler output and extract the necessary
--# objects, libraries and library flags.
--m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
--# Dependencies to place before and after the object being linked:
--_LT_TAGVAR(predep_objects, $1)=
--_LT_TAGVAR(postdep_objects, $1)=
--_LT_TAGVAR(predeps, $1)=
--_LT_TAGVAR(postdeps, $1)=
--_LT_TAGVAR(compiler_lib_search_path, $1)=
--
--dnl we can't use the lt_simple_compile_test_code here,
--dnl because it contains code intended for an executable,
--dnl not a library.  It's possible we should let each
--dnl tag define a new lt_????_link_test_code variable,
--dnl but it's only used here...
--m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
--int a;
--void foo (void) { a = 0; }
--_LT_EOF
--], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
--class Foo
--{
--public:
--  Foo (void) { a = 0; }
--private:
--  int a;
--};
--_LT_EOF
--], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
--      subroutine foo
--      implicit none
--      integer*4 a
--      a=0
--      return
--      end
--_LT_EOF
--], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
--      subroutine foo
--      implicit none
--      integer a
--      a=0
--      return
--      end
--_LT_EOF
--], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
--public class foo {
--  private int a;
--  public void bar (void) {
--    a = 0;
--  }
--};
--_LT_EOF
--], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
--package foo
--func foo() {
--}
--_LT_EOF
--])
--
--_lt_libdeps_save_CFLAGS=$CFLAGS
--case "$CC $CFLAGS " in #(
--*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
--*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
--*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
--esac
--
--dnl Parse the compiler output and extract the necessary
--dnl objects, libraries and library flags.
--if AC_TRY_EVAL(ac_compile); then
--  # Parse the compiler output and extract the necessary
--  # objects, libraries and library flags.
--
--  # Sentinel used to keep track of whether or not we are before
--  # the conftest object file.
--  pre_test_object_deps_done=no
--
--  for p in `eval "$output_verbose_link_cmd"`; do
--    case ${prev}${p} in
--
--    -L* | -R* | -l*)
--       # Some compilers place space between "-{L,R}" and the path.
--       # Remove the space.
--       if test $p = "-L" ||
--          test $p = "-R"; then
--	 prev=$p
--	 continue
--       fi
--
--       # Expand the sysroot to ease extracting the directories later.
--       if test -z "$prev"; then
--         case $p in
--         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
--         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
--         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
--         esac
--       fi
--       case $p in
--       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
--       esac
--       if test "$pre_test_object_deps_done" = no; then
--	 case ${prev} in
--	 -L | -R)
--	   # Internal compiler library paths should come after those
--	   # provided the user.  The postdeps already come after the
--	   # user supplied libs so there is no need to process them.
--	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
--	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
--	   else
--	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
--	   fi
--	   ;;
--	 # The "-l" case would never come before the object being
--	 # linked, so don't bother handling this case.
--	 esac
--       else
--	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
--	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
--	 else
--	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
--	 fi
--       fi
--       prev=
--       ;;
--
--    *.lto.$objext) ;; # Ignore GCC LTO objects
--    *.$objext)
--       # This assumes that the test object file only shows up
--       # once in the compiler output.
--       if test "$p" = "conftest.$objext"; then
--	 pre_test_object_deps_done=yes
--	 continue
--       fi
--
--       if test "$pre_test_object_deps_done" = no; then
--	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
--	   _LT_TAGVAR(predep_objects, $1)="$p"
--	 else
--	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
--	 fi
--       else
--	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
--	   _LT_TAGVAR(postdep_objects, $1)="$p"
--	 else
--	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
--	 fi
--       fi
--       ;;
--
--    *) ;; # Ignore the rest.
--
--    esac
--  done
--
--  # Clean up.
--  rm -f a.out a.exe
--else
--  echo "libtool.m4: error: problem compiling $1 test program"
--fi
--
--$RM -f confest.$objext
--CFLAGS=$_lt_libdeps_save_CFLAGS
--
--# PORTME: override above test on systems where it is broken
--m4_if([$1], [CXX],
--[case $host_os in
--interix[[3-9]]*)
--  # Interix 3.5 installs completely hosed .la files for C++, so rather than
--  # hack all around it, let's just trust "g++" to DTRT.
--  _LT_TAGVAR(predep_objects,$1)=
--  _LT_TAGVAR(postdep_objects,$1)=
--  _LT_TAGVAR(postdeps,$1)=
--  ;;
--
--linux*)
--  case `$CC -V 2>&1 | sed 5q` in
--  *Sun\ C*)
--    # Sun C++ 5.9
--
--    # The more standards-conforming stlport4 library is
--    # incompatible with the Cstd library. Avoid specifying
--    # it if it's in CXXFLAGS. Ignore libCrun as
--    # -library=stlport4 depends on it.
--    case " $CXX $CXXFLAGS " in
--    *" -library=stlport4 "*)
--      solaris_use_stlport4=yes
--      ;;
--    esac
--
--    if test "$solaris_use_stlport4" != yes; then
--      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
--    fi
--    ;;
--  esac
--  ;;
--
--solaris*)
--  case $cc_basename in
--  CC* | sunCC*)
--    # The more standards-conforming stlport4 library is
--    # incompatible with the Cstd library. Avoid specifying
--    # it if it's in CXXFLAGS. Ignore libCrun as
--    # -library=stlport4 depends on it.
--    case " $CXX $CXXFLAGS " in
--    *" -library=stlport4 "*)
--      solaris_use_stlport4=yes
--      ;;
--    esac
--
--    # Adding this requires a known-good setup of shared libraries for
--    # Sun compiler versions before 5.6, else PIC objects from an old
--    # archive will be linked into the output, leading to subtle bugs.
--    if test "$solaris_use_stlport4" != yes; then
--      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
--    fi
--    ;;
--  esac
--  ;;
--esac
--])
--
--case " $_LT_TAGVAR(postdeps, $1) " in
--*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
--esac
-- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
--if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
-- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
--fi
--_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
--    [The directories searched by this compiler when creating a shared library])
--_LT_TAGDECL([], [predep_objects], [1],
--    [Dependencies to place before and after the objects being linked to
--    create a shared library])
--_LT_TAGDECL([], [postdep_objects], [1])
--_LT_TAGDECL([], [predeps], [1])
--_LT_TAGDECL([], [postdeps], [1])
--_LT_TAGDECL([], [compiler_lib_search_path], [1],
--    [The library search path used internally by the compiler when linking
--    a shared library])
--])# _LT_SYS_HIDDEN_LIBDEPS
--
--
--# _LT_LANG_F77_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for a Fortran 77 compiler are
--# suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_F77_CONFIG],
--[AC_LANG_PUSH(Fortran 77)
--if test -z "$F77" || test "X$F77" = "Xno"; then
--  _lt_disable_F77=yes
--fi
--
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_TAGVAR(allow_undefined_flag, $1)=
--_LT_TAGVAR(always_export_symbols, $1)=no
--_LT_TAGVAR(archive_expsym_cmds, $1)=
--_LT_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_TAGVAR(hardcode_direct, $1)=no
--_LT_TAGVAR(hardcode_direct_absolute, $1)=no
--_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_TAGVAR(hardcode_minus_L, $1)=no
--_LT_TAGVAR(hardcode_automatic, $1)=no
--_LT_TAGVAR(inherit_rpath, $1)=no
--_LT_TAGVAR(module_cmds, $1)=
--_LT_TAGVAR(module_expsym_cmds, $1)=
--_LT_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(reload_flag, $1)=$reload_flag
--_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
--_LT_TAGVAR(no_undefined_flag, $1)=
--_LT_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for f77 test sources.
--ac_ext=f
--
--# Object file extension for compiled f77 test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# No sense in running all these tests if we already determined that
--# the F77 compiler isn't working.  Some variables (like enable_shared)
--# are currently assumed to apply to all compilers on this platform,
--# and will be corrupted by setting them based on a non-working compiler.
--if test "$_lt_disable_F77" != yes; then
--  # Code to be used in simple compile tests
--  lt_simple_compile_test_code="\
--      subroutine t
--      return
--      end
--"
--
--  # Code to be used in simple link tests
--  lt_simple_link_test_code="\
--      program t
--      end
--"
--
--  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
--  _LT_TAG_COMPILER
--
--  # save warnings/boilerplate of simple test code
--  _LT_COMPILER_BOILERPLATE
--  _LT_LINKER_BOILERPLATE
--
--  # Allow CC to be a program name with arguments.
--  lt_save_CC="$CC"
--  lt_save_GCC=$GCC
--  lt_save_CFLAGS=$CFLAGS
--  CC=${F77-"f77"}
--  CFLAGS=$FFLAGS
--  compiler=$CC
--  _LT_TAGVAR(compiler, $1)=$CC
--  _LT_CC_BASENAME([$compiler])
--  GCC=$G77
--  if test -n "$compiler"; then
--    AC_MSG_CHECKING([if libtool supports shared libraries])
--    AC_MSG_RESULT([$can_build_shared])
--
--    AC_MSG_CHECKING([whether to build shared libraries])
--    test "$can_build_shared" = "no" && enable_shared=no
--
--    # On AIX, shared libraries and static libraries use the same namespace, and
--    # are all built from PIC.
--    case $host_os in
--      aix3*)
--        test "$enable_shared" = yes && enable_static=no
--        if test -n "$RANLIB"; then
--          archive_cmds="$archive_cmds~\$RANLIB \$lib"
--          postinstall_cmds='$RANLIB $lib'
--        fi
--        ;;
--      aix[[4-9]]*)
--	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
--	  test "$enable_shared" = yes && enable_static=no
--	fi
--        ;;
--    esac
--    AC_MSG_RESULT([$enable_shared])
--
--    AC_MSG_CHECKING([whether to build static libraries])
--    # Make sure either enable_shared or enable_static is yes.
--    test "$enable_shared" = yes || enable_static=yes
--    AC_MSG_RESULT([$enable_static])
--
--    _LT_TAGVAR(GCC, $1)="$G77"
--    _LT_TAGVAR(LD, $1)="$LD"
--
--    ## CAVEAT EMPTOR:
--    ## There is no encapsulation within the following macros, do not change
--    ## the running order or otherwise move them around unless you know exactly
--    ## what you are doing...
--    _LT_COMPILER_PIC($1)
--    _LT_COMPILER_C_O($1)
--    _LT_COMPILER_FILE_LOCKS($1)
--    _LT_LINKER_SHLIBS($1)
--    _LT_SYS_DYNAMIC_LINKER($1)
--    _LT_LINKER_HARDCODE_LIBPATH($1)
--
--    _LT_CONFIG($1)
--  fi # test -n "$compiler"
--
--  GCC=$lt_save_GCC
--  CC="$lt_save_CC"
--  CFLAGS="$lt_save_CFLAGS"
--fi # test "$_lt_disable_F77" != yes
--
--AC_LANG_POP
--])# _LT_LANG_F77_CONFIG
--
--
--# _LT_LANG_FC_CONFIG([TAG])
--# -------------------------
--# Ensure that the configuration variables for a Fortran compiler are
--# suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_FC_CONFIG],
--[AC_LANG_PUSH(Fortran)
--
--if test -z "$FC" || test "X$FC" = "Xno"; then
--  _lt_disable_FC=yes
--fi
--
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_TAGVAR(allow_undefined_flag, $1)=
--_LT_TAGVAR(always_export_symbols, $1)=no
--_LT_TAGVAR(archive_expsym_cmds, $1)=
--_LT_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_TAGVAR(hardcode_direct, $1)=no
--_LT_TAGVAR(hardcode_direct_absolute, $1)=no
--_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_TAGVAR(hardcode_minus_L, $1)=no
--_LT_TAGVAR(hardcode_automatic, $1)=no
--_LT_TAGVAR(inherit_rpath, $1)=no
--_LT_TAGVAR(module_cmds, $1)=
--_LT_TAGVAR(module_expsym_cmds, $1)=
--_LT_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(reload_flag, $1)=$reload_flag
--_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
--_LT_TAGVAR(no_undefined_flag, $1)=
--_LT_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for fc test sources.
--ac_ext=${ac_fc_srcext-f}
--
--# Object file extension for compiled fc test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# No sense in running all these tests if we already determined that
--# the FC compiler isn't working.  Some variables (like enable_shared)
--# are currently assumed to apply to all compilers on this platform,
--# and will be corrupted by setting them based on a non-working compiler.
--if test "$_lt_disable_FC" != yes; then
--  # Code to be used in simple compile tests
--  lt_simple_compile_test_code="\
--      subroutine t
--      return
--      end
--"
--
--  # Code to be used in simple link tests
--  lt_simple_link_test_code="\
--      program t
--      end
--"
--
--  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
--  _LT_TAG_COMPILER
--
--  # save warnings/boilerplate of simple test code
--  _LT_COMPILER_BOILERPLATE
--  _LT_LINKER_BOILERPLATE
--
--  # Allow CC to be a program name with arguments.
--  lt_save_CC="$CC"
--  lt_save_GCC=$GCC
--  lt_save_CFLAGS=$CFLAGS
--  CC=${FC-"f95"}
--  CFLAGS=$FCFLAGS
--  compiler=$CC
--  GCC=$ac_cv_fc_compiler_gnu
--
--  _LT_TAGVAR(compiler, $1)=$CC
--  _LT_CC_BASENAME([$compiler])
--
--  if test -n "$compiler"; then
--    AC_MSG_CHECKING([if libtool supports shared libraries])
--    AC_MSG_RESULT([$can_build_shared])
--
--    AC_MSG_CHECKING([whether to build shared libraries])
--    test "$can_build_shared" = "no" && enable_shared=no
--
--    # On AIX, shared libraries and static libraries use the same namespace, and
--    # are all built from PIC.
--    case $host_os in
--      aix3*)
--        test "$enable_shared" = yes && enable_static=no
--        if test -n "$RANLIB"; then
--          archive_cmds="$archive_cmds~\$RANLIB \$lib"
--          postinstall_cmds='$RANLIB $lib'
--        fi
--        ;;
--      aix[[4-9]]*)
--	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
--	  test "$enable_shared" = yes && enable_static=no
--	fi
--        ;;
--    esac
--    AC_MSG_RESULT([$enable_shared])
--
--    AC_MSG_CHECKING([whether to build static libraries])
--    # Make sure either enable_shared or enable_static is yes.
--    test "$enable_shared" = yes || enable_static=yes
--    AC_MSG_RESULT([$enable_static])
--
--    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
--    _LT_TAGVAR(LD, $1)="$LD"
--
--    ## CAVEAT EMPTOR:
--    ## There is no encapsulation within the following macros, do not change
--    ## the running order or otherwise move them around unless you know exactly
--    ## what you are doing...
--    _LT_SYS_HIDDEN_LIBDEPS($1)
--    _LT_COMPILER_PIC($1)
--    _LT_COMPILER_C_O($1)
--    _LT_COMPILER_FILE_LOCKS($1)
--    _LT_LINKER_SHLIBS($1)
--    _LT_SYS_DYNAMIC_LINKER($1)
--    _LT_LINKER_HARDCODE_LIBPATH($1)
--
--    _LT_CONFIG($1)
--  fi # test -n "$compiler"
--
--  GCC=$lt_save_GCC
--  CC=$lt_save_CC
--  CFLAGS=$lt_save_CFLAGS
--fi # test "$_lt_disable_FC" != yes
--
--AC_LANG_POP
--])# _LT_LANG_FC_CONFIG
--
--
--# _LT_LANG_GCJ_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for the GNU Java Compiler compiler
--# are suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_GCJ_CONFIG],
--[AC_REQUIRE([LT_PROG_GCJ])dnl
--AC_LANG_SAVE
--
--# Source file extension for Java test sources.
--ac_ext=java
--
--# Object file extension for compiled Java test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="class foo {}"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_TAG_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC=$CC
--lt_save_CFLAGS=$CFLAGS
--lt_save_GCC=$GCC
--GCC=yes
--CC=${GCJ-"gcj"}
--CFLAGS=$GCJFLAGS
--compiler=$CC
--_LT_TAGVAR(compiler, $1)=$CC
--_LT_TAGVAR(LD, $1)="$LD"
--_LT_CC_BASENAME([$compiler])
--
--# GCJ did not exist at the time GCC didn't implicitly link libc in.
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(reload_flag, $1)=$reload_flag
--_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
--
--## CAVEAT EMPTOR:
--## There is no encapsulation within the following macros, do not change
--## the running order or otherwise move them around unless you know exactly
--## what you are doing...
--if test -n "$compiler"; then
--  _LT_COMPILER_NO_RTTI($1)
--  _LT_COMPILER_PIC($1)
--  _LT_COMPILER_C_O($1)
--  _LT_COMPILER_FILE_LOCKS($1)
--  _LT_LINKER_SHLIBS($1)
--  _LT_LINKER_HARDCODE_LIBPATH($1)
--
--  _LT_CONFIG($1)
--fi
--
--AC_LANG_RESTORE
--
--GCC=$lt_save_GCC
--CC=$lt_save_CC
--CFLAGS=$lt_save_CFLAGS
--])# _LT_LANG_GCJ_CONFIG
--
--
--# _LT_LANG_GO_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for the GNU Go compiler
--# are suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_GO_CONFIG],
--[AC_REQUIRE([LT_PROG_GO])dnl
--AC_LANG_SAVE
--
--# Source file extension for Go test sources.
--ac_ext=go
--
--# Object file extension for compiled Go test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="package main; func main() { }"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='package main; func main() { }'
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_TAG_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC=$CC
--lt_save_CFLAGS=$CFLAGS
--lt_save_GCC=$GCC
--GCC=yes
--CC=${GOC-"gccgo"}
--CFLAGS=$GOFLAGS
--compiler=$CC
--_LT_TAGVAR(compiler, $1)=$CC
--_LT_TAGVAR(LD, $1)="$LD"
--_LT_CC_BASENAME([$compiler])
--
--# Go did not exist at the time GCC didn't implicitly link libc in.
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(reload_flag, $1)=$reload_flag
--_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
--
--## CAVEAT EMPTOR:
--## There is no encapsulation within the following macros, do not change
--## the running order or otherwise move them around unless you know exactly
--## what you are doing...
--if test -n "$compiler"; then
--  _LT_COMPILER_NO_RTTI($1)
--  _LT_COMPILER_PIC($1)
--  _LT_COMPILER_C_O($1)
--  _LT_COMPILER_FILE_LOCKS($1)
--  _LT_LINKER_SHLIBS($1)
--  _LT_LINKER_HARDCODE_LIBPATH($1)
--
--  _LT_CONFIG($1)
--fi
--
--AC_LANG_RESTORE
--
--GCC=$lt_save_GCC
--CC=$lt_save_CC
--CFLAGS=$lt_save_CFLAGS
--])# _LT_LANG_GO_CONFIG
--
--
--# _LT_LANG_RC_CONFIG([TAG])
--# -------------------------
--# Ensure that the configuration variables for the Windows resource compiler
--# are suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_RC_CONFIG],
--[AC_REQUIRE([LT_PROG_RC])dnl
--AC_LANG_SAVE
--
--# Source file extension for RC test sources.
--ac_ext=rc
--
--# Object file extension for compiled RC test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
--
--# Code to be used in simple link tests
--lt_simple_link_test_code="$lt_simple_compile_test_code"
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_TAG_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--lt_save_CFLAGS=$CFLAGS
--lt_save_GCC=$GCC
--GCC=
--CC=${RC-"windres"}
--CFLAGS=
--compiler=$CC
--_LT_TAGVAR(compiler, $1)=$CC
--_LT_CC_BASENAME([$compiler])
--_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
--
--if test -n "$compiler"; then
--  :
--  _LT_CONFIG($1)
--fi
--
--GCC=$lt_save_GCC
--AC_LANG_RESTORE
--CC=$lt_save_CC
--CFLAGS=$lt_save_CFLAGS
--])# _LT_LANG_RC_CONFIG
--
--
--# LT_PROG_GCJ
--# -----------
--AC_DEFUN([LT_PROG_GCJ],
--[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
--  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
--    [AC_CHECK_TOOL(GCJ, gcj,)
--      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
--      AC_SUBST(GCJFLAGS)])])[]dnl
--])
--
--# Old name:
--AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
--
--
--# LT_PROG_GO
--# ----------
--AC_DEFUN([LT_PROG_GO],
--[AC_CHECK_TOOL(GOC, gccgo,)
--])
--
--
--# LT_PROG_RC
--# ----------
--AC_DEFUN([LT_PROG_RC],
--[AC_CHECK_TOOL(RC, windres,)
--])
--
--# Old name:
--AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([LT_AC_PROG_RC], [])
--
--
--# _LT_DECL_EGREP
--# --------------
--# If we don't have a new enough Autoconf to choose the best grep
--# available, choose the one first in the user's PATH.
--m4_defun([_LT_DECL_EGREP],
--[AC_REQUIRE([AC_PROG_EGREP])dnl
--AC_REQUIRE([AC_PROG_FGREP])dnl
--test -z "$GREP" && GREP=grep
--_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
--_LT_DECL([], [EGREP], [1], [An ERE matcher])
--_LT_DECL([], [FGREP], [1], [A literal string matcher])
--dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
--AC_SUBST([GREP])
--])
--
--
--# _LT_DECL_OBJDUMP
--# --------------
--# If we don't have a new enough Autoconf to choose the best objdump
--# available, choose the one first in the user's PATH.
--m4_defun([_LT_DECL_OBJDUMP],
--[AC_CHECK_TOOL(OBJDUMP, objdump, false)
--test -z "$OBJDUMP" && OBJDUMP=objdump
--_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
--AC_SUBST([OBJDUMP])
--])
--
--# _LT_DECL_DLLTOOL
--# ----------------
--# Ensure DLLTOOL variable is set.
--m4_defun([_LT_DECL_DLLTOOL],
--[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
--AC_SUBST([DLLTOOL])
--])
--
--# _LT_DECL_SED
--# ------------
--# Check for a fully-functional sed program, that truncates
--# as few characters as possible.  Prefer GNU sed if found.
--m4_defun([_LT_DECL_SED],
--[AC_PROG_SED
--test -z "$SED" && SED=sed
--Xsed="$SED -e 1s/^X//"
--_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
--_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
--    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
--])# _LT_DECL_SED
--
--m4_ifndef([AC_PROG_SED], [
--############################################################
--# NOTE: This macro has been submitted for inclusion into   #
--#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
--#  a released version of Autoconf we should remove this    #
--#  macro and use it instead.                               #
--############################################################
--
--m4_defun([AC_PROG_SED],
--[AC_MSG_CHECKING([for a sed that does not truncate output])
--AC_CACHE_VAL(lt_cv_path_SED,
--[# Loop through the user's path and test for sed and gsed.
--# Then use that list of sed's as ones to test for truncation.
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
--  IFS=$as_save_IFS
--  test -z "$as_dir" && as_dir=.
--  for lt_ac_prog in sed gsed; do
--    for ac_exec_ext in '' $ac_executable_extensions; do
--      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
--        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
--      fi
--    done
--  done
--done
--IFS=$as_save_IFS
--lt_ac_max=0
--lt_ac_count=0
--# Add /usr/xpg4/bin/sed as it is typically found on Solaris
--# along with /bin/sed that truncates output.
--for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
--  test ! -f $lt_ac_sed && continue
--  cat /dev/null > conftest.in
--  lt_ac_count=0
--  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
--  # Check for GNU sed and select it if it is found.
--  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
--    lt_cv_path_SED=$lt_ac_sed
--    break
--  fi
--  while true; do
--    cat conftest.in conftest.in >conftest.tmp
--    mv conftest.tmp conftest.in
--    cp conftest.in conftest.nl
--    echo >>conftest.nl
--    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
--    cmp -s conftest.out conftest.nl || break
--    # 10000 chars as input seems more than enough
--    test $lt_ac_count -gt 10 && break
--    lt_ac_count=`expr $lt_ac_count + 1`
--    if test $lt_ac_count -gt $lt_ac_max; then
--      lt_ac_max=$lt_ac_count
--      lt_cv_path_SED=$lt_ac_sed
--    fi
--  done
--done
--])
--SED=$lt_cv_path_SED
--AC_SUBST([SED])
--AC_MSG_RESULT([$SED])
--])#AC_PROG_SED
--])#m4_ifndef
--
--# Old name:
--AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([LT_AC_PROG_SED], [])
--
--
--# _LT_CHECK_SHELL_FEATURES
--# ------------------------
--# Find out whether the shell is Bourne or XSI compatible,
--# or has some other useful features.
--m4_defun([_LT_CHECK_SHELL_FEATURES],
--[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
--# Try some XSI features
--xsi_shell=no
--( _lt_dummy="a/b/c"
--  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
--      = c,a/b,b/c, \
--    && eval 'test $(( 1 + 1 )) -eq 2 \
--    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
--  && xsi_shell=yes
--AC_MSG_RESULT([$xsi_shell])
--_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
--
--AC_MSG_CHECKING([whether the shell understands "+="])
--lt_shell_append=no
--( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
--    >/dev/null 2>&1 \
--  && lt_shell_append=yes
--AC_MSG_RESULT([$lt_shell_append])
--_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
--
--if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
--  lt_unset=unset
--else
--  lt_unset=false
--fi
--_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
--
--# test EBCDIC or ASCII
--case `echo X|tr X '\101'` in
-- A) # ASCII based system
--    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
--  lt_SP2NL='tr \040 \012'
--  lt_NL2SP='tr \015\012 \040\040'
--  ;;
-- *) # EBCDIC based system
--  lt_SP2NL='tr \100 \n'
--  lt_NL2SP='tr \r\n \100\100'
--  ;;
--esac
--_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
--_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
--])# _LT_CHECK_SHELL_FEATURES
--
--
--# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
--# ------------------------------------------------------
--# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
--# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
--m4_defun([_LT_PROG_FUNCTION_REPLACE],
--[dnl {
--sed -e '/^$1 ()$/,/^} # $1 /c\
--$1 ()\
--{\
--m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
--} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
--  && mv -f "$cfgfile.tmp" "$cfgfile" \
--    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
--test 0 -eq $? || _lt_function_replace_fail=:
--])
--
--
--# _LT_PROG_REPLACE_SHELLFNS
--# -------------------------
--# Replace existing portable implementations of several shell functions with
--# equivalent extended shell implementations where those features are available..
--m4_defun([_LT_PROG_REPLACE_SHELLFNS],
--[if test x"$xsi_shell" = xyes; then
--  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
--    case ${1} in
--      */*) func_dirname_result="${1%/*}${2}" ;;
--      *  ) func_dirname_result="${3}" ;;
--    esac])
--
--  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
--    func_basename_result="${1##*/}"])
--
--  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
--    case ${1} in
--      */*) func_dirname_result="${1%/*}${2}" ;;
--      *  ) func_dirname_result="${3}" ;;
--    esac
--    func_basename_result="${1##*/}"])
--
--  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
--    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
--    # positional parameters, so assign one to ordinary parameter first.
--    func_stripname_result=${3}
--    func_stripname_result=${func_stripname_result#"${1}"}
--    func_stripname_result=${func_stripname_result%"${2}"}])
--
--  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
--    func_split_long_opt_name=${1%%=*}
--    func_split_long_opt_arg=${1#*=}])
--
--  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
--    func_split_short_opt_arg=${1#??}
--    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
--
--  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
--    case ${1} in
--      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
--      *)    func_lo2o_result=${1} ;;
--    esac])
--
--  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
--
--  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
--
--  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
--fi
--
--if test x"$lt_shell_append" = xyes; then
--  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
--
--  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
--    func_quote_for_eval "${2}"
--dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
--    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
--
--  # Save a `func_append' function call where possible by direct use of '+='
--  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
--    && mv -f "$cfgfile.tmp" "$cfgfile" \
--      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
--  test 0 -eq $? || _lt_function_replace_fail=:
--else
--  # Save a `func_append' function call even when '+=' is not available
--  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
--    && mv -f "$cfgfile.tmp" "$cfgfile" \
--      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
--  test 0 -eq $? || _lt_function_replace_fail=:
--fi
--
--if test x"$_lt_function_replace_fail" = x":"; then
--  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
--fi
--])
--
--# _LT_PATH_CONVERSION_FUNCTIONS
--# -----------------------------
--# Determine which file name conversion functions should be used by
--# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
--# for certain cross-compile configurations and native mingw.
--m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--AC_MSG_CHECKING([how to convert $build file names to $host format])
--AC_CACHE_VAL(lt_cv_to_host_file_cmd,
--[case $host in
--  *-*-mingw* )
--    case $build in
--      *-*-mingw* ) # actually msys
--        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
--        ;;
--      *-*-cygwin* )
--        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
--        ;;
--      * ) # otherwise, assume *nix
--        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
--        ;;
--    esac
--    ;;
--  *-*-cygwin* )
--    case $build in
--      *-*-mingw* ) # actually msys
--        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
--        ;;
--      *-*-cygwin* )
--        lt_cv_to_host_file_cmd=func_convert_file_noop
--        ;;
--      * ) # otherwise, assume *nix
--        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
--        ;;
--    esac
--    ;;
--  * ) # unhandled hosts (and "normal" native builds)
--    lt_cv_to_host_file_cmd=func_convert_file_noop
--    ;;
--esac
--])
--to_host_file_cmd=$lt_cv_to_host_file_cmd
--AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
--_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
--         [0], [convert $build file names to $host format])dnl
--
--AC_MSG_CHECKING([how to convert $build file names to toolchain format])
--AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
--[#assume ordinary cross tools, or native build.
--lt_cv_to_tool_file_cmd=func_convert_file_noop
--case $host in
--  *-*-mingw* )
--    case $build in
--      *-*-mingw* ) # actually msys
--        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
--        ;;
--    esac
--    ;;
--esac
--])
--to_tool_file_cmd=$lt_cv_to_tool_file_cmd
--AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
--_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
--         [0], [convert $build files to toolchain format])dnl
--])# _LT_PATH_CONVERSION_FUNCTIONS
diff --cc m4/ltoptions.m4
index 5d9acd8,5d9acd8..0000000
deleted file mode 100644,100644
--- a/m4/ltoptions.m4
+++ /dev/null
@@@ -1,384 -1,384 +1,0 @@@
--# Helper functions for option handling.                    -*- Autoconf -*-
--#
--#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
--#   Inc.
--#   Written by Gary V. Vaughan, 2004
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# serial 7 ltoptions.m4
--
--# This is to help aclocal find these macros, as it can't see m4_define.
--AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
--
--
--# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
--# ------------------------------------------
--m4_define([_LT_MANGLE_OPTION],
--[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
--
--
--# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
--# ---------------------------------------
--# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
--# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
--# saved as a flag.
--m4_define([_LT_SET_OPTION],
--[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
--m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
--        _LT_MANGLE_DEFUN([$1], [$2]),
--    [m4_warning([Unknown $1 option `$2'])])[]dnl
--])
--
--
--# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
--# ------------------------------------------------------------
--# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
--m4_define([_LT_IF_OPTION],
--[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
--
--
--# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
--# -------------------------------------------------------
--# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
--# are set.
--m4_define([_LT_UNLESS_OPTIONS],
--[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
--	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
--		      [m4_define([$0_found])])])[]dnl
--m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
--])[]dnl
--])
--
--
--# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
--# ----------------------------------------
--# OPTION-LIST is a space-separated list of Libtool options associated
--# with MACRO-NAME.  If any OPTION has a matching handler declared with
--# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
--# the unknown option and exit.
--m4_defun([_LT_SET_OPTIONS],
--[# Set options
--m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
--    [_LT_SET_OPTION([$1], _LT_Option)])
--
--m4_if([$1],[LT_INIT],[
--  dnl
--  dnl Simply set some default values (i.e off) if boolean options were not
--  dnl specified:
--  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
--  ])
--  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
--  ])
--  dnl
--  dnl If no reference was made to various pairs of opposing options, then
--  dnl we run the default mode handler for the pair.  For example, if neither
--  dnl `shared' nor `disable-shared' was passed, we enable building of shared
--  dnl archives by default:
--  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
--  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
--  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
--  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
--  		   [_LT_ENABLE_FAST_INSTALL])
--  ])
--])# _LT_SET_OPTIONS
--
--
--## --------------------------------- ##
--## Macros to handle LT_INIT options. ##
--## --------------------------------- ##
--
--# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
--# -----------------------------------------
--m4_define([_LT_MANGLE_DEFUN],
--[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
--
--
--# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
--# -----------------------------------------------
--m4_define([LT_OPTION_DEFINE],
--[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
--])# LT_OPTION_DEFINE
--
--
--# dlopen
--# ------
--LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
--])
--
--AU_DEFUN([AC_LIBTOOL_DLOPEN],
--[_LT_SET_OPTION([LT_INIT], [dlopen])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you
--put the `dlopen' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
--
--
--# win32-dll
--# ---------
--# Declare package support for building win32 dll's.
--LT_OPTION_DEFINE([LT_INIT], [win32-dll],
--[enable_win32_dll=yes
--
--case $host in
--*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
--  AC_CHECK_TOOL(AS, as, false)
--  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
--  AC_CHECK_TOOL(OBJDUMP, objdump, false)
--  ;;
--esac
--
--test -z "$AS" && AS=as
--_LT_DECL([], [AS],      [1], [Assembler program])dnl
--
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
--
--test -z "$OBJDUMP" && OBJDUMP=objdump
--_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
--])# win32-dll
--
--AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--_LT_SET_OPTION([LT_INIT], [win32-dll])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you
--put the `win32-dll' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
--
--
--# _LT_ENABLE_SHARED([DEFAULT])
--# ----------------------------
--# implement the --enable-shared flag, and supports the `shared' and
--# `disable-shared' LT_INIT options.
--# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
--m4_define([_LT_ENABLE_SHARED],
--[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
--AC_ARG_ENABLE([shared],
--    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
--	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
--    [p=${PACKAGE-default}
--    case $enableval in
--    yes) enable_shared=yes ;;
--    no) enable_shared=no ;;
--    *)
--      enable_shared=no
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for pkg in $enableval; do
--	IFS="$lt_save_ifs"
--	if test "X$pkg" = "X$p"; then
--	  enable_shared=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
--
--    _LT_DECL([build_libtool_libs], [enable_shared], [0],
--	[Whether or not to build shared libraries])
--])# _LT_ENABLE_SHARED
--
--LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
--LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
--
--# Old names:
--AC_DEFUN([AC_ENABLE_SHARED],
--[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
--])
--
--AC_DEFUN([AC_DISABLE_SHARED],
--[_LT_SET_OPTION([LT_INIT], [disable-shared])
--])
--
--AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
--AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_ENABLE_SHARED], [])
--dnl AC_DEFUN([AM_DISABLE_SHARED], [])
--
--
--
--# _LT_ENABLE_STATIC([DEFAULT])
--# ----------------------------
--# implement the --enable-static flag, and support the `static' and
--# `disable-static' LT_INIT options.
--# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
--m4_define([_LT_ENABLE_STATIC],
--[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
--AC_ARG_ENABLE([static],
--    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
--	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
--    [p=${PACKAGE-default}
--    case $enableval in
--    yes) enable_static=yes ;;
--    no) enable_static=no ;;
--    *)
--     enable_static=no
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for pkg in $enableval; do
--	IFS="$lt_save_ifs"
--	if test "X$pkg" = "X$p"; then
--	  enable_static=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
--
--    _LT_DECL([build_old_libs], [enable_static], [0],
--	[Whether or not to build static libraries])
--])# _LT_ENABLE_STATIC
--
--LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
--LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
--
--# Old names:
--AC_DEFUN([AC_ENABLE_STATIC],
--[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
--])
--
--AC_DEFUN([AC_DISABLE_STATIC],
--[_LT_SET_OPTION([LT_INIT], [disable-static])
--])
--
--AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
--AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_ENABLE_STATIC], [])
--dnl AC_DEFUN([AM_DISABLE_STATIC], [])
--
--
--
--# _LT_ENABLE_FAST_INSTALL([DEFAULT])
--# ----------------------------------
--# implement the --enable-fast-install flag, and support the `fast-install'
--# and `disable-fast-install' LT_INIT options.
--# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
--m4_define([_LT_ENABLE_FAST_INSTALL],
--[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
--AC_ARG_ENABLE([fast-install],
--    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
--    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
--    [p=${PACKAGE-default}
--    case $enableval in
--    yes) enable_fast_install=yes ;;
--    no) enable_fast_install=no ;;
--    *)
--      enable_fast_install=no
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for pkg in $enableval; do
--	IFS="$lt_save_ifs"
--	if test "X$pkg" = "X$p"; then
--	  enable_fast_install=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
--
--_LT_DECL([fast_install], [enable_fast_install], [0],
--	 [Whether or not to optimize for fast installation])dnl
--])# _LT_ENABLE_FAST_INSTALL
--
--LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
--LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
--
--# Old names:
--AU_DEFUN([AC_ENABLE_FAST_INSTALL],
--[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you put
--the `fast-install' option into LT_INIT's first parameter.])
--])
--
--AU_DEFUN([AC_DISABLE_FAST_INSTALL],
--[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you put
--the `disable-fast-install' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
--dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
--
--
--# _LT_WITH_PIC([MODE])
--# --------------------
--# implement the --with-pic flag, and support the `pic-only' and `no-pic'
--# LT_INIT options.
--# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
--m4_define([_LT_WITH_PIC],
--[AC_ARG_WITH([pic],
--    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
--	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
--    [lt_p=${PACKAGE-default}
--    case $withval in
--    yes|no) pic_mode=$withval ;;
--    *)
--      pic_mode=default
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for lt_pkg in $withval; do
--	IFS="$lt_save_ifs"
--	if test "X$lt_pkg" = "X$lt_p"; then
--	  pic_mode=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [pic_mode=default])
--
--test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
--
--_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
--])# _LT_WITH_PIC
--
--LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
--LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
--
--# Old name:
--AU_DEFUN([AC_LIBTOOL_PICMODE],
--[_LT_SET_OPTION([LT_INIT], [pic-only])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you
--put the `pic-only' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
--
--## ----------------- ##
--## LTDL_INIT Options ##
--## ----------------- ##
--
--m4_define([_LTDL_MODE], [])
--LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
--		 [m4_define([_LTDL_MODE], [nonrecursive])])
--LT_OPTION_DEFINE([LTDL_INIT], [recursive],
--		 [m4_define([_LTDL_MODE], [recursive])])
--LT_OPTION_DEFINE([LTDL_INIT], [subproject],
--		 [m4_define([_LTDL_MODE], [subproject])])
--
--m4_define([_LTDL_TYPE], [])
--LT_OPTION_DEFINE([LTDL_INIT], [installable],
--		 [m4_define([_LTDL_TYPE], [installable])])
--LT_OPTION_DEFINE([LTDL_INIT], [convenience],
--		 [m4_define([_LTDL_TYPE], [convenience])])
diff --cc m4/ltsugar.m4
index 9000a05,9000a05..0000000
deleted file mode 100644,100644
--- a/m4/ltsugar.m4
+++ /dev/null
@@@ -1,123 -1,123 +1,0 @@@
--# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
--#
--# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
--# Written by Gary V. Vaughan, 2004
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# serial 6 ltsugar.m4
--
--# This is to help aclocal find these macros, as it can't see m4_define.
--AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
--
--
--# lt_join(SEP, ARG1, [ARG2...])
--# -----------------------------
--# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
--# associated separator.
--# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
--# versions in m4sugar had bugs.
--m4_define([lt_join],
--[m4_if([$#], [1], [],
--       [$#], [2], [[$2]],
--       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
--m4_define([_lt_join],
--[m4_if([$#$2], [2], [],
--       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
--
--
--# lt_car(LIST)
--# lt_cdr(LIST)
--# ------------
--# Manipulate m4 lists.
--# These macros are necessary as long as will still need to support
--# Autoconf-2.59 which quotes differently.
--m4_define([lt_car], [[$1]])
--m4_define([lt_cdr],
--[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
--       [$#], 1, [],
--       [m4_dquote(m4_shift($@))])])
--m4_define([lt_unquote], $1)
--
--
--# lt_append(MACRO-NAME, STRING, [SEPARATOR])
--# ------------------------------------------
--# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
--# Note that neither SEPARATOR nor STRING are expanded; they are appended
--# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
--# No SEPARATOR is output if MACRO-NAME was previously undefined (different
--# than defined and empty).
--#
--# This macro is needed until we can rely on Autoconf 2.62, since earlier
--# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
--m4_define([lt_append],
--[m4_define([$1],
--	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
--
--
--
--# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
--# ----------------------------------------------------------
--# Produce a SEP delimited list of all paired combinations of elements of
--# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
--# has the form PREFIXmINFIXSUFFIXn.
--# Needed until we can rely on m4_combine added in Autoconf 2.62.
--m4_define([lt_combine],
--[m4_if(m4_eval([$# > 3]), [1],
--       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
--[[m4_foreach([_Lt_prefix], [$2],
--	     [m4_foreach([_Lt_suffix],
--		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
--	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
--
--
--# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
--# -----------------------------------------------------------------------
--# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
--# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
--m4_define([lt_if_append_uniq],
--[m4_ifdef([$1],
--	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
--		 [lt_append([$1], [$2], [$3])$4],
--		 [$5])],
--	  [lt_append([$1], [$2], [$3])$4])])
--
--
--# lt_dict_add(DICT, KEY, VALUE)
--# -----------------------------
--m4_define([lt_dict_add],
--[m4_define([$1($2)], [$3])])
--
--
--# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
--# --------------------------------------------
--m4_define([lt_dict_add_subkey],
--[m4_define([$1($2:$3)], [$4])])
--
--
--# lt_dict_fetch(DICT, KEY, [SUBKEY])
--# ----------------------------------
--m4_define([lt_dict_fetch],
--[m4_ifval([$3],
--	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
--    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
--
--
--# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
--# -----------------------------------------------------------------
--m4_define([lt_if_dict_fetch],
--[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
--	[$5],
--    [$6])])
--
--
--# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
--# --------------------------------------------------------------
--m4_define([lt_dict_filter],
--[m4_if([$5], [], [],
--  [lt_join(m4_quote(m4_default([$4], [[, ]])),
--           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
--		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
--])
diff --cc m4/ltversion.m4
index 07a8602,07a8602..0000000
deleted file mode 100644,100644
--- a/m4/ltversion.m4
+++ /dev/null
@@@ -1,23 -1,23 +1,0 @@@
--# ltversion.m4 -- version numbers			-*- Autoconf -*-
--#
--#   Copyright (C) 2004 Free Software Foundation, Inc.
--#   Written by Scott James Remnant, 2004
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# @configure_input@
--
--# serial 3337 ltversion.m4
--# This file is part of GNU Libtool
--
--m4_define([LT_PACKAGE_VERSION], [2.4.2])
--m4_define([LT_PACKAGE_REVISION], [1.3337])
--
--AC_DEFUN([LTVERSION_VERSION],
--[macro_version='2.4.2'
--macro_revision='1.3337'
--_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
--_LT_DECL(, macro_revision, 0)
--])
diff --cc m4/lt~obsolete.m4
index c573da9,c573da9..0000000
deleted file mode 100644,100644
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@@ -1,98 -1,98 +1,0 @@@
--# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
--#
--#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
--#   Written by Scott James Remnant, 2004.
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# serial 5 lt~obsolete.m4
--
--# These exist entirely to fool aclocal when bootstrapping libtool.
--#
--# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
--# which have later been changed to m4_define as they aren't part of the
--# exported API, or moved to Autoconf or Automake where they belong.
--#
--# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
--# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
--# using a macro with the same name in our local m4/libtool.m4 it'll
--# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
--# and doesn't know about Autoconf macros at all.)
--#
--# So we provide this file, which has a silly filename so it's always
--# included after everything else.  This provides aclocal with the
--# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
--# because those macros already exist, or will be overwritten later.
--# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
--#
--# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
--# Yes, that means every name once taken will need to remain here until
--# we give up compatibility with versions before 1.7, at which point
--# we need to keep only those names which we still refer to.
--
--# This is to help aclocal find these macros, as it can't see m4_define.
--AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
--
--m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
--m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
--m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
--m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
--m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
--m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
--m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
--m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
--m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
--m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
--m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
--m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
--m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
--m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
--m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
--m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
--m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
--m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
--m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
--m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
--m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
--m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
--m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
--m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
--m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
--m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
--m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
--m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
--m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
--m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
--m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
--m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
--m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
--m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
--m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
--m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
--m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
--m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
--m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
--m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
--m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
--m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
--m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
--m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
--m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
--m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
--m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
--m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
--m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
--m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
--m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
--m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
--m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
--m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
--m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
--m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
--m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/libassuan.git



More information about the Pkg-gnupg-commit mailing list