[gcl] Update to 20120323 snapshot.
Jerry James
jjames at fedoraproject.org
Wed Mar 28 16:46:13 UTC 2012
commit 660b8f411ac4d93b1f5de0cc8cecb46d057b7cf7
Author: Jerry James <loganjerry at gmail.com>
Date: Wed Mar 28 10:45:52 2012 -0600
Update to 20120323 snapshot.
gcl-2.6.8-alloca.patch | 160 +-
gcl-2.6.8-asm-signal-h.patch | 16 +-
gcl-2.6.8-extension.patch | 194 +-
gcl-2.6.8-infrastructure.patch |50150 ++++++++++++++++++++--------------------
gcl-2.6.8-unrandomize.patch | 234 +-
gcl.spec | 10 +-
sources | 2 +-
7 files changed, 25384 insertions(+), 25382 deletions(-)
---
diff --git a/gcl-2.6.8-alloca.patch b/gcl-2.6.8-alloca.patch
index cae7508..d589503 100644
--- a/gcl-2.6.8-alloca.patch
+++ b/gcl-2.6.8-alloca.patch
@@ -1,80 +1,6 @@
---- ./acconfig.h.orig 2009-02-23 12:39:42.000000000 -0700
-+++ ./acconfig.h 2012-01-09 20:47:04.938687050 -0700
-@@ -53,11 +53,10 @@
- #undef HAVE_ALLOCA
- #endif
-
--
- /* define if need alloca.h */
--#undef NEED_ALLOCA_H
-+#undef HAVE_ALLOCA_H
-
--#ifdef NEED_ALLOCA_H
-+#ifdef HAVE_ALLOCA_H
- #include <alloca.h>
- #endif
-
---- ./h/gclincl.h.in.orig 2010-08-04 15:44:24.000000000 -0600
-+++ ./h/gclincl.h.in 2012-01-09 20:47:04.939687029 -0700
-@@ -54,11 +54,10 @@
- #undef HAVE_ALLOCA
- #endif
-
--
- /* define if need alloca.h */
--#undef NEED_ALLOCA_H
-+#undef HAVE_ALLOCA_H
-
--#ifdef NEED_ALLOCA_H
-+#ifdef HAVE_ALLOCA_H
- #include <alloca.h>
- #endif
-
-@@ -260,6 +259,21 @@
- #undef HAVE_OBJC_MALLOC_H
- #undef HAVE_OUTPUT_BFD
-
-+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-+ systems. This function is required for `alloca.c' support on those systems.
-+ */
-+#undef CRAY_STACKSEG_END
-+
-+/* Define to 1 if using `alloca.c'. */
-+#undef C_ALLOCA
-+
-+/* Define to 1 if you have `alloca', as a function or macro. */
-+#undef HAVE_ALLOCA
-+
-+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-+ */
-+#undef HAVE_ALLOCA_H
-+
- /* Define to 1 if you have the <asm/sigcontext.h> header file. */
- #undef HAVE_ASM_SIGCONTEXT_H
-
-@@ -365,8 +379,19 @@
- /* The size of `long', as computed by sizeof. */
- #undef SIZEOF_LONG
-
-+/* If using the C implementation of alloca, define if you know the
-+ direction of stack growth for your system; otherwise it will be
-+ automatically deduced at runtime.
-+ STACK_DIRECTION > 0 => grows toward higher addresses
-+ STACK_DIRECTION < 0 => grows toward lower addresses
-+ STACK_DIRECTION = 0 => direction of growth unknown */
-+#undef STACK_DIRECTION
-+
- /* staticly linked images */
- #undef STATIC_LINKING
-
- /* Define to 1 if you have the ANSI C header files. */
- #undef STDC_HEADERS
-+
-+/* Define to `unsigned int' if <sys/types.h> does not define. */
-+#undef size_t
---- ./configure.in.orig 2012-01-09 20:41:39.017551755 -0700
-+++ ./configure.in 2012-01-09 20:47:04.940687008 -0700
-@@ -1906,33 +1906,7 @@
+--- ./configure.in.orig 2012-03-28 09:53:39.622413068 -0600
++++ ./configure.in 2012-03-28 09:55:40.957561557 -0600
+@@ -1923,33 +1923,7 @@
# alloca
@@ -109,8 +35,8 @@
# dlopen etc
# idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
---- ./configure.orig 2012-01-09 20:41:41.703495184 -0700
-+++ ./configure 2012-01-09 20:47:13.481507117 -0700
+--- ./configure.orig 2012-03-28 09:53:39.628412580 -0600
++++ ./configure 2012-03-28 09:55:40.964560988 -0600
@@ -609,6 +609,7 @@
NIFLAGS
FINAL_CFLAGS
@@ -180,7 +106,7 @@
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-@@ -7882,81 +7937,205 @@
+@@ -7963,81 +8018,205 @@
# alloca
@@ -420,3 +346,77 @@
# dlopen etc
+--- ./h/gclincl.h.in.orig 2012-01-16 13:08:04.000000000 -0700
++++ ./h/gclincl.h.in 2012-03-28 09:55:40.955561719 -0600
+@@ -54,11 +54,10 @@
+ #undef HAVE_ALLOCA
+ #endif
+
+-
+ /* define if need alloca.h */
+-#undef NEED_ALLOCA_H
++#undef HAVE_ALLOCA_H
+
+-#ifdef NEED_ALLOCA_H
++#ifdef HAVE_ALLOCA_H
+ #include <alloca.h>
+ #endif
+
+@@ -261,6 +260,21 @@
+ #undef HAVE_OUTPUT_BFD
+ #undef HAVE_BUILTIN_CLEAR_CACHE
+
++/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
++ systems. This function is required for `alloca.c' support on those systems.
++ */
++#undef CRAY_STACKSEG_END
++
++/* Define to 1 if using `alloca.c'. */
++#undef C_ALLOCA
++
++/* Define to 1 if you have `alloca', as a function or macro. */
++#undef HAVE_ALLOCA
++
++/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
++ */
++#undef HAVE_ALLOCA_H
++
+ /* Define to 1 if you have the <asm/sigcontext.h> header file. */
+ #undef HAVE_ASM_SIGCONTEXT_H
+
+@@ -366,8 +380,19 @@
+ /* The size of `long', as computed by sizeof. */
+ #undef SIZEOF_LONG
+
++/* If using the C implementation of alloca, define if you know the
++ direction of stack growth for your system; otherwise it will be
++ automatically deduced at runtime.
++ STACK_DIRECTION > 0 => grows toward higher addresses
++ STACK_DIRECTION < 0 => grows toward lower addresses
++ STACK_DIRECTION = 0 => direction of growth unknown */
++#undef STACK_DIRECTION
++
+ /* staticly linked images */
+ #undef STATIC_LINKING
+
+ /* Define to 1 if you have the ANSI C header files. */
+ #undef STDC_HEADERS
++
++/* Define to `unsigned int' if <sys/types.h> does not define. */
++#undef size_t
+--- ./acconfig.h.orig 2012-01-16 13:07:59.000000000 -0700
++++ ./acconfig.h 2012-03-28 09:55:40.953561881 -0600
+@@ -53,11 +53,10 @@
+ #undef HAVE_ALLOCA
+ #endif
+
+-
+ /* define if need alloca.h */
+-#undef NEED_ALLOCA_H
++#undef HAVE_ALLOCA_H
+
+-#ifdef NEED_ALLOCA_H
++#ifdef HAVE_ALLOCA_H
+ #include <alloca.h>
+ #endif
+
diff --git a/gcl-2.6.8-asm-signal-h.patch b/gcl-2.6.8-asm-signal-h.patch
index 10152f4..0827fc7 100644
--- a/gcl-2.6.8-asm-signal-h.patch
+++ b/gcl-2.6.8-asm-signal-h.patch
@@ -1,6 +1,6 @@
---- ./configure.in.orig 2012-01-09 20:51:43.102828225 -0700
-+++ ./configure.in 2012-01-09 20:53:17.237845506 -0700
-@@ -1624,7 +1624,7 @@
+--- ./configure.in.orig 2012-03-28 09:57:37.877068843 -0600
++++ ./configure.in 2012-03-28 09:58:08.359593977 -0600
+@@ -1641,7 +1641,7 @@
#if test $use = "386-linux" ; then
AC_CHECK_HEADERS(asm/sigcontext.h)
@@ -9,7 +9,7 @@
AC_MSG_CHECKING([for sigcontext])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <signal.h>
-@@ -1649,6 +1649,7 @@
+@@ -1666,6 +1666,7 @@
#include <asm/sigcontext.h>
#endif
#ifdef HAVE_ASM_SIGNAL_H
@@ -17,9 +17,9 @@
#include <asm/signal.h>
#endif
]],
---- ./configure.orig 2012-01-09 20:51:54.679584389 -0700
-+++ ./configure 2012-01-09 20:53:37.292423109 -0700
-@@ -8230,7 +8230,8 @@
+--- ./configure.orig 2012-03-28 09:57:37.885068193 -0600
++++ ./configure 2012-03-28 09:58:08.366593408 -0600
+@@ -8311,7 +8311,8 @@
for ac_header in asm/signal.h
do :
@@ -29,7 +29,7 @@
if test "x$ac_cv_header_asm_signal_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_ASM_SIGNAL_H 1
-@@ -8283,6 +8284,7 @@
+@@ -8364,6 +8365,7 @@
#include <asm/sigcontext.h>
#endif
#ifdef HAVE_ASM_SIGNAL_H
diff --git a/gcl-2.6.8-extension.patch b/gcl-2.6.8-extension.patch
index 885ff90..9bc8748 100644
--- a/gcl-2.6.8-extension.patch
+++ b/gcl-2.6.8-extension.patch
@@ -1,94 +1,5 @@
---- ./acconfig.h.orig 2012-01-09 20:47:04.938687050 -0700
-+++ ./acconfig.h 2012-01-09 20:49:21.947801299 -0700
-@@ -1,3 +1,6 @@
-+/* Whether compiling on a glibc-based system */
-+#undef _GNU_SOURCE
-+
- /* define where the heap could begin. Normally should
- be the smallest value returned by sbrk(). Underestimating
- by 10-20 megabytes is not a problem. */
-@@ -157,7 +160,6 @@
-
- #ifdef IN_NUM_CO
- #ifdef HAVE_ISNORMAL
--#define _GNU_SOURCE
- #include <math.h>
- #define ISNORMAL(a) isnormal(a)
- #else
-@@ -178,7 +180,6 @@
-
- #ifdef NEED_ISFINITE
- #ifdef HAVE_ISFINITE
--#define _GNU_SOURCE
- #include <math.h>
- #define ISFINITE(a) isfinite(a)
- #else
---- ./h/gclincl.h.in.orig 2012-01-09 20:47:04.939687029 -0700
-+++ ./h/gclincl.h.in 2012-01-09 20:49:21.948801277 -0700
-@@ -1,4 +1,7 @@
- /* h/gclincl.h.in. Generated from configure.in by autoheader. */
-+/* Whether compiling on a glibc-based system */
-+#undef _GNU_SOURCE
-+
- /* define where the heap could begin. Normally should
- be the smallest value returned by sbrk(). Underestimating
- by 10-20 megabytes is not a problem. */
-@@ -158,7 +161,6 @@
-
- #ifdef IN_NUM_CO
- #ifdef HAVE_ISNORMAL
--#define _GNU_SOURCE
- #include <math.h>
- #define ISNORMAL(a) isnormal(a)
- #else
-@@ -179,7 +181,6 @@
-
- #ifdef NEED_ISFINITE
- #ifdef HAVE_ISFINITE
--#define _GNU_SOURCE
- #include <math.h>
- #define ISFINITE(a) isfinite(a)
- #else
-@@ -393,5 +394,37 @@
- /* Define to 1 if you have the ANSI C header files. */
- #undef STDC_HEADERS
-
-+/* Enable extensions on AIX 3, Interix. */
-+#ifndef _ALL_SOURCE
-+# undef _ALL_SOURCE
-+#endif
-+/* Enable GNU extensions on systems that have them. */
-+#ifndef _GNU_SOURCE
-+# undef _GNU_SOURCE
-+#endif
-+/* Enable threading extensions on Solaris. */
-+#ifndef _POSIX_PTHREAD_SEMANTICS
-+# undef _POSIX_PTHREAD_SEMANTICS
-+#endif
-+/* Enable extensions on HP NonStop. */
-+#ifndef _TANDEM_SOURCE
-+# undef _TANDEM_SOURCE
-+#endif
-+/* Enable general extensions on Solaris. */
-+#ifndef __EXTENSIONS__
-+# undef __EXTENSIONS__
-+#endif
-+
-+
-+/* Define to 1 if on MINIX. */
-+#undef _MINIX
-+
-+/* Define to 2 if the system does not provide POSIX.1 features except with
-+ this defined. */
-+#undef _POSIX_1_SOURCE
-+
-+/* Define to 1 if you need to in order for `stat' and other things to work. */
-+#undef _POSIX_SOURCE
-+
- /* Define to `unsigned int' if <sys/types.h> does not define. */
- #undef size_t
---- ./configure.in.orig 2012-01-09 20:47:04.940687008 -0700
-+++ ./configure.in 2012-01-09 20:49:21.949801255 -0700
+--- ./configure.in.orig 2012-03-28 09:55:40.957561557 -0600
++++ ./configure.in 2012-03-28 09:56:09.658231276 -0600
@@ -421,6 +421,7 @@
LDFLAGS=" "
fi
@@ -97,7 +8,7 @@
AC_PROG_CC
AC_PROG_CPP
AC_SUBST(CC)
-@@ -1414,7 +1415,6 @@
+@@ -1431,7 +1432,6 @@
#
AC_MSG_CHECKING([for isnormal])
AC_RUN_IFELSE([AC_LANG_PROGRAM([[
@@ -105,7 +16,7 @@
#include <math.h>
]],[[
float f;
-@@ -1432,7 +1432,6 @@
+@@ -1449,7 +1449,6 @@
AC_MSG_CHECKING([for isfinite])
AC_RUN_IFELSE([AC_LANG_PROGRAM([[
@@ -113,8 +24,8 @@
#include <math.h>
]],[[
float f;
---- ./configure.orig 2012-01-09 20:47:13.481507117 -0700
-+++ ./configure 2012-01-09 20:49:33.805551545 -0700
+--- ./configure.orig 2012-03-28 09:55:40.964560988 -0600
++++ ./configure 2012-03-28 09:56:09.667230545 -0600
@@ -654,9 +654,9 @@
GMP
MAKEINFO
@@ -1509,7 +1420,7 @@
if test "x$ac_cv_header_malloc_malloc_h" = xyes; then :
else
-@@ -6860,7 +7598,6 @@
+@@ -6941,7 +7679,6 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -1517,7 +1428,7 @@
#include <math.h>
int
-@@ -6934,7 +7671,6 @@
+@@ -7015,7 +7752,6 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -1525,3 +1436,92 @@
#include <math.h>
int
+--- ./h/gclincl.h.in.orig 2012-03-28 09:55:40.955561719 -0600
++++ ./h/gclincl.h.in 2012-03-28 09:56:09.657231357 -0600
+@@ -1,4 +1,7 @@
+ /* h/gclincl.h.in. Generated from configure.in by autoheader. */
++/* Whether compiling on a glibc-based system */
++#undef _GNU_SOURCE
++
+ /* define where the heap could begin. Normally should
+ be the smallest value returned by sbrk(). Underestimating
+ by 10-20 megabytes is not a problem. */
+@@ -158,7 +161,6 @@
+
+ #ifdef IN_NUM_CO
+ #ifdef HAVE_ISNORMAL
+-#define _GNU_SOURCE
+ #include <math.h>
+ #define ISNORMAL(a) isnormal(a)
+ #else
+@@ -179,7 +181,6 @@
+
+ #ifdef NEED_ISFINITE
+ #ifdef HAVE_ISFINITE
+-#define _GNU_SOURCE
+ #include <math.h>
+ #define ISFINITE(a) isfinite(a)
+ #else
+@@ -394,5 +395,37 @@
+ /* Define to 1 if you have the ANSI C header files. */
+ #undef STDC_HEADERS
+
++/* Enable extensions on AIX 3, Interix. */
++#ifndef _ALL_SOURCE
++# undef _ALL_SOURCE
++#endif
++/* Enable GNU extensions on systems that have them. */
++#ifndef _GNU_SOURCE
++# undef _GNU_SOURCE
++#endif
++/* Enable threading extensions on Solaris. */
++#ifndef _POSIX_PTHREAD_SEMANTICS
++# undef _POSIX_PTHREAD_SEMANTICS
++#endif
++/* Enable extensions on HP NonStop. */
++#ifndef _TANDEM_SOURCE
++# undef _TANDEM_SOURCE
++#endif
++/* Enable general extensions on Solaris. */
++#ifndef __EXTENSIONS__
++# undef __EXTENSIONS__
++#endif
++
++
++/* Define to 1 if on MINIX. */
++#undef _MINIX
++
++/* Define to 2 if the system does not provide POSIX.1 features except with
++ this defined. */
++#undef _POSIX_1_SOURCE
++
++/* Define to 1 if you need to in order for `stat' and other things to work. */
++#undef _POSIX_SOURCE
++
+ /* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
+--- ./acconfig.h.orig 2012-03-28 09:55:40.953561881 -0600
++++ ./acconfig.h 2012-03-28 09:56:09.656231438 -0600
+@@ -1,3 +1,6 @@
++/* Whether compiling on a glibc-based system */
++#undef _GNU_SOURCE
++
+ /* define where the heap could begin. Normally should
+ be the smallest value returned by sbrk(). Underestimating
+ by 10-20 megabytes is not a problem. */
+@@ -157,7 +160,6 @@
+
+ #ifdef IN_NUM_CO
+ #ifdef HAVE_ISNORMAL
+-#define _GNU_SOURCE
+ #include <math.h>
+ #define ISNORMAL(a) isnormal(a)
+ #else
+@@ -178,7 +180,6 @@
+
+ #ifdef NEED_ISFINITE
+ #ifdef HAVE_ISFINITE
+-#define _GNU_SOURCE
+ #include <math.h>
+ #define ISFINITE(a) isfinite(a)
+ #else
diff --git a/gcl-2.6.8-infrastructure.patch b/gcl-2.6.8-infrastructure.patch
index 79b3274..1668762 100644
--- a/gcl-2.6.8-infrastructure.patch
+++ b/gcl-2.6.8-infrastructure.patch
@@ -1,26018 +1,26018 @@
---- ./ltmain.sh.orig 2002-08-08 23:49:32.000000000 -0600
-+++ ./ltmain.sh 2012-01-09 20:36:31.869118769 -0700
-@@ -1,199 +1,928 @@
--# ltmain.sh - Provide generalized library-building support services.
--# NOTE: Changing this file will not affect anything until you rerun ltconfig.
--#
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
--# Free Software Foundation, Inc.
--# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
--#
--# This program is free software; you can redistribute it and/or modify
-+
-+# libtool (GNU libtool) 2.4
-+# 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 Free Software Foundation, Inc.
-+# This is free software; see the source for copying conditions. There is NO
-+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+
-+# GNU Libtool is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
--# This program is distributed in the hope that it will be useful, but
-+# As a special exception to the GNU General Public License,
-+# if you distribute this file as part of a program or library that
-+# is built using GNU Libtool, you may include this file under the
-+# same distribution terms that you use for the rest of that program.
-+#
-+# GNU Libtool is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+# 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]...
- #
--# 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.
-+# 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)
-+# --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
-+# 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/>.
-
--# Check that we have a working $echo.
--if test "X$1" = X--no-reexec; then
-- # Discard the --no-reexec flag, and continue.
-- shift
--elif test "X$1" = X--fallback-echo; then
-- # Avoid inline document here, it may be left over
-- :
--elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-- # Yippee, $echo works!
-- :
-+PROGRAM=libtool
-+PACKAGE=libtool
-+VERSION=2.4
-+TIMESTAMP=""
-+package_revision=1.3293
-+
-+# 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
-- # Restart under the correct shell, and then maybe $echo will work.
-- exec $SHELL "$0" --no-reexec ${1+"$@"}
-+ 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
-
--if test "X$1" = X--fallback-echo; then
-- # used as fallback echo
-- shift
-- cat <<EOF
--$*
--EOF
-- exit 0
--fi
-+# A function that is used when there is no print builtin or printf.
-+func_fallback_echo ()
-+{
-+ eval 'cat <<_LTECHO_EOF
-+$1
-+_LTECHO_EOF'
-+}
+--- ./configure.in.orig 2012-01-18 07:52:07.000000000 -0700
++++ ./configure.in 2012-03-28 09:53:39.622413068 -0600
+@@ -1,4 +1,4 @@
+-AC_INIT()
++AC_INIT
+ AC_PREREQ([2.61])
+ AC_CONFIG_HEADER(h/gclincl.h)
--# The name of this program.
--progname=`$echo "$0" | sed 's%^.*/%%'`
--modename="$progname"
-+# 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
+@@ -445,7 +445,7 @@
+ AC_MSG_CHECKING([for CFLAG $TMPF])
+ CFLAGS_ORI=$CFLAGS
+ CFLAGS="$CFLAGS $TMPF"
+- AC_TRY_RUN([int main() {return 0;}],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no))
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([],[[return 0;]])],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no))
+ CFLAGS=$CFLAGS_ORI
--# Constants.
--PROGRAM=ltmain.sh
--PACKAGE=libtool
--VERSION=1.4a-GCC3.0
--TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)"
-+$lt_unset CDPATH
+ else
+@@ -629,9 +629,6 @@
+ AC_MSG_CHECKING([system version (for dynamic loading)])
+ if machine=`uname -m` ; then true; else machine=unknown ; fi
--default_mode=
--help="Try \`$progname --help' for more information."
--magic="%%%MAGIC variable%%%"
--mkdir="mkdir"
--mv="mv -f"
--rm="rm -f"
+-AC_CHECK_PROGS(MAKEINFO,makeinfo,"false")
+-AC_SUBST(MAKEINFO)
+-
+ if test -f /usr/lib/NextStep/software_version; then
+ system=NEXTSTEP-`${AWK} '/3/,/3/' /usr/lib/NextStep/software_version`
+ else
+@@ -672,21 +669,24 @@
--# 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'
--SP2NL='tr \040 \012'
--NL2SP='tr \015\012 \040\040'
-+# 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"
+ AC_CHECK_HEADER(unistd.h,
+ AC_CHECK_LIB(c,sysconf,
+- AC_MSG_CHECKING("for _SC_CLK_TCK")
+- AC_TRY_RUN([#include <unistd.h>
++ AC_MSG_CHECKING([for _SC_CLK_TCK])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <unistd.h>
+ #include <stdio.h>
+- int
+- main() {
++ ]],[[
+ FILE *fp=fopen("conftest1","w");
+ fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
+ fclose(fp);
+ return 0;
+- }],
++ ]])],
+ hz=`cat conftest1`
+ AC_DEFINE_UNQUOTED(HZ,$hz)
+ ,hz=0,hz=0)
+ [AC_MSG_RESULT($hz)]))
--# NLS nuisances.
--# Only set LANG and LC_ALL to C if already set.
--# These must not be set unconditionally because not all systems understand
--# e.g. LANG=C (notably SCO).
--# We save the old values to restore during execute mode.
--if test "${LC_ALL+set}" = set; then
-- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
--fi
--if test "${LANG+set}" = set; then
-- save_LANG="$LANG"; LANG=C; export LANG
--fi
++AC_PROG_EGREP
++AC_CHECK_PROGS(MAKEINFO,makeinfo,"false")
++AC_SUBST(MAKEINFO)
--if test "$LTCONFIG_VERSION" != "$VERSION"; then
-- echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
-- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
-- exit 1
--fi
+ #MY_SUBDIRS=
--if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-- echo "$modename: not configured to build any kind of library" 1>&2
-- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
-- exit 1
--fi
-+: ${CP="cp -f"}
-+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-+: ${EGREP="/bin/grep -E"}
-+: ${FGREP="/bin/grep -F"}
-+: ${GREP="/bin/grep"}
-+: ${LN_S="ln -s"}
-+: ${MAKE="make"}
-+: ${MKDIR="mkdir"}
-+: ${MV="mv -f"}
-+: ${RM="rm -f"}
-+: ${SED="/bin/sed"}
-+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-+: ${Xsed="$SED -e 1s/^X//"}
+@@ -703,17 +703,19 @@
+ if test "$enable_dynsysgmp" = "yes" ; then
+ AC_CHECK_HEADER(gmp.h,
+ AC_CHECK_LIB(gmp,__gmpz_init,
+- AC_MSG_CHECKING("for external gmp version")
+- AC_TRY_RUN([#include <gmp.h>
+- int main() {
++ AC_MSG_CHECKING([for external gmp version])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <gmp.h>
++ ]],[[
+ #if __GNU_MP_VERSION == 4 || __GNU_MP_VERSION == 5
+ return 0;
+ #else
+ return -1;
+ #endif
+- }],
++ ]])],
+ # MPFILES=$GMPDIR/mpn/mul_n.o
+ # PATCHED_SYMBOLS=__gmpn_toom3_mul_n
++ AC_MSG_RESULT([4/5])
+ MPFILES=
+ PATCHED_SYMBOLS=
+ # if test "$use" = "m68k-linux" ; then
+@@ -725,7 +727,8 @@
+ echo "int main() {return 0;}" >>foo.c
+ MP_INCLUDE=`cpp foo.c | grep /gmp.h | head -n 1 | $AWK '{print $3}' | tr -d '"'`
+ rm -f foo.c,
+- echo "Cannot use dynamic gmp lib" , echo "Cannot use dynamic gmp lib" ),
++ AC_MSG_RESULT([Cannot use dynamic gmp lib]),
++ AC_MSG_RESULT([Cannot use dynamic gmp lib])),
+ echo "Cannot use dynamic gmp lib" ,),
+ echo "Cannot use dynamic gmp lib" ,)
+ fi
+@@ -772,7 +775,7 @@
--# Global variables.
--mode=$default_mode
--nonopt=
--prev=
--prevopt=
--run=
--show="$echo"
--show_help=
--execute_dlfiles=
--lo2o="s/\\.lo\$/.${objext}/"
--o2lo="s/\\.${objext}\$/.lo/"
--taglist=
-+# 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.
+ fi
--# Parse our command line options once, thoroughly.
--while test $# -gt 0
--do
-- arg="$1"
-- shift
-+exit_status=$EXIT_SUCCESS
+-AC_MSG_CHECKING("for leading underscore in object symbols")
++AC_MSG_CHECKING([for leading underscore in object symbols])
+ cat>foo.c <<EOFF
+ #include <math.h>
+ #include <stdio.h>
+@@ -782,60 +785,62 @@
+ if nm foo.o |grep " U " | grep "_cos" >/dev/null || nm foo.o |grep " U " | grep " _getc" >/dev/null ; then
+ LEADING_UNDERSCORE=1
+ AC_DEFINE(LEADING_UNDERSCORE)
+- AC_MSG_RESULT("yes")
++ AC_MSG_RESULT([yes])
+ else
+ LEADING_UNDERSCORE=""
+- AC_MSG_RESULT("no")
++ AC_MSG_RESULT([no])
+ fi
+-AC_MSG_CHECKING("for GNU ld option -Map")
++AC_MSG_CHECKING([for GNU ld option -Map])
+ touch map
+ $CC -o foo [ -Wl,-Map ] map foo.o >/dev/null 2>&1
+ if test `cat map | wc -l` != "0" ; then
+- AC_MSG_RESULT("yes")
++ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_GNU_LD)
+ GNU_LD=1
+ else
+- AC_MSG_RESULT("no")
++ AC_MSG_RESULT([no])
+ GNU_LD=
+ fi
+ rm -f foo.c foo.o foo map
-- case $arg in
-- -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
-- *) optarg= ;;
-- esac
-+# Make sure IFS has a sensible default
-+lt_nl='
-+'
-+IFS=" $lt_nl"
+- AC_MSG_CHECKING("for size of gmp limbs")
+- AC_TRY_RUN([#include <stdio.h>
++ AC_MSG_CHECKING([for size of gmp limbs])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <stdio.h>
+ #include "$MP_INCLUDE"
+- int main() {
++ ]],[[
+ FILE *fp=fopen("conftest1","w");
+ fprintf(fp,"%u",sizeof(mp_limb_t));
+ fclose(fp);
+ return 0;
+- }],mpsize=`cat conftest1`,mpsize=0,mpsize=0)
++ ]])],mpsize=`cat conftest1`,mpsize=0,mpsize=0)
+ if test "$mpsize" = "0" ; then
+- echo "Cannot determine mpsize"
+- exit 1
++ AC_MSG_ERROR([Cannot determine mpsize], 1)
+ fi
+ AC_DEFINE_UNQUOTED(MP_LIMB_BYTES,$mpsize)
+ AC_MSG_RESULT($mpsize)
-- # If the previous option needs an argument, assign it.
-- if test -n "$prev"; then
-- case $prev in
-- execute_dlfiles)
-- execute_dlfiles="$execute_dlfiles $arg"
-+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.
- ;;
-- tag)
-- tagname="$arg"
-+ ..)
-+ # 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
-+}
+- AC_MSG_CHECKING("_SHORT_LIMB")
+- AC_TRY_RUN([#include <stdio.h>
++ AC_MSG_CHECKING([_SHORT_LIMB])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <stdio.h>
+ #include "$MP_INCLUDE"
+- int main() {
++ ]],[[
+ #ifdef _SHORT_LIMB
+ return 0;
+ #else
+ return 1;
+ #endif
+- }],AC_DEFINE(__SHORT_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
+- AC_MSG_CHECKING("_LONG_LONG_LIMB")
+- AC_TRY_RUN([#include <stdio.h>
++ ]])],AC_DEFINE(__SHORT_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
++ AC_MSG_CHECKING([_LONG_LONG_LIMB])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <stdio.h>
+ #include "$MP_INCLUDE"
+- int main() {
++ ]],[[
+ #ifdef _LONG_LONG_LIMB
+ return 0;
+ #else
+ return 1;
+ #endif
+- }],AC_DEFINE(__LONG_LONG_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
++ ]])],AC_DEFINE(__LONG_LONG_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
-- # Check whether tagname contains only valid characters
-- case $tagname in
-- *[!-_A-Za-z0-9,/]*)
-- echo "$progname: invalid tag name: $tagname" 1>&2
-- exit 1
-- ;;
-- esac
-+# 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
+ GMP=1
+ AC_DEFINE(GMP)
+@@ -891,10 +896,9 @@
-- case $tagname in
-- CC)
-- # Don't test for the "default" C tag, as we know, it's there, but
-- # not specially marked.
-- taglist="$taglist $tagname"
-- ;;
-+ # 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
-+ ;;
- *)
-- if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
-- taglist="$taglist $tagname"
-- # Evaluate the configuration.
-- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
-- else
-- echo "$progname: ignoring unknown tag $tagname" 1>&2
-+ 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
-- ;;
-- *)
-- eval "$prev=\$arg"
-- ;;
- esac
-+ done
+ AC_CHECK_LIB(dl,dlopen,have_dl=1,have_dl=0)
+ if test "$have_dl" = "0" ; then
+- echo "Cannot find dlopen in -dl"
+- exit 1
++ AC_MSG_ERROR([Cannot find dlopen in -dl], 1)
+ fi
+-dnl AC_SEARCH_LIBS(dlopen, dl, have_dl=1, AC_ERROR(dlopen not found))
++dnl AC_SEARCH_LIBS(dlopen, dl, have_dl=1, AC_MSG_ERROR([dlopen not found]))
+ dnl LIBS and TLIBS - why not merged from the beginning?
-- prev=
-- prevopt=
-- continue
-+ # 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
+ TLIBS="$TLIBS -ldl -rdynamic"
+@@ -908,15 +912,17 @@
+ #
+ # Old binutils appear to need CONST defined to const
+ #
+- AC_MSG_CHECKING(if need to define CONST for bfd)
+- AC_TRY_RUN([#define IN_GCC
++ AC_MSG_CHECKING([if need to define CONST for bfd])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #define IN_GCC
+ #include <bfd.h>
+- int main() { symbol_info t; return 0;}],
++ ]],[[symbol_info t; return 0;]])],
+ AC_MSG_RESULT(no),
+- AC_TRY_RUN([#define CONST const
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #define CONST const
+ #define IN_GCC
+ #include <bfd.h>
+- int main() {symbol_info t; return 0;}],
++ ]],[[symbol_info t; return 0;]])],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(NEED_CONST),
+ AC_MSG_ERROR([cannot use bfd]),
+@@ -930,11 +936,12 @@
+ # BFD boolean syntax
+ #
-- # Have we seen a non-optional argument yet?
-- case $arg in
-- --help)
-- show_help=yes
-- ;;
-+ # 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
-+}
+- AC_MSG_CHECKING(for useable bfd_boolean)
+- AC_TRY_RUN([#define IN_GCC
++ AC_MSG_CHECKING([for usable bfd_boolean])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #define IN_GCC
+ #include <bfd.h>
+ bfd_boolean foo() {return FALSE;}
+- int main() {return 0;}],
++ ]],[[return 0;]])],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BFD_BOOLEAN),
+ AC_MSG_RESULT(no),
+@@ -945,10 +952,11 @@
+ # bfd_link_info.output_bfd minimal configure change check
+ #
-- --version)
-- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
-- exit 0
-+# 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=:
-+ 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'
-+
-+# 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 --version) 2>/dev/null |$SED 1q`"'/
-+ s/\$autoconf_version/'"`(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"
-
-- --config)
-- sed -n -e '/^### BEGIN LIBTOOL CONFIG/,/^### END LIBTOOL CONFIG/p' < "$0"
- # Now print the configurations for the tags.
- for tagname in $taglist; do
-- sed -n -e "/^### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
-+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
- done
-- exit 0
-- ;;
-
-- --debug)
-- echo "$progname: enabling shell trace mode"
-- set -x
-- ;;
--
-- --dry-run | -n)
-- run=:
-- ;;
-+ exit $?
-+}
-
-- --features)
-+# 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"
-@@ -205,349 +934,1184 @@
- else
- echo "disable static libraries"
- fi
-- exit 0
-- ;;
-
-- --finish) mode="finish" ;;
-+ exit $?
-+}
-
-- --mode) prevopt="--mode" prev=mode ;;
-- --mode=*) mode="$optarg" ;;
-+# 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"
-
-- --quiet | --silent)
-- show=:
-- ;;
-+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-- --tag) prevopt="--tag" prev=tag ;;
-- --tag=*)
-- set tag "$optarg" ${1+"$@"}
-+ # 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_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
-- prev=tag
-- ;;
-+ 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) ;;
-
-- -dlopen)
-- prevopt="-dlopen"
-- prev=execute_dlfiles
-- ;;
-+ # 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-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
-+ ;;
-
-- -*)
-- $echo "$modename: unrecognized option \`$arg'" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-+ -\?|-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"
-+ ;;
- *)
-- nonopt="$arg"
-- break
-+ # Including no sysroot.
-+ func_replace_sysroot_result=$1
- ;;
- esac
--done
-+}
-
--if test -n "$prevopt"; then
-- $echo "$modename: option \`$prevopt' requires an argument" 1>&2
-- $echo "$help" 1>&2
-- exit 1
--fi
-+# 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
-+}
-
--# 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=
-
--if test -z "$show_help"; then
-
-- # Infer the operation mode.
-- if test -z "$mode"; then
-- case $nonopt in
-- *cc | *++ | gcc* | *-gcc*)
-- mode=link
-- for arg
-- do
-- case $arg in
-- -c)
-- mode=compile
-- break
-- ;;
-- esac
-- done
-- ;;
-- *db | *dbx | *strace | *truss)
-- mode=execute
-- ;;
-- *install*|cp|mv)
-- mode=install
-- ;;
-- *rm)
-- mode=uninstall
-- ;;
-- *)
-- # If we have no mode, but dlfiles were specified, then do execute mode.
-- test -n "$execute_dlfiles" && mode=execute
-+# func_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
-
-- # Just use the default operation mode.
-- if test -z "$mode"; then
-- if test -n "$nonopt"; then
-- $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
-- else
-- $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
-- 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
- ;;
-- esac
-+ *)
-+ $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
-
-- # Only execute mode is allowed to have -dlopen flags.
-- if test -n "$execute_dlfiles" && test "$mode" != execute; then
-- $echo "$modename: unrecognized option \`-dlopen'" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-+
-+# 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
-
-- # Change the help message to a mode-specific one.
-- generic_help="$help"
-- help="Try \`$modename --help --mode=$mode' for more information."
-
-- # These modes are in order of execution frequency so that they run quickly.
-- case $mode in
-- # libtool compile mode
-- compile)
-- modename="$modename: compile"
-- # Get the compilation command and the source file.
-- base_compile=
-- prev=
-- lastarg=
-- srcfile="$nonopt"
-- suppress_output=
-+# 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
-
-- user_target=no
-- for arg
-- do
-- case $prev in
-- "") ;;
-- xcompiler)
-- # Aesthetically quote the previous argument.
-- prev=
-- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-
-- case $arg in
-- # Double-quote args containing other shell metacharacters.
-- # Many Bourne shells cannot handle close brackets correctly
-- # in scan sets, so we specify it separately.
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- arg="\"$arg\""
-- ;;
-- esac
-+# 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
-
-- # Add the previous argument to base_compile.
-- if test -z "$base_compile"; then
-- base_compile="$lastarg"
-- else
-- base_compile="$base_compile $lastarg"
-- fi
-- continue
-- ;;
-- esac
-
-- # Accept any command-line options.
-- case $arg in
-- -o)
-- if test "$user_target" != "no"; then
-- $echo "$modename: you cannot specify \`-o' more than once" 1>&2
-- exit 1
-- fi
-- user_target=next
-- ;;
-+# 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
-
-- -static)
-- build_old_libs=yes
-- continue
-- ;;
-
-- -prefer-pic)
-- pic_mode=yes
-- continue
-- ;;
-+#############################################
-+# $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.
-
-- -prefer-non-pic)
-- pic_mode=no
-- continue
-- ;;
-
-- -Xcompiler)
-- prev=xcompiler
-- continue
-- ;;
-+# 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
-+}
-
-- -Wc,*)
-- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
-- lastarg=
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
-- for arg in $args; do
-- IFS="$save_ifs"
-
-- # Double-quote args containing other shell metacharacters.
-- # Many Bourne shells cannot handle close brackets correctly
-- # in scan sets, so we specify it separately.
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- arg="\"$arg\""
-- ;;
-- esac
-- lastarg="$lastarg $arg"
-- done
-- IFS="$save_ifs"
-- lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
-+# 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
-
-- # Add the arguments to base_compile.
-- if test -z "$base_compile"; then
-- base_compile="$lastarg"
-- else
-- base_compile="$base_compile $lastarg"
-- fi
-- continue
-- ;;
-- esac
-
-- case $user_target in
-- next)
-- # The next one is the -o target name
-- user_target=yes
-- continue
-+# 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
- ;;
-- yes)
-- # We got the output file
-- user_target=set
-+
-+ target )
- libobj="$arg"
-+ arg_mode=normal
- continue
- ;;
-- esac
-
-- # Accept the current argument as the source file.
-- lastarg="$srcfile"
-- srcfile="$arg"
-+ 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
-+ ;;
-
-- # Aesthetically quote the previous argument.
-+ -pie | -fpie | -fPIE)
-+ func_append pie_flag " $arg"
-+ continue
-+ ;;
-
-- # Backslashify any backslashes, double quotes, and dollar signs.
-- # These are the only characters that are still specially
-- # interpreted inside of double-quoted scrings.
-- lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
-+ -shared | -static | -prefer-pic | -prefer-non-pic)
-+ func_append later " $arg"
-+ continue
-+ ;;
-
-- # Double-quote args containing other shell metacharacters.
-- # Many Bourne shells cannot handle close brackets correctly
-- # in scan sets, so we specify it separately.
-- case $lastarg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- lastarg="\"$lastarg\""
-+ -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
-+ esac # case $arg_mode
-
-- # Add the previous argument to base_compile.
-- if test -z "$base_compile"; then
-- base_compile="$lastarg"
-- else
-- base_compile="$base_compile $lastarg"
-- fi
-- done
-+ # Aesthetically quote the previous argument.
-+ func_append_quoted base_compile "$lastarg"
-+ done # for arg
-
-- case $user_target in
-- set)
-+ case $arg_mode in
-+ arg)
-+ func_fatal_error "you must specify an argument for -Xcompile"
- ;;
-- no)
-- # Get the name of the library object.
-- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
-+ target)
-+ func_fatal_error "you must specify a target with \`-o'"
- ;;
- *)
-- $echo "$modename: you must specify a target with \`-o'" 1>&2
-- exit 1
-+ # 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
-- xform='[cCFSfmso]'
- case $libobj in
-- *.ada) xform=ada ;;
-- *.adb) xform=adb ;;
-- *.ads) xform=ads ;;
-- *.asm) xform=asm ;;
-- *.c++) xform=c++ ;;
-- *.cc) xform=cc ;;
-- *.class) xform=class ;;
-- *.cpp) xform=cpp ;;
-- *.cxx) xform=cxx ;;
-- *.f90) xform=f90 ;;
-- *.for) xform=for ;;
-- *.java) xform=java ;;
-+ *.[cCFSifmso] | \
-+ *.ada | *.adb | *.ads | *.asm | \
-+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-+ *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
-+ func_xform "$libobj"
-+ libobj=$func_xform_result
-+ ;;
- esac
-
-- libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
--
- case $libobj in
-- *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
-+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
- *)
-- $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
-- exit 1
-+ func_fatal_error "cannot determine name of library object from \`$libobj'"
- ;;
- esac
-
-- # 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.
-- if test -n "$available_tags" && test -z "$tagname"; then
-- case $base_compile in
-- "$CC "*) ;;
-- # Blanks in the command may have been stripped by the calling shell,
-- # but not from the CC environment variable when ltconfig was run.
-- "`$echo $CC` "*) ;;
-- *)
-- for z in $available_tags; do
-- if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
-- # Evaluate the configuration.
-- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
-- case $base_compile in
-- "$CC "*)
-- # The compiler in the base compile command matches
-- # the one in the tagged configuration.
-- # Assume this is the tagged configuration we want.
-- tagname=$z
-- break
-- ;;
-- "`$echo $CC` "*)
-- tagname=$z
-- break
-- ;;
-- esac
-- fi
-- done
-- # If $tagname still isn't set, then no tagged configuration
-- # was found and let the user know that the "--tag" command
-- # line option must be used.
-- if test -z "$tagname"; then
-- echo "$modename: unable to infer tagged configuration"
-- echo "$modename: specify a tag with \`--tag'" 1>&2
-- exit 1
--# else
--# echo "$modename: using $tagname tagged configuration"
-- fi
-+ 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
-- fi
-+ done
-
-- objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
-- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$xdir" = "X$obj"; then
-- xdir=
-- else
-- xdir=$xdir/
-- fi
-+ 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
-
-- if test -z "$base_compile"; then
-- $echo "$modename: you must specify a compilation command" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
-+ 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
-@@ -556,16 +2120,13 @@
- removelist="$lobj $libobj ${libobj}T"
- fi
-
-- $run $rm $removelist
-- trap "$run $rm $removelist; exit 1" 1 2 15
--
- # On Cygwin there's no "real" PIC flag so we must build both object types
- case $host_os in
-- cygwin* | mingw* | pw32* | os2*)
-+ cygwin* | mingw* | pw32* | os2* | cegcc*)
- pic_mode=default
- ;;
- esac
-- if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
-+ 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
-@@ -573,10 +2134,8 @@
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
-- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
-+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
-- removelist="$removelist $output_obj $lockfile"
-- trap "$run $rm $removelist; exit 1" 1 2 15
- else
- output_obj=
- need_locks=no
-@@ -586,13 +2145,13 @@
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
-- until $run ln "$0" "$lockfile" 2>/dev/null; do
-- $show "Waiting for $lockfile to be removed"
-+ 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 "\
-+ $ECHO "\
- *** ERROR, $lockfile exists and contains:
- `cat $lockfile 2>/dev/null`
-
-@@ -603,29 +2162,21 @@
- avoid parallel builds (make -j) in this platform, or get a better
- compiler."
-
-- $run $rm $removelist
-- exit 1
-+ $opt_dry_run || $RM $removelist
-+ exit $EXIT_FAILURE
- fi
-- echo $srcfile > "$lockfile"
-- fi
--
-- if test -n "$fix_srcfile_path"; then
-- eval srcfile=\"$fix_srcfile_path\"
-+ func_append removelist " $output_obj"
-+ $ECHO "$srcfile" > "$lockfile"
- fi
-
-- $run $rm "$libobj" "${libobj}T"
--
-- # Create a libtool object file (analogous to a ".la" file),
-- # but don't create it if we're doing a dry run.
-- test -z "$run" && cat > ${libobj}T <<EOF
--# $libobj - a libtool object file
--# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
--#
--# Please DO NOT delete this file!
--# It is necessary for linking the library.
-+ $opt_dry_run || $RM $removelist
-+ func_append removelist " $lockfile"
-+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
--# Name of the PIC object.
--EOF
-+ 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
-@@ -633,38 +2184,25 @@
- fbsd_hideous_sh_bug=$base_compile
-
- if test "$pic_mode" != no; then
-- command="$base_compile $srcfile $pic_flag"
-+ command="$base_compile $qsrcfile $pic_flag"
- else
- # Don't build PIC code
-- command="$base_compile $srcfile"
-+ command="$base_compile $qsrcfile"
- fi
-
-- if test ! -d ${xdir}$objdir; then
-- $show "$mkdir ${xdir}$objdir"
-- $run $mkdir ${xdir}$objdir
-- status=$?
-- if test $status -ne 0 && test ! -d ${xdir}$objdir; then
-- exit $status
-- fi
-- fi
-+ func_mkdir_p "$xdir$objdir"
-
- if test -z "$output_obj"; then
-- # Place PIC objects in $objdir
-- command="$command -o $lobj"
-+ # Place PIC objects in $objdir
-+ func_append command " -o $lobj"
- fi
-
-- $run $rm "$lobj" "$output_obj"
--
-- $show "$command"
-- if $run eval "$command"; then :
-- else
-- test -n "$output_obj" && $run $rm $removelist
-- exit 1
-- 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 "\
-+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-+ $ECHO "\
- *** ERROR, $lockfile contains:
- `cat $lockfile 2>/dev/null`
-
-@@ -678,63 +2216,42 @@
- avoid parallel builds (make -j) in this platform, or get a better
- compiler."
-
-- $run $rm $removelist
-- exit 1
-+ $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
-- $show "$mv $output_obj $lobj"
-- if $run $mv $output_obj $lobj; then :
-- else
-- error=$?
-- $run $rm $removelist
-- exit $error
-- fi
-+ 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
-
-- # Append the name of the PIC object to the libtool object file.
-- test -z "$run" && cat >> ${libobj}T <<EOF
--pic_object='$objdir/$objname'
--
--EOF
--
- # Allow error messages only from the first compilation.
-- suppress_output=' >/dev/null 2>&1'
-- else
-- # No PIC object so indicate it doesn't exist in the libtool
-- # object file.
-- test -z "$run" && cat >> ${libobj}T <<EOF
--pic_object=none
--
--EOF
-+ 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 $srcfile"
-+ command="$base_compile $qsrcfile$pie_flag"
- else
-- command="$base_compile $srcfile $pic_flag"
-+ command="$base_compile $qsrcfile $pic_flag"
- fi
- if test "$compiler_c_o" = yes; then
-- command="$command -o $obj"
-+ func_append command " -o $obj"
- fi
-
- # Suppress compiler output if we already did a PIC compilation.
-- command="$command$suppress_output"
-- $run $rm "$obj" "$output_obj"
-- $show "$command"
-- if $run eval "$command"; then :
-- else
-- $run $rm $removelist
-- exit 1
-- fi
-+ 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 "\
-+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-+ $ECHO "\
- *** ERROR, $lockfile contains:
- `cat $lockfile 2>/dev/null`
-
-@@ -748,57 +2265,2828 @@
- avoid parallel builds (make -j) in this platform, or get a better
- compiler."
-
-- $run $rm $removelist
-- exit 1
-+ $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
-- $show "$mv $output_obj $obj"
-- if $run $mv $output_obj $obj; then :
-+ 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
-- error=$?
-- $run $rm $removelist
-- exit $error
-+ 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
-
-- # Append the name of the non-PIC object the libtool object file.
-- # Only append if the libtool object file exists.
-- test -z "$run" && cat >> ${libobj}T <<EOF
--# Name of the non-PIC object.
--non_pic_object='$objname'
-+ # This variable tells wrapper scripts just to set shlibpath_var
-+ # rather than running their programs.
-+ libtool_execute_magic="$magic"
-
--EOF
-+ # 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
-- # Append the name of the non-PIC object the libtool object file.
-- # Only append if the libtool object file exists.
-- test -z "$run" && cat >> ${libobj}T <<EOF
--# Name of the non-PIC object.
--non_pic_object=none
-+ # 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
-+}
-
--EOF
-+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
-
-- $run $mv "${libobj}T" "${libobj}"
-+ 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
-
-- # Unlock the critical section if it was locked
-- if test "$need_locks" != no; then
-- $run $rm "$lockfile"
-+ # 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
-+}
-
-- exit 0
-+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_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-+
-+ if test -n "$stripme" && test -n "$old_striplib"; then
-+ func_show_eval "$old_striplib $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"
-+}
-
-- # libtool link mode
-- link | relink)
-- modename="$modename: link"
-+# 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 ()
-+{
-+ for lt_wr_arg
-+ do
-+ case \$lt_wr_arg in
-+ --lt-*) ;;
-+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-+ esac
-+ shift
-+ done
-+ 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 -e 's/\([\\"]\)/\\\1/g' \
-+ -e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
-+
-+ 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*)
-+ *-*-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 invokation.
-+ # flag for every libtool invocation.
- # allow_undefined=no
-
- # FIXME: Unfortunately, there are problems with the above when trying
-@@ -812,10 +5100,10 @@
- allow_undefined=yes
- ;;
- esac
-- libtool_args="$nonopt"
-- base_compile="$nonopt"
-- compile_command="$nonopt"
-- finalize_command="$nonopt"
-+ libtool_args=$nonopt
-+ base_compile="$nonopt $@"
-+ compile_command=$nonopt
-+ finalize_command=$nonopt
-
- compile_rpath=
- finalize_rpath=
-@@ -829,8 +5117,11 @@
- linker_flags=
- dllsearchpath=
- lib_search_path=`pwd`
-+ inst_prefix_dir=
-+ new_inherited_linker_flags=
-
- avoid_version=no
-+ bindir=
- dlfiles=
- dlprefiles=
- dlself=no
-@@ -844,6 +5135,7 @@
- no_install=no
- objs=
- non_pic_objects=
-+ precious_files_regex=
- prefer_static_libs=no
- preload=no
- prev=
-@@ -855,27 +5147,47 @@
- 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
-- -all-static | -static)
-- if test "X$arg" = "X-all-static"; then
-+ -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
-- $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
-+ func_warning "complete static linking is impossible in this configuration"
- fi
- if test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
-- else
-+ prefer_static_libs=yes
-+ ;;
-+ -static)
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
-- 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
-- prefer_static_libs=yes
- break
- ;;
- esac
-@@ -885,33 +5197,33 @@
- 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
-+ while test "$#" -gt 0; do
- arg="$1"
-- base_compile="$base_compile $arg"
- shift
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
-- ;;
-- *) qarg=$arg ;;
-- esac
-- libtool_args="$libtool_args $qarg"
-+ 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)
-- compile_command="$compile_command @OUTPUT@"
-- finalize_command="$finalize_command @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.
-- compile_command="$compile_command @SYMFILE@"
-- finalize_command="$finalize_command @SYMFILE@"
-+ func_append compile_command " @SYMFILE@"
-+ func_append finalize_command " @SYMFILE@"
- preload=yes
- fi
- case $arg in
-@@ -938,9 +5250,9 @@
- ;;
- *)
- if test "$prev" = dlfiles; then
-- dlfiles="$dlfiles $arg"
-+ func_append dlfiles " $arg"
- else
-- dlprefiles="$dlprefiles $arg"
-+ func_append dlprefiles " $arg"
- fi
- prev=
- continue
-@@ -949,10 +5261,8 @@
- ;;
- expsyms)
- export_symbols="$arg"
-- if test ! -f "$arg"; then
-- $echo "$modename: symbol file \`$arg' does not exist"
-- exit 1
-- fi
-+ test -f "$arg" \
-+ || func_fatal_error "symbol file \`$arg' does not exist"
- prev=
- continue
- ;;
-@@ -961,115 +5271,127 @@
- prev=
- continue
- ;;
-- release)
-- release="-$arg"
-+ 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
-+ save_arg=$arg
- moreargs=
-- for fil in `cat $save_arg`
-+ for fil in `cat "$save_arg"`
- do
--# moreargs="$moreargs $fil"
-- arg=$fil
-- # A libtool-controlled object.
-+# func_append moreargs " $fil"
-+ arg=$fil
-+ # A libtool-controlled object.
-
- # Check to see that this really is a libtool object.
-- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- pic_object=
-- non_pic_object=
--
-- # Read the .lo file
-- # If there is no directory component, then add one.
-- case $arg in
-- */* | *\\*) . $arg ;;
-- *) . ./$arg ;;
-- esac
-+ if func_lalib_unsafe_p "$arg"; then
-+ pic_object=
-+ non_pic_object=
-
-- if test -z "$pic_object" || \
-- test -z "$non_pic_object" ||
-- test "$pic_object" = none && \
-- test "$non_pic_object" = none; then
-- $echo "$modename: cannot find name of object for \`$arg'" 1>&2
-- exit 1
-- fi
-+ # Read the .lo file
-+ func_source "$arg"
-
-- # Extract subdirectory from the argument.
-- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$xdir" = "X$arg"; then
-- xdir=
-- else
-- xdir="$xdir/"
-- fi
-+ 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
-
-- if test "$pic_object" != none; then
-- # Prepend the subdirectory the object is found in.
-- pic_object="$xdir$pic_object"
-+ # Extract subdirectory from the argument.
-+ func_dirname "$arg" "/" ""
-+ xdir="$func_dirname_result"
-
-- if test "$prev" = dlfiles; then
-- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-- dlfiles="$dlfiles $pic_object"
-- prev=
-- continue
-- else
-- # If libtool objects are unsupported, then we need to preload.
-- prev=dlprefiles
-- fi
-- fi
-+ if test "$pic_object" != none; then
-+ # Prepend the subdirectory the object is found in.
-+ pic_object="$xdir$pic_object"
-
-- # CHECK ME: I think I busted this. -Ossama
-- if test "$prev" = dlprefiles; then
-- # Preload the old-style object.
-- dlprefiles="$dlprefiles $pic_object"
-- prev=
-- fi
-+ 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
-
-- # A PIC object.
-- libobjs="$libobjs $pic_object"
-- arg="$pic_object"
-- 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
-
-- # 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 PIC object.
-+ func_append libobjs " $pic_object"
-+ arg="$pic_object"
-+ fi
-
-- # A standard non-PIC object
-- non_pic_objects="$non_pic_objects $non_pic_object"
-- if test -z "$pic_object" || test "$pic_object" = none ; then
-- arg="$non_pic_object"
-- fi
-- fi
-- else
-- # Only an error if not doing a dry-run.
-- if test -z "$run"; then
-- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
-- exit 1
-- else
-- # Dry-run case.
-+ # 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"
-
-- # Extract subdirectory from the argument.
-- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$xdir" = "X$arg"; then
-- xdir=
-- else
-- xdir="$xdir/"
-- fi
-+ # 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"
-
-- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
-- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
-- libobjs="$libobjs $pic_object"
-- non_pic_objects="$non_pic_objects $non_pic_object"
-- fi
-+ 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
-- $echo "$modename: link input file \`$save_arg' does not exist"
-- exit 1
-+ func_fatal_error "link input file \`$arg' does not exist"
- fi
-- arg=$save_arg
-+ arg=$save_arg
-+ prev=
-+ continue
-+ ;;
-+ precious_regex)
-+ precious_files_regex="$arg"
-+ prev=
-+ continue
-+ ;;
-+ release)
-+ release="-$arg"
- prev=
- continue
- ;;
-@@ -1078,37 +5400,54 @@
- case $arg in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
-- $echo "$modename: only absolute run-paths are allowed" 1>&2
-- exit 1
-+ func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- if test "$prev" = rpath; then
- case "$rpath " in
- *" $arg "*) ;;
-- *) rpath="$rpath $arg" ;;
-+ *) func_append rpath " $arg" ;;
- esac
- else
- case "$xrpath " in
- *" $arg "*) ;;
-- *) xrpath="$xrpath $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)
-- compiler_flags="$compiler_flags $qarg"
-+ func_append compiler_flags " $qarg"
- prev=
-- compile_command="$compile_command $qarg"
-- finalize_command="$finalize_command $qarg"
-+ func_append compile_command " $qarg"
-+ func_append finalize_command " $qarg"
- continue
- ;;
- xlinker)
-- linker_flags="$linker_flags $qarg"
-- compiler_flags="$compiler_flags $wl$qarg"
-+ func_append linker_flags " $qarg"
-+ func_append compiler_flags " $wl$qarg"
- prev=
-- compile_command="$compile_command $wl$qarg"
-- finalize_command="$finalize_command $wl$qarg"
-+ func_append compile_command " $wl$qarg"
-+ func_append finalize_command " $wl$qarg"
- continue
- ;;
- *)
-@@ -1117,23 +5456,23 @@
- continue
- ;;
- esac
-- fi # test -n $prev
-+ fi # test -n "$prev"
-
- prevarg="$arg"
-
- case $arg in
- -all-static)
- if test -n "$link_static_flag"; then
-- compile_command="$compile_command $link_static_flag"
-- finalize_command="$finalize_command $link_static_flag"
-+ # 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.
-- $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
-- continue
-+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
- ;;
-
- -avoid-version)
-@@ -1141,6 +5480,11 @@
- continue
- ;;
-
-+ -bindir)
-+ prev=bindir
-+ continue
-+ ;;
-+
- -dlopen)
- prev=dlfiles
- continue
-@@ -1158,8 +5502,7 @@
-
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-- $echo "$modename: more than one -exported-symbols argument is not allowed"
-- exit 1
-+ func_fatal_error "more than one -exported-symbols argument is not allowed"
- fi
- if test "X$arg" = "X-export-symbols"; then
- prev=expsyms
-@@ -1169,44 +5512,74 @@
- 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*)
-- compile_command="$compile_command $arg"
-- finalize_command="$finalize_command $arg"
-+ no/*-*-irix* | /*-*-irix*)
-+ func_append compile_command " $arg"
-+ func_append finalize_command " $arg"
- ;;
- esac
- continue
- ;;
-
- -L*)
-- dir=`$echo "X$arg" | $Xsed -e 's/^-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`
-- if test -z "$absdir"; then
-- $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
-- exit 1
-- fi
-+ test -z "$absdir" && \
-+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
- dir="$absdir"
- ;;
- esac
- case "$deplibs " in
-- *" -L$dir "*) ;;
-+ *" -L$dir "* | *" $arg "*)
-+ # Will only happen for absolute or sysroot arguments
-+ ;;
- *)
-- deplibs="$deplibs -L$dir"
-- lib_search_path="$lib_search_path $dir"
-+ # 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*)
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
- case :$dllsearchpath: in
- *":$dir:"*) ;;
-- *) dllsearchpath="$dllsearchpath:$dir";;
-+ ::) dllsearchpath=$dir;;
-+ *) func_append dllsearchpath ":$dir";;
-+ esac
-+ case :$dllsearchpath: in
-+ *":$testbindir:"*) ;;
-+ ::) dllsearchpath=$testbindir;;
-+ *) func_append dllsearchpath ":$testbindir";;
- esac
- ;;
- esac
-@@ -1216,17 +5589,41 @@
- -l*)
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
- case $host in
-- *-*-cygwin* | *-*-pw32* | *-*-beos*)
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
- # These systems don't actually have a C or math library (as such)
- continue
- ;;
-- *-*-mingw* | *-*-os2*)
-+ *-*-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
-- deplibs="$deplibs $arg"
-+ func_append deplibs " $arg"
- continue
- ;;
-
-@@ -1235,6 +5632,33 @@
- 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)
-+ 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
-@@ -1242,11 +5666,11 @@
-
- -no-install)
- case $host in
-- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
- # The PATH hackery in wrapper scripts is required on Windows
-- # in order for the loader to find any dlls it needs.
-- $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
-- $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
-+ # 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 ;;
-@@ -1266,6 +5690,11 @@
-
- -o) prev=output ;;
-
-+ -precious-files-regex)
-+ prev=precious_regex
-+ continue
-+ ;;
-+
- -release)
- prev=release
- continue
-@@ -1282,23 +5711,37 @@
- ;;
-
- -R*)
-- dir=`$echo "X$arg" | $Xsed -e 's/^-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
-+ ;;
- *)
-- $echo "$modename: only absolute run-paths are allowed" 1>&2
-- exit 1
-+ func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- case "$xrpath " in
- *" $dir "*) ;;
-- *) xrpath="$xrpath $dir" ;;
-+ *) func_append xrpath " $dir" ;;
- esac
- continue
- ;;
-
-- -static)
-+ -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
-@@ -1317,41 +5760,48 @@
- continue
- ;;
-
-+ -version-number)
-+ prev=vinfo
-+ vinfo_number=yes
-+ continue
-+ ;;
-+
-+ -weak)
-+ prev=weak
-+ continue
-+ ;;
-+
- -Wc,*)
-- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
-+ func_stripname '-Wc,' '' "$arg"
-+ args=$func_stripname_result
- arg=
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
-+ save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
-- case $flag in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- flag="\"$flag\""
-- ;;
-- esac
-- arg="$arg $wl$flag"
-- compiler_flags="$compiler_flags $flag"
-+ 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"
-- arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
-+ func_stripname ' ' '' "$arg"
-+ arg=$func_stripname_result
- ;;
-
- -Wl,*)
-- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
-+ func_stripname '-Wl,' '' "$arg"
-+ args=$func_stripname_result
- arg=
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
-+ save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
-- case $flag in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- flag="\"$flag\""
-- ;;
-- esac
-- arg="$arg $wl$flag"
-- compiler_flags="$compiler_flags $wl$flag"
-- linker_flags="$linker_flags $flag"
-+ 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"
-- arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
-+ func_stripname ' ' '' "$arg"
-+ arg=$func_stripname_result
- ;;
-
- -Xcompiler)
-@@ -1364,136 +5814,156 @@
- 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.
- -* | +*)
-- # Unknown arguments in both finalize_command and compile_command need
-- # to be aesthetically quoted because they are evaled later.
-- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- arg="\"$arg\""
-- ;;
-- esac
-+ func_quote_for_eval "$arg"
-+ arg="$func_quote_for_eval_result"
- ;;
-
- *.$objext)
- # A standard object.
-- objs="$objs $arg"
-+ func_append objs " $arg"
- ;;
-
- *.lo)
- # A libtool-controlled object.
-
- # Check to see that this really is a libtool object.
-- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- pic_object=
-- non_pic_object=
-+ if func_lalib_unsafe_p "$arg"; then
-+ pic_object=
-+ non_pic_object=
-
-- # Read the .lo file
-- # If there is no directory component, then add one.
-- case $arg in
-- */* | *\\*) . $arg ;;
-- *) . ./$arg ;;
-- esac
-+ # 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
-- $echo "$modename: cannot find name of object for \`$arg'" 1>&2
-- exit 1
-- fi
-+ 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.
-- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$xdir" = "X$arg"; then
-- xdir=
-- else
-- xdir="$xdir/"
-- fi
-+ func_dirname "$arg" "/" ""
-+ xdir="$func_dirname_result"
-
-- if test "$pic_object" != none; then
-- # Prepend the subdirectory the object is found in.
-+ 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
-- dlfiles="$dlfiles $pic_object"
-- prev=
-- continue
-+ func_append dlfiles " $pic_object"
-+ prev=
-+ continue
- else
-- # If libtool objects are unsupported, then we need to preload.
-- prev=dlprefiles
-+ # 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
-+ if test "$prev" = dlprefiles; then
- # Preload the old-style object.
-- dlprefiles="$dlprefiles $pic_object"
-+ func_append dlprefiles " $pic_object"
- prev=
-- fi
-+ fi
-
-- # A PIC object.
-- libobjs="$libobjs $pic_object"
-+ # A PIC object.
-+ func_append libobjs " $pic_object"
- arg="$pic_object"
-- fi
-+ fi
-
-- # Non-PIC object.
-- if test "$non_pic_object" != none; then
-- # Prepend the subdirectory the object is found in.
-+ # 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
-- non_pic_objects="$non_pic_objects $non_pic_object"
-- if test -z "$pic_object" || test "$pic_object" = none ; then
-- arg="$non_pic_object"
-- fi
-- fi
-- else
-- # Only an error if not doing a dry-run.
-- if test -z "$run"; then
-- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
-- exit 1
-- else
-- # Dry-run case.
--
-- # Extract subdirectory from the argument.
-- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$xdir" = "X$arg"; then
-- xdir=
-- else
-- xdir="$xdir/"
-+ # 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"
-
-- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
-- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
-- libobjs="$libobjs $pic_object"
-- non_pic_objects="$non_pic_objects $non_pic_object"
-- fi
-+ 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.
-- deplibs="$deplibs $arg"
-- old_deplibs="$old_deplibs $arg"
-+ 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.
-- dlfiles="$dlfiles $arg"
-+ func_append dlfiles " $func_resolve_sysroot_result"
- prev=
- elif test "$prev" = dlprefiles; then
- # The library was specified with -dlpreopen.
-- dlprefiles="$dlprefiles $arg"
-+ func_append dlprefiles " $func_resolve_sysroot_result"
- prev=
- else
-- deplibs="$deplibs $arg"
-+ func_append deplibs " $func_resolve_sysroot_result"
- fi
- continue
- ;;
-@@ -1502,113 +5972,53 @@
- *)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
-- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-- arg="\"$arg\""
-- ;;
-- esac
-+ 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
-- compile_command="$compile_command $arg"
-- finalize_command="$finalize_command $arg"
-+ func_append compile_command " $arg"
-+ func_append finalize_command " $arg"
- fi
- done # argument parsing loop
-
-- if test -n "$prev"; then
-- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
--
-- # 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 link
-- # command doesn't match the default compiler.
-- if test -n "$available_tags" && test -z "$tagname"; then
-- case $base_compile in
-- "$CC "*) ;;
-- # Blanks in the command may have been stripped by the calling shell,
-- # but not from the CC environment variable when ltconfig was run.
-- "`$echo $CC` "*) ;;
-- *)
-- for z in $available_tags; do
-- if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
-- # Evaluate the configuration.
-- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
-- case $base_compile in
-- "$CC "*)
-- # The compiler in $compile_command matches
-- # the one in the tagged configuration.
-- # Assume this is the tagged configuration we want.
-- tagname=$z
-- break
-- ;;
-- "`$echo $CC` "*)
-- tagname=$z
-- break
-- ;;
-- esac
-- fi
-- done
-- # If $tagname still isn't set, then no tagged configuration
-- # was found and let the user know that the "--tag" command
-- # line option must be used.
-- if test -z "$tagname"; then
-- echo "$modename: unable to infer tagged configuration"
-- echo "$modename: specify a tag with \`--tag'" 1>&2
-- exit 1
--# else
--# echo "$modename: using $tagname tagged configuration"
-- fi
-- ;;
-- esac
-- fi
-+ 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\"
-- compile_command="$compile_command $arg"
-- finalize_command="$finalize_command $arg"
-+ func_append compile_command " $arg"
-+ func_append finalize_command " $arg"
- fi
-
-+ oldlibs=
- # calculate the name of the file, without its directory
-- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
-+ 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 \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-+ 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\"
-
-- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$output_objdir" = "X$output"; then
-- output_objdir="$objdir"
-- else
-- output_objdir="$output_objdir/$objdir"
-- fi
-+ 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.
-- if test ! -d $output_objdir; then
-- $show "$mkdir $output_objdir"
-- $run $mkdir $output_objdir
-- status=$?
-- if test $status -ne 0 && test ! -d $output_objdir; then
-- exit $status
-- fi
-- fi
-+ func_mkdir_p "$output_objdir"
-
- # Determine the type of output
- case $output in
- "")
-- $echo "$modename: you must specify an output file" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-+ func_fatal_help "you must specify an output file"
- ;;
- *.$libext) linkmode=oldlib ;;
- *.lo | *.$objext) linkmode=obj ;;
-@@ -1617,29 +6027,34 @@
- 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
-- case "$libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-- libs="$libs $deplib"
-+ 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
-+ 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=
-- for pre_post_dep in $predeps $postdeps; do
-- case "$pre_post_deps " in
-- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-- esac
-- pre_post_deps="$pre_post_deps $pre_post_dep"
-- done
-+ 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
-
-@@ -1649,15 +6064,15 @@
- need_relink=no # whether we're linking any uninstalled libtool libraries
- notinst_deplibs= # not-installed libtool libraries
- notinst_path= # paths that contain not-installed libtool libraries
-+
- case $linkmode in
- lib)
-- passes="conv link"
-+ passes="conv dlpreopen link"
- for file in $dlfiles $dlprefiles; do
- case $file in
- *.la) ;;
- *)
-- $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
-- exit 1
-+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
- ;;
- esac
- done
-@@ -1673,40 +6088,105 @@
- *) passes="conv"
- ;;
- esac
-+
- for pass in $passes; do
-- if test $linkmode = prog; then
-- # Determine which files to process
-+ # 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"
-- save_deplibs="$deplibs" # Collect dlpreopened libraries
-- deplibs=
-- ;;
-+ dlopen) libs="$dlfiles" ;;
- dlpreopen) libs="$dlprefiles" ;;
- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
- esac
- fi
-+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
-+ # Collect and forward deplibs of preopened libtool libs
-+ for lib in $dlprefiles; do
-+ # Ignore non-libtool-libs
-+ dependency_libs=
-+ func_resolve_sysroot "$lib"
-+ case $lib in
-+ *.la) func_source "$func_resolve_sysroot_result" ;;
-+ esac
-+
-+ # Collect preopened libtool deplibs, except any this library
-+ # has declared as weak libs
-+ for deplib in $dependency_libs; do
-+ func_basename "$deplib"
-+ deplib_base=$func_basename_result
-+ case " $weak_libs " in
-+ *" $deplib_base "*) ;;
-+ *) func_append deplibs " $deplib" ;;
-+ esac
-+ done
-+ done
-+ libs="$dlprefiles"
-+ fi
-+ if test "$pass" = dlopen; then
-+ # Collect dlpreopened libraries
-+ save_deplibs="$deplibs"
-+ deplibs=
-+ fi
-+
- for deplib in $libs; do
- lib=
- found=no
- case $deplib in
-+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-+ 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 = oldlib && test $linkmode = obj; then
-- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
-+ if test "$linkmode" != lib && test "$linkmode" != prog; then
-+ func_warning "\`-l' is ignored for archives/objects"
- continue
- fi
-- if test $pass = conv; then
-- deplibs="$deplib $deplibs"
-- continue
-+ 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
-- name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
-- for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
-- # Search the libtool library
-- lib="$searchdir/lib${name}.la"
-- if test -f "$lib"; then
-- found=yes
-- break
-- 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
-@@ -1715,74 +6195,153 @@
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
-- test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
-+ 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
-+ test "$pass" = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
-- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
-+ 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
-+ if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
-- if test $pass = scan; then
-+ if test "$pass" = scan; then
- deplibs="$deplib $deplibs"
-- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- 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"
- ;;
- *)
-- $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
-+ func_warning "\`-L' is ignored for archives/objects"
- ;;
- esac # linkmode
- continue
- ;; # -L
- -R*)
-- if test $pass = link; then
-- dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
-+ 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 "*) ;;
-- *) xrpath="$xrpath $dir" ;;
-+ *) func_append xrpath " $dir" ;;
- esac
- fi
- deplibs="$deplib $deplibs"
- continue
- ;;
-- *.la) lib="$deplib" ;;
-+ *.la)
-+ func_resolve_sysroot "$deplib"
-+ lib=$func_resolve_sysroot_result
-+ ;;
- *.$libext)
-- if test $pass = conv; then
-+ if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- case $linkmode in
- lib)
-- if test "$deplibs_check_method" != pass_all; then
-- echo
-- echo "*** Warning: This library needs some functionality provided by $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."
-- else
-- echo
-- echo "*** Warning: Linking the shared library $output against the"
-- echo "*** static library $deplib is not portable!"
-- deplibs="$deplib $deplibs"
-- fi
-+ # 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
-+ if test "$pass" != link; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
-@@ -1793,14 +6352,18 @@
- esac # linkmode
- ;; # *.$libext
- *.lo | *.$objext)
-- 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.
-- newdlprefiles="$newdlprefiles $deplib"
-- compile_deplibs="$deplib $compile_deplibs"
-- finalize_deplibs="$deplib $finalize_deplibs"
-- else
-- newdlfiles="$newdlfiles $deplib"
-+ 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
- ;;
-@@ -1809,21 +6372,18 @@
- continue
- ;;
- esac # case $deplib
-- if test $found = yes || test -f "$lib"; then :
-+
-+ if test "$found" = yes || test -f "$lib"; then :
- else
-- $echo "$modename: cannot find the library \`$lib'" 1>&2
-- exit 1
-+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
- fi
-
- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-- else
-- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-- exit 1
-- fi
-+ func_lalib_unsafe_p "$lib" \
-+ || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-- ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
-- test "X$ladir" = "X$lib" && ladir="."
-+ func_dirname "$lib" "" "."
-+ ladir="$func_dirname_result"
-
- dlname=
- dlopen=
-@@ -1831,72 +6391,92 @@
- libdir=
- library_names=
- old_library=
-+ inherited_linker_flags=
- # If the library was installed with an old release of libtool,
-- # it will not redefine variable installed.
-+ # it will not redefine variables installed, or shouldnotlink
- installed=yes
-+ shouldnotlink=no
-+ avoidtemprpath=
-+
-
- # Read the .la file
-- case $lib in
-- */* | *\\*) . $lib ;;
-- *) . ./$lib ;;
-- esac
-+ 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 = oldlib && test $linkmode = obj; }; then
-- # Add dl[pre]opened files of deplib
-- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-+ { 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
-+ if test "$pass" = conv; then
- # Only check for convenience libraries
- deplibs="$lib $deplibs"
- if test -z "$libdir"; then
- if test -z "$old_library"; then
-- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-- exit 1
-+ func_fatal_error "cannot find name of link library for \`$lib'"
- fi
- # It is a libtool convenience library, so add in its objects.
-- convenience="$convenience $ladir/$objdir/$old_library"
-- old_convenience="$old_convenience $ladir/$objdir/$old_library"
-- tmp_libs=
-- for deplib in $dependency_libs; do
-- deplibs="$deplib $deplibs"
-+ func_append convenience " $ladir/$objdir/$old_library"
-+ func_append old_convenience " $ladir/$objdir/$old_library"
-+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
-+ func_fatal_error "\`$lib' is not a convenience library"
-+ fi
-+ tmp_libs=
-+ for deplib in $dependency_libs; do
-+ deplibs="$deplib $deplibs"
-+ if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
-- tmp_libs="$tmp_libs $deplib"
-- done
-- elif test $linkmode != prog && test $linkmode != lib; then
-- $echo "$modename: \`$lib' is not a convenience library" 1>&2
-- exit 1
-- fi
-+ fi
-+ func_append tmp_libs " $deplib"
-+ done
- continue
- fi # $pass = conv
-
-+
- # Get the name of the library we link against.
- linklib=
-- for l in $old_library $library_names; do
-- linklib="$l"
-- done
-+ 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
-- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-- exit 1
-+ 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 "$pass" = dlopen; then
- if test -z "$libdir"; then
-- $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
-- exit 1
-+ 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 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.
-- dlprefiles="$dlprefiles $lib"
-+ # 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
-- newdlfiles="$newdlfiles $lib"
-+ func_append newdlfiles " $lib"
- fi
- continue
- fi # $pass = dlopen
-@@ -1907,66 +6487,106 @@
- *)
- abs_ladir=`cd "$ladir" && pwd`
- if test -z "$abs_ladir"; then
-- $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
-- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-+ 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
-- laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-+ func_basename "$lib"
-+ laname="$func_basename_result"
-
- # Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
-- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-- $echo "$modename: warning: library \`$lib' was moved." 1>&2
-+ 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="$libdir"
-- absdir="$libdir"
-+ dir="$lt_sysroot$libdir"
-+ absdir="$lt_sysroot$libdir"
- fi
-+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- else
-- dir="$ladir/$objdir"
-- absdir="$abs_ladir/$objdir"
-- # Remove this search path later
-- notinst_path="$notinst_path $abs_ladir"
-+ 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
-- name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
-+ func_stripname 'lib' '.la' "$laname"
-+ name=$func_stripname_result
-
- # This library was specified with -dlpreopen.
-- if test $pass = dlpreopen; then
-- if test -z "$libdir"; then
-- $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
-- exit 1
-- fi
-- # Prefer using a static library (so that no silly _DYNAMIC symbols
-- # are required to link).
-- if test -n "$old_library"; then
-- newdlprefiles="$newdlprefiles $dir/$old_library"
-- # Otherwise, use the dlname, so that lt_dlopen finds it.
-- elif test -n "$dlname"; then
-- newdlprefiles="$newdlprefiles $dir/$dlname"
-- else
-- newdlprefiles="$newdlprefiles $dir/$linklib"
-+ 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
-+ 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"
-+ deplibs="$lib $deplibs" # used for prog,scan pass
- fi
- continue
- fi
-
-- if test $linkmode = prog && test $pass != link; then
-- newlib_search_path="$newlib_search_path $ladir"
-+
-+ if test "$linkmode" = prog && test "$pass" != link; then
-+ func_append newlib_search_path " $ladir"
- deplibs="$lib $deplibs"
-
- linkalldeplibs=no
-@@ -1978,31 +6598,43 @@
- tmp_libs=
- for deplib in $dependency_libs; do
- case $deplib in
-- -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
-+ -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
-+ 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
-- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-- tmp_libs="$tmp_libs $deplib"
-+ 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...
-
-- link_static=no # Whether the deplib will be linked statically
-- if test -n "$library_names" &&
-- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
-- # Link against this shared library
-+ 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
-
-- if test "$linkmode,$pass" = "prog,link" ||
-- { 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.
-@@ -2011,7 +6643,7 @@
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
-- *) compile_rpath="$compile_rpath $absdir"
-+ *) func_append compile_rpath " $absdir" ;;
- esac
- ;;
- esac
-@@ -2020,21 +6652,10 @@
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir"
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- ;;
- esac
-- if test $linkmode = prog; then
-- # We need to hardcode the library path
-- if test -n "$shlibpath_var"; then
-- # Make sure the rpath contains only unique directories.
-- case "$temp_rpath " in
-- *" $dir "*) ;;
-- *" $absdir "*) ;;
-- *) temp_rpath="$temp_rpath $dir" ;;
-- esac
-- fi
-- fi
- fi # $linkmode,$pass = prog,link...
-
- if test "$alldeplibs" = yes &&
-@@ -2044,26 +6665,89 @@
- # We only need to search for static libraries
- continue
- fi
-+ fi
-
-- if test "$installed" = no; then
-- notinst_deplibs="$notinst_deplibs $lib"
-- need_relink=yes
-+ 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
-- realname="$2"
-- shift; shift
-- libname=`eval \\$echo \"$libname_spec\"`
-+ shift
-+ realname="$1"
-+ shift
-+ libname=`eval "\\$ECHO \"$libname_spec\""`
- # use dlname if we got it. it's perfectly good, no?
- if test -n "$dlname"; then
- soname="$dlname"
- elif test -n "$soname_spec"; then
- # bleh windows
- case $host in
-- *cygwin*)
-- major=`expr $current - $age`
-+ *cygwin* | mingw* | *cegcc*)
-+ func_arith $current - $age
-+ major=$func_arith_result
- versuffix="-$major"
- ;;
- esac
-@@ -2074,41 +6758,29 @@
-
- # Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
-- soname=`echo $soroot | sed -e 's/^.*\///'`
-- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
-+ func_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
-- $show "extracting exported symbol list from \`$soname'"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- eval cmds=\"$extract_expsyms_cmds\"
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-+ 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
-- $show "generating import library for \`$soname'"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- eval cmds=\"$old_archive_from_expsyms_cmds\"
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-+ 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
-+ fi # test -n "$old_archive_from_expsyms_cmds"
-
-- if test $linkmode = prog || test "$mode" != relink; then
-+ if test "$linkmode" = prog || test "$opt_mode" != relink; then
- add_shlibpath=
- add_dir=
- add=
-@@ -2117,6 +6789,30 @@
- 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" ;;
-@@ -2131,10 +6827,19 @@
- fi
- ;;
- relink)
-- if test "$hardcode_direct" = yes; then
-+ if test "$hardcode_direct" = yes &&
-+ test "$hardcode_direct_absolute" = no; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$dir"
-+ # Try looking first in the location we're being installed to.
-+ if test -n "$inst_prefix_dir"; then
-+ case $libdir in
-+ [\\/]*)
-+ func_append add_dir " -L$inst_prefix_dir$libdir"
-+ ;;
-+ esac
-+ fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
-@@ -2147,39 +6852,39 @@
- esac
-
- if test "$lib_linked" != yes; then
-- $echo "$modename: configuration error: unsupported hardcode properties"
-- exit 1
-+ func_fatal_configuration "unsupported hardcode properties"
- fi
-
- if test -n "$add_shlibpath"; then
- case :$compile_shlibpath: in
- *":$add_shlibpath:"*) ;;
-- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-+ *) func_append compile_shlibpath "$add_shlibpath:" ;;
- esac
- fi
-- if test $linkmode = prog; then
-+ 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 && \
-+ if test "$hardcode_direct" != yes &&
-+ test "$hardcode_minus_L" != yes &&
- test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
-- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+ *) func_append finalize_shlibpath "$libdir:" ;;
- esac
- fi
- fi
- fi
-
-- if test $linkmode = prog || test "$mode" = relink; then
-+ 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; then
-+ 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"
-@@ -2187,16 +6892,31 @@
- elif test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
-- *) finalize_shlibpath="$finalize_shlibpath$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
-+ if test "$linkmode" = prog; then
- test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
- test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
- else
-@@ -2204,16 +6924,7 @@
- test -n "$add" && deplibs="$add $deplibs"
- fi
- fi
-- elif test $linkmode = prog; then
-- 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
--
-- # Try to link the static library
-+ 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.
-@@ -2234,101 +6945,133 @@
- # 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 library needs some functionality provided by $lib."
-+ $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 "*** Therefore, libtool will create a static module, that should work "
-- echo "*** as long as the dlopening application is linked with the -dlopen flag."
-+ 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."
-+ 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
-+ build_libtool_libs=module
-+ build_old_libs=yes
- else
-- build_libtool_libs=no
-+ build_libtool_libs=no
- fi
- fi
- else
-- convenience="$convenience $dir/$old_library"
-- old_convenience="$old_convenience $dir/$old_library"
- deplibs="$dir/$old_library $deplibs"
- link_static=yes
- fi
- fi # link shared/static library?
-
-- if test $linkmode = lib; then
-+ 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
-+ { test "$hardcode_into_libs" != yes ||
-+ test "$build_old_libs" = yes ||
-+ test "$link_static" = yes; }; then
- # Extract -R from dependency_libs
- temp_deplibs=
- for libdir in $dependency_libs; do
- case $libdir in
-- -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
-+ -R*) func_stripname '-R' '' "$libdir"
-+ temp_xrpath=$func_stripname_result
- case " $xrpath " in
- *" $temp_xrpath "*) ;;
-- *) xrpath="$xrpath $temp_xrpath";;
-+ *) func_append xrpath " $temp_xrpath";;
- esac;;
-- *) temp_deplibs="$temp_deplibs $libdir";;
-+ *) func_append temp_deplibs " $libdir";;
- esac
- done
- dependency_libs="$temp_deplibs"
- fi
-
-- newlib_search_path="$newlib_search_path $absdir"
-+ 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 "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-- tmp_libs="$tmp_libs $deplib"
-+ 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
-+ 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)
-- dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
-- test "X$dir" = "X$deplib" && dir="."
-+ 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
-- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-+ func_warning "cannot determine absolute directory name of \`$dir'"
- absdir="$dir"
- fi
- ;;
- esac
-- if grep "^installed=no" $deplib > /dev/null; then
-+ 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`
-- if test -z "$libdir"; then
-- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-- exit 1
-- fi
-- if test "$absdir" != "$libdir"; then
-- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-- fi
-+ 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
- ;;
-- *) continue ;;
- esac
- case " $deplibs " in
- *" $path "*) ;;
-@@ -2338,21 +7081,29 @@
- fi # link_all_deplibs != no
- fi # linkmode = lib
- done # for deplib in $libs
-- if test $pass = dlpreopen; then
-+ 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
-- test $pass != scan && dependency_libs="$newdependency_libs"
-- if test $pass != conv; then
-+ if test "$pass" != dlopen; then
-+ if test "$pass" != conv; then
- # Make sure lib_search_path contains only unique directories.
- lib_search_path=
- for dir in $newlib_search_path; do
- case "$lib_search_path " in
- *" $dir "*) ;;
-- *) lib_search_path="$lib_search_path $dir" ;;
-+ *) func_append lib_search_path " $dir" ;;
- esac
- done
- newlib_search_path=
-@@ -2368,9 +7119,30 @@
- 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" ;;
- *)
-@@ -2389,171 +7161,216 @@
- -L*)
- case " $tmp_libs " in
- *" $deplib "*) ;;
-- *) tmp_libs="$tmp_libs $deplib" ;;
-+ *) func_append tmp_libs " $deplib" ;;
- esac
- ;;
-- *) tmp_libs="$tmp_libs $deplib" ;;
-+ *) func_append tmp_libs " $deplib" ;;
- esac
- done
- eval $var=\"$tmp_libs\"
- done # for var
- fi
-- if test "$pass" = "conv" &&
-- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
-- libs="$deplibs" # reset libs
-- deplibs=
-- 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
-+ 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
-- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
-+ func_warning "\`-dlopen' is ignored for archives"
- fi
-
-- if test -n "$rpath"; then
-- $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
-- fi
-+ case " $deplibs" in
-+ *\ -l* | *\ -L*)
-+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
-+ esac
-
-- if test -n "$xrpath"; then
-- $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
-- fi
-+ test -n "$rpath" && \
-+ func_warning "\`-rpath' is ignored for archives"
-
-- if test -n "$vinfo"; then
-- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
-- fi
-+ test -n "$xrpath" && \
-+ func_warning "\`-R' is ignored for archives"
-
-- if test -n "$release"; then
-- $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
-- fi
-+ test -n "$vinfo" && \
-+ func_warning "\`-version-info/-version-number' is ignored for archives"
-
-- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-- $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
-- fi
-+ 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"
-- objs="$objs$old_deplibs"
-+ func_append objs "$old_deplibs"
- ;;
-
- lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
- case $outputname in
- lib*)
-- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
-+ func_stripname 'lib' '.la' "$outputname"
-+ name=$func_stripname_result
-+ eval shared_ext=\"$shrext_cmds\"
- eval libname=\"$libname_spec\"
- ;;
- *)
-- if test "$module" = no; then
-- $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
-+ 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
-- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
-+ func_stripname '' '.la' "$outputname"
-+ name=$func_stripname_result
-+ eval shared_ext=\"$shrext_cmds\"
- eval libname=\"$libname_spec\"
- else
-- libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
-+ func_stripname '' '.la' "$outputname"
-+ libname=$func_stripname_result
- fi
- ;;
- esac
-
- if test -n "$objs"; then
- if test "$deplibs_check_method" != pass_all; then
-- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
-- exit 1
-+ 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!"
-- libobjs="$libobjs $objs"
-+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-+ $ECHO "*** objects $objs is not portable!"
-+ func_append libobjs " $objs"
- fi
- fi
-
-- if test "$dlself" != no; then
-- $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
-- fi
-+ test "$dlself" != no && \
-+ func_warning "\`-dlopen self' is ignored for libtool libraries"
-
- set dummy $rpath
-- if test $# -gt 2; then
-- $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
-- fi
-- install_libdir="$2"
-+ 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.
-+ # 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
-
-- if test -n "$vinfo"; then
-- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
-- fi
-+ test -n "$vinfo" && \
-+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-- if test -n "$release"; then
-- $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
-- fi
-+ test -n "$release" && \
-+ func_warning "\`-release' is ignored for convenience libraries"
- else
-
- # Parse the version information argument.
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
-+ save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
-+ shift
- IFS="$save_ifs"
-
-- if test -n "$8"; then
-- $echo "$modename: too many parameters to \`-version-info'" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
-+ test -n "$7" && \
-+ func_fatal_help "too many parameters to \`-version-info'"
-
-- current="$2"
-- revision="$3"
-- age="$4"
-+ # 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
-+ darwin|linux|osf|windows|none)
-+ func_arith $number_major + $number_minor
-+ current=$func_arith_result
-+ age="$number_minor"
-+ revision="$number_revision"
-+ ;;
-+ freebsd-aout|freebsd-elf|qnx|sunos)
-+ current="$number_major"
-+ revision="$number_minor"
-+ age="0"
-+ ;;
-+ irix|nonstopux)
-+ func_arith $number_major + $number_minor
-+ current=$func_arith_result
-+ age="$number_minor"
-+ revision="$number_minor"
-+ lt_irix_increment=no
-+ ;;
-+ esac
-+ ;;
-+ no)
-+ current="$1"
-+ revision="$2"
-+ age="$3"
-+ ;;
-+ esac
-
- # Check that each of the things are valid numbers.
- case $current in
-- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
-+ 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]) ;;
- *)
-- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
-- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-- exit 1
-+ 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]) ;;
-+ 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]) ;;
- *)
-- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
-- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-- exit 1
-+ 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]) ;;
-+ 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]) ;;
- *)
-- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
-- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-- exit 1
-+ 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
-- $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
-- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-- exit 1
-+ 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.
-@@ -2566,10 +7383,13 @@
- darwin)
- # Like Linux, but with the current version available in
- # verstring for coding it into the library header
-- major=.`expr $current - $age`
-+ func_arith $current - $age
-+ major=.$func_arith_result
- versuffix="$major.$age.$revision"
- # Darwin ld doesn't like 0 for these options...
-- minor_current=`expr $current + 1`
-+ 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"
- ;;
-
-@@ -2580,19 +7400,31 @@
-
- freebsd-elf)
- major=".$current"
-- versuffix=".$current";
-+ versuffix=".$current"
- ;;
-
-- irix)
-- major=`expr $current - $age + 1`
-- verstring="sgi$major.$revision"
-+ 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 != 0; do
-- iface=`expr $revision - $loop`
-- loop=`expr $loop - 1`
-- verstring="sgi$major.$iface:$verstring"
-+ 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 `.'.
-@@ -2601,25 +7433,34 @@
- ;;
-
- linux)
-- major=.`expr $current - $age`
-+ func_arith $current - $age
-+ major=.$func_arith_result
- versuffix="$major.$age.$revision"
- ;;
-
- osf)
-- major=`expr $current - $age`
-+ 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 != 0; do
-- iface=`expr $current - $loop`
-- loop=`expr $loop - 1`
-+ 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.
-- verstring="$verstring:${current}.0"
-+ func_append verstring ":${current}.0"
-+ ;;
-+
-+ qnx)
-+ major=".$current"
-+ versuffix=".$current"
- ;;
-
- sunos)
-@@ -2630,21 +7471,29 @@
- windows)
- # Use '-' rather than '.', since we only want one
- # extension on DOS 8.3 filesystems.
-- major=`expr $current - $age`
-+ func_arith $current - $age
-+ major=$func_arith_result
- versuffix="-$major"
- ;;
-
- *)
-- $echo "$modename: unknown library version type \`$version_type'" 1>&2
-- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
-- exit 1
-+ 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=
-- verstring="0.0"
-+ 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
-@@ -2662,7 +7511,7 @@
- # Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
-- $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
-+ func_warning "undefined symbols not allowed in $host shared libraries"
- build_libtool_libs=no
- build_old_libs=yes
- fi
-@@ -2670,55 +7519,65 @@
- # Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
- fi
-+
- fi
-
-- if test "$mode" != relink; then
-+ 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/*"`
-+ # may have been created when compiling PIC objects.
-+ removelist=
-+ tempremovelist=`$ECHO "$output_objdir/*"`
- for p in $tempremovelist; do
-- case $p in
-- *.$objext)
-- ;;
-- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-- removelist="$removelist $p"
-- ;;
-- *) ;;
-- esac
-- done
-- if test -n "$removelist"; then
-- $show "${rm}r $removelist"
-- $run ${rm}r $removelist
-- fi
-+ 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
-- oldlibs="$oldlibs $output_objdir/$libname.$libext"
-+ func_append oldlibs " $output_objdir/$libname.$libext"
-
- # Transform .lo files to .o files.
-- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-+ 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 -e 's% $path % %g'`
-- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
-- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
-- done
-+ #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
-- temp_xrpath="$temp_xrpath -R$libdir"
-+ func_replace_sysroot "$libdir"
-+ func_append temp_xrpath " -R$func_replace_sysroot_result"
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir" ;;
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- done
-- if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
-+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
- dependency_libs="$temp_xrpath $dependency_libs"
- fi
- fi
-@@ -2729,7 +7588,7 @@
- for lib in $old_dlfiles; do
- case " $dlprefiles $dlfiles " in
- *" $lib "*) ;;
-- *) dlfiles="$dlfiles $lib" ;;
-+ *) func_append dlfiles " $lib" ;;
- esac
- done
-
-@@ -2739,27 +7598,36 @@
- for lib in $old_dlprefiles; do
- case "$dlprefiles " in
- *" $lib "*) ;;
-- *) dlprefiles="$dlprefiles $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*)
-+ *-*-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
-- deplibs="$deplibs -framework System"
-+ 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
-- deplibs="$deplibs -lc"
-+ if test "$build_libtool_need_lc" = "yes"; then
-+ func_append deplibs " -lc"
- fi
- ;;
- esac
-@@ -2785,7 +7653,7 @@
- # 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 behaviour.
-+ # implementing what was already the behavior.
- newdeplibs=$deplibs
- ;;
- test_compile)
-@@ -2793,90 +7661,139 @@
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
-- $rm conftest.c
-+ $opt_dry_run || $RM conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
- EOF
-- $rm conftest
-- $LTCC -o conftest conftest.c $deplibs
-- if test $? -eq 0 ; then
-+ $opt_dry_run || $RM conftest
-+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
-- name="`expr $i : '-l\(.*\)'`"
-- # If $name is empty we are operating on a -L argument.
-- if test -n "$name" && test "$name" != "0"; then
-- libname=`eval \\$echo \"$libname_spec\"`
-- deplib_matches=`eval \\$echo \"$library_names_spec\"`
-- set dummy $deplib_matches
-- deplib_match=$2
-- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-- newdeplibs="$newdeplibs $i"
-- else
-- droppeddeps=yes
-- echo
-- echo "*** Warning: This library needs some functionality provided by $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."
-+ 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
-- else
-- newdeplibs="$newdeplibs $i"
-- fi
-- done
-- else
-- # Error occured in the first compile. Let's try to salvage the situation:
-- # Compile a seperate program for each library.
-- for i in $deplibs; do
-- name="`expr $i : '-l\(.*\)'`"
-- # If $name is empty we are operating on a -L argument.
-- if test -n "$name" && test "$name" != "0"; then
-- $rm conftest
-- $LTCC -o conftest conftest.c $i
-- # Did it work?
-- if test $? -eq 0 ; then
-- ldd_output=`ldd conftest`
-- libname=`eval \\$echo \"$libname_spec\"`
-- deplib_matches=`eval \\$echo \"$library_names_spec\"`
-- set dummy $deplib_matches
-- deplib_match=$2
-+ 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
-- newdeplibs="$newdeplibs $i"
-+ func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $i."
-+ $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 "*** 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 "*** 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
-- else
-- newdeplibs="$newdeplibs $i"
-- fi
-+ ;;
-+ *)
-+ func_append newdeplibs " $i"
-+ ;;
-+ esac
- done
- fi
- ;;
- file_magic*)
-- set dummy $deplibs_check_method
-- file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
-+ set dummy $deplibs_check_method; shift
-+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- for a_deplib in $deplibs; do
-- name="`expr $a_deplib : '-l\(.*\)'`"
-- # If $name is empty we are operating on a -L argument.
-- if test -n "$name" && test "$name" != "0"; then
-- 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
-+ 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
-+ if ls -lLd "$potent_lib" 2>/dev/null |
-+ $GREP " -> " >/dev/null; then
- continue
- fi
- # The statement above tries to avoid entering an
-@@ -2886,81 +7803,110 @@
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
-- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
-+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
- case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
- esac
- done
-- # It is ok to link against an archive when
-- # building a shared library.
-- if $AR -t $potlib > /dev/null 2>&1; then
-- newdeplibs="$newdeplibs $a_deplib"
-- a_deplib=""
-- break 2
-- fi
-- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
-- | sed 10q \
-- | egrep "$file_magic_regex" > /dev/null; then
-- newdeplibs="$newdeplibs $a_deplib"
-+ 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
-+ done
-+ done
-+ fi
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $a_deplib."
-+ $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 "*** 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
-- else
-+ ;;
-+ *)
- # Add a -L argument.
-- newdeplibs="$newdeplibs $a_deplib"
-- fi
-+ func_append newdeplibs " $a_deplib"
-+ ;;
-+ esac
- done # Gone through all deplibs.
- ;;
- match_pattern*)
-- set dummy $deplibs_check_method
-- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
-+ set dummy $deplibs_check_method; shift
-+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- for a_deplib in $deplibs; do
-- name="`expr $a_deplib : '-l\(.*\)'`"
-- # If $name is empty we are operating on a -L argument.
-- if test -n "$name" && test "$name" != "0"; then
-- 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
-- if eval echo \"$potent_lib\" 2>/dev/null \
-- | sed 10q \
-- | egrep "$match_pattern_regex" > /dev/null; then
-- newdeplibs="$newdeplibs $a_deplib"
-- a_deplib=""
-- break 2
-- fi
-+ 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
-- done
-+ fi
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $a_deplib."
-+ $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 "*** 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
-- else
-+ ;;
-+ *)
- # Add a -L argument.
-- newdeplibs="$newdeplibs $a_deplib"
-- fi
-+ func_append newdeplibs " $a_deplib"
-+ ;;
-+ esac
- done # Gone through all deplibs.
- ;;
- none | unknown | *)
- newdeplibs=""
-- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
-- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
-- grep . >/dev/null; then
-+ 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."
-@@ -2969,7 +7915,8 @@
- fi
- echo "*** All declared inter-library dependencies are being dropped."
- droppeddeps=yes
-- fi
-+ ;;
-+ esac
- ;;
- esac
- versuffix=$versuffix_save
-@@ -2980,8 +7927,8 @@
-
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
-- # On Rhapsody replace the C library is the System framework
-- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
-+ # On Rhapsody replace the C library with the System framework
-+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
- ;;
- esac
-
-@@ -2989,7 +7936,7 @@
- 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 "*** 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
-@@ -3011,7 +7958,7 @@
- echo "*** automatically added whenever a program is linked with this library"
- echo "*** or is declared to -dlopen it."
-
-- if test $allow_undefined = no; then
-+ 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"
-@@ -3030,6 +7977,41 @@
- # 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=
-@@ -3038,15 +8020,17 @@
-
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
-- if test $hardcode_into_libs = yes; then
-+ if test "$hardcode_into_libs" = yes; then
- # Hardcode the library paths
- hardcode_libdirs=
- dep_rpath=
- rpath="$finalize_rpath"
-- test "$mode" != relink && rpath="$compile_rpath$rpath"
-+ 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
-@@ -3055,18 +8039,18 @@
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
-- dep_rpath="$dep_rpath $flag"
-+ func_append dep_rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
-- *) perm_rpath="$perm_rpath $libdir" ;;
-+ *) func_append perm_rpath " $libdir" ;;
- esac
- fi
- done
-@@ -3074,13 +8058,17 @@
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
-- eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-+ if test -n "$hardcode_libdir_flag_spec_ld"; then
-+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-+ else
-+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-+ fi
- fi
- if test -n "$runpath_var" && test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
-- rpath="$rpath$dir:"
-+ func_append rpath "$dir:"
- done
- eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
- fi
-@@ -3088,140 +8076,222 @@
- fi
-
- shlibpath="$finalize_shlibpath"
-- test "$mode" != relink && shlibpath="$compile_shlibpath$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
-- realname="$2"
-- shift; shift
-+ shift
-+ realname="$1"
-+ shift
-
- if test -n "$soname_spec"; then
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
-- test -z "$dlname" && dlname=$soname
-+ if test -z "$dlname"; then
-+ dlname=$soname
-+ fi
-
- lib="$output_objdir/$realname"
-+ linknames=
- for link
- do
-- linknames="$linknames $link"
-+ func_append linknames " $link"
- done
-
--# # Ensure that we have .o objects for linkers which dislike .lo
--# # (e.g. aix) in case we are running --disable-static
--# for obj in $libobjs; do
--# xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
--# if test "X$xdir" = "X$obj"; then
--# xdir="."
--# else
--# xdir="$xdir"
--# fi
--# baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
--# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
--# if test ! -f $xdir/$oldobj && test "$baseobj" != "$oldobj"; then
--# $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
--# $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
--# fi
--# done
--
- # Use standard objects if they are pic
-- test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-+ 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 1q $export_symbols`" != xEXPORTS; then
-+ # and it's NOT already a .def file. Must figure out
-+ # which of the given symbols are data symbols and tag
-+ # them as such. So, trigger use of export_symbols_cmds.
-+ # export_symbols gets reassigned inside the "prepare
-+ # the list of exported symbols" if statement, so the
-+ # include_expsyms logic still works.
-+ orig_export_symbols="$export_symbols"
-+ export_symbols=
-+ always_export_symbols=yes
-+ fi
-+ fi
-+ ;;
-+ esac
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-- $show "generating symbol list for \`$libname.la'"
-+ func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
-- $run $rm $export_symbols
-- eval cmds=\"$export_symbols_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-+ $opt_dry_run || $RM $export_symbols
-+ cmds=$export_symbols_cmds
-+ save_ifs="$IFS"; IFS='~'
-+ for cmd1 in $cmds; do
- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-+ # 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"; then
-- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
-- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-- $show "$mv \"${export_symbols}T\" \"$export_symbols\""
-- $run eval '$mv "${export_symbols}T" "$export_symbols"'
-+ 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
-- $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
-+ 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"
-- $show "${rm}r $gentop"
-- $run ${rm}r "$gentop"
-- $show "$mkdir $gentop"
-- $run $mkdir "$gentop"
-- status=$?
-- if test $status -ne 0 && test ! -d "$gentop"; then
-- exit $status
-- fi
-- generated="$generated $gentop"
--
-- for xlib in $convenience; do
-- # Extract the objects.
-- case $xlib in
-- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-- *) xabs=`pwd`"/$xlib" ;;
-- esac
-- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-- xdir="$gentop/$xlib"
--
-- $show "${rm}r $xdir"
-- $run ${rm}r "$xdir"
-- $show "$mkdir $xdir"
-- $run $mkdir "$xdir"
-- status=$?
-- if test $status -ne 0 && test ! -d "$xdir"; then
-- exit $status
-- fi
-- $show "(cd $xdir && $AR x $xabs)"
-- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-+ func_append generated " $gentop"
-
-- libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-- done
-+ 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\"
-- linker_flags="$linker_flags $flag"
-+ func_append linker_flags " $flag"
- fi
-
- # Make a backup of the uninstalled library when relinking
-- if test "$mode" = relink; then
-- $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
-+ 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 -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-- eval cmds=\"$archive_expsym_cmds\"
-+ 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
-- eval cmds=\"$archive_cmds\"
-+ 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 len=`expr "X$cmds" : ".*"` &&
-- test $len -le $max_cmd_len; then
-- :
-- else
-- # The command line is too long to link in one step, link piecewise.
-- $echo "creating reloadable object files..."
-+
-+ 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
-@@ -3234,109 +8304,255 @@
- if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- fi
-- save_output=$output
-+ 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=
-- delfiles=
-- last_robj=
-- k=1
-- output=$output_objdir/$save_output-${k}.$objext
-- # Loop over the list of objects to be linked.
-- for obj in $save_libobjs
-- do
-- eval test_cmds=\"$reload_cmds $objlist $last_robj\"
-- if test "X$objlist" = X ||
-- { len=`expr "X$test_cmds" : ".*"` &&
-- test $len -le $max_cmd_len; }; then
-- objlist="$objlist $obj"
-- else
-- # The command $test_cmds is almost too long, add a
-- # command to the queue.
-- if test $k -eq 1 ; then
-- # The first file doesn't have a previous command to add.
-- eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-- else
-- # All subsequent reloadable object files will link in
-- # the last one created.
-- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
-- fi
-- last_robj=$output_objdir/$save_output-${k}.$objext
-- k=`expr $k + 1`
-- output=$output_objdir/$save_output-${k}.$objext
-- objlist=$obj
-- len=1
-- fi
-- done
-- # Handle the remaining objects by creating one last
-- # reloadable object file. All subsequent reloadable object
-- # files will link in the last one created.
-- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-+ test_cmds=
-+ concat_cmds=
-+ objlist=
-+ last_robj=
-+ k=1
-
-- # Set up a command to remove the reloadale object files
-- # after they are used.
-- i=0
-- while test $i -lt $k
-- do
-- i=`expr $i + 1`
-- delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
-- done
-+ 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
-
-- $echo "creating a temporary reloadable object file: $output"
-+ # 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"
-
-- # Loop through the commands generated above and execute them.
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $concat_cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-+ else
-+ output=
-+ fi
-
-- libobjs=$output
-+ 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
-+ 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 -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-- eval cmds=\"$archive_expsym_cmds\"
-- else
-- eval cmds=\"$archive_cmds\"
-- fi
-+ 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
-
-- # Append the command to remove the reloadable object files
-- # to the just-reset $cmds.
-- eval cmds=\"\$cmds~$rm $delfiles\"
-- fi
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-+ 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 "$mode" = relink; then
-- $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
-- exit 0
-+ 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
-- $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
-- $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
-+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
- fi
- done
-
-@@ -3349,38 +8565,35 @@
- ;;
-
- obj)
-- if test -n "$deplibs"; then
-- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
-- fi
--
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-- $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
-+ func_warning "\`-dlopen' is ignored for objects"
- fi
-
-- if test -n "$rpath"; then
-- $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
-- fi
-+ case " $deplibs" in
-+ *\ -l* | *\ -L*)
-+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
-+ esac
-
-- if test -n "$xrpath"; then
-- $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
-- fi
-+ test -n "$rpath" && \
-+ func_warning "\`-rpath' is ignored for objects"
-
-- if test -n "$vinfo"; then
-- $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
-- fi
-+ test -n "$xrpath" && \
-+ func_warning "\`-R' is ignored for objects"
-
-- if test -n "$release"; then
-- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
-- fi
-+ 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)
-- if test -n "$objs$old_deplibs"; then
-- $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
-- exit 1
-- fi
-- libobj="$output"
-- obj=`$echo "X$output" | $Xsed -e "$lo2o"`
-+ 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=
-@@ -3389,7 +8602,7 @@
- esac
-
- # Delete the old objects.
-- $run $rm $obj $libobj
-+ $opt_dry_run || $RM $obj $libobj
-
- # Objects from convenience libraries. This assumes
- # single-version convenience libraries. Whenever we create
-@@ -3398,150 +8611,141 @@
- reload_conv_objs=
- gentop=
- # reload_cmds runs $LD directly, so let us get rid of
-- # -Wl from whole_archive_flag_spec
-+ # -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 reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
-+ 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"
-- $show "${rm}r $gentop"
-- $run ${rm}r "$gentop"
-- $show "$mkdir $gentop"
-- $run $mkdir "$gentop"
-- status=$?
-- if test $status -ne 0 && test ! -d "$gentop"; then
-- exit $status
-- fi
-- generated="$generated $gentop"
--
-- for xlib in $convenience; do
-- # Extract the objects.
-- case $xlib in
-- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-- *) xabs=`pwd`"/$xlib" ;;
-- esac
-- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-- xdir="$gentop/$xlib"
--
-- $show "${rm}r $xdir"
-- $run ${rm}r "$xdir"
-- $show "$mkdir $xdir"
-- $run $mkdir "$xdir"
-- status=$?
-- if test $status -ne 0 && test ! -d "$xdir"; then
-- exit $status
-- fi
-- $show "(cd $xdir && $AR x $xabs)"
-- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-+ func_append generated " $gentop"
-
-- reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-- done
-+ 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 "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-+ 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"
-- eval cmds=\"$reload_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-+ 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
-- $show "${rm}r $gentop"
-- $run ${rm}r $gentop
-+ func_show_eval '${RM}r "$gentop"'
- fi
-
-- exit 0
-+ exit $EXIT_SUCCESS
- fi
-
- if test "$build_libtool_libs" != yes; then
- if test -n "$gentop"; then
-- $show "${rm}r $gentop"
-- $run ${rm}r $gentop
-+ 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"
-- # $run eval "echo timestamp > $libobj" || exit $?
-- exit 0
-+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-+ exit $EXIT_SUCCESS
- fi
+- AC_MSG_CHECKING(for bfd_link_info.output_bfd)
+- AC_TRY_RUN([#include <bfd.h>
++ AC_MSG_CHECKING([for bfd_link_info.output_bfd])
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <bfd.h>
+ #include <bfdlink.h>
+- int main() {struct bfd_link_info i;i.output_bfd=0;return 0;}],
++ ]],[[struct bfd_link_info i;i.output_bfd=0;return 0;]])],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_OUTPUT_BFD),
+ AC_MSG_RESULT(no),
+@@ -1073,45 +1081,47 @@
+ # mechanism, in the PAGE macro. This offset is subtracted from
+ # addresses, in calculating a page for an address in the heap.
- 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"
-- eval cmds=\"$reload_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
--# else
--# # Just create a symlink.
--# $show $rm $libobj
--# $run $rm $libobj
--# xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
--# if test "X$xdir" = "X$libobj"; then
--# xdir="."
--# else
--# xdir="$xdir"
--# fi
--# baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
--# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
--# $show "(cd $xdir && $LN_S $oldobj $baseobj)"
--# $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
-+ func_execute_cmds "$reload_cmds" 'exit $?'
- fi
+-AC_CHECK_SIZEOF(long,0)
++AC_CHECK_SIZEOF(long)
+ AC_MSG_CHECKING(sizeof struct contblock)
- if test -n "$gentop"; then
-- $show "${rm}r $gentop"
-- $run ${rm}r $gentop
-+ func_show_eval '${RM}r "$gentop"'
- fi
+ # work around MSYS pwd result incompatibility
+ if test "$use" = "mingw" ; then
+-AC_TRY_RUN([#include <stdio.h>
++AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <stdio.h>
+ #define EXTER
+ #include "$MP_INCLUDE"
+ #include "h/enum.h"
+ #include "h/object.h"
+- int main(int argc,char **argv,char **envp) {
++ ]],[[
+ FILE *f=fopen("conftest1","w");
+ fprintf(f,"%u",sizeof(struct contblock));
+ fclose(f);
+ return 0;
+- }],sizeof_contblock=`cat conftest1`,
+- echo Cannot find sizeof struct contblock;exit 1,
+- echo Cannot find sizeof struct contblock;exit 1)
++ ]])],sizeof_contblock=`cat conftest1`,
++ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1),
++ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1))
+ else
+-AC_TRY_RUN([#include <stdio.h>
++AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <stdio.h>
+ #define EXTER
+ #include "$MP_INCLUDE"
+ #include "`pwd`/h/enum.h"
+ #include "`pwd`/h/object.h"
+- int main(int argc,char **argv,char **envp) {
++ ]],[[
+ FILE *f=fopen("conftest1","w");
+ fprintf(f,"%u",sizeof(struct contblock));
+ fclose(f);
+ return 0;
+- }],sizeof_contblock=`cat conftest1`,
+- echo Cannot find sizeof struct contblock;exit 1,
+- echo Cannot find sizeof struct contblock;exit 1)
++ ]])],sizeof_contblock=`cat conftest1`,
++ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1),
++ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1))
+ fi
+ AC_MSG_RESULT($sizeof_contblock)
+ AC_DEFINE_UNQUOTED(SIZEOF_CONTBLOCK,$sizeof_contblock)
-- exit 0
-+ exit $EXIT_SUCCESS
- ;;
- prog)
- case $host in
-- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
-+ *cygwin*) func_stripname '' '.exe' "$output"
-+ output=$func_stripname_result.exe;;
- esac
-- if test -n "$vinfo"; then
-- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
-- fi
-+ test -n "$vinfo" && \
-+ func_warning "\`-version-info' is ignored for programs"
+-AC_MSG_CHECKING(for word order)
+-AC_TRY_RUN([int main () {
++AC_MSG_CHECKING([for word order])
++AC_RUN_IFELSE([AC_LANG_PROGRAM([],[[
+ /* Are we little or big endian? Adapted from Harbison&Steele. */
+ union
+ {
+@@ -1120,7 +1130,7 @@
+ } u;
+ u.d = 1.0;
+ return u.l[sizeof(double)/sizeof(int)-1] ? 0 : 1;
+-}],AC_MSG_RESULT(little)
++]])],AC_MSG_RESULT(little)
+ AC_DEFINE(LITTLE_END),
+ AC_MSG_RESULT(big),
+ AC_MSG_RESULT([WARNING: ASSUMING LITTLE ENDIAN FOR CROSS COMPILING !!!]
+@@ -1133,15 +1143,16 @@
-- if test -n "$release"; then
-- $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
-- fi
-+ test -n "$release" && \
-+ func_warning "\`-release' is ignored for programs"
+ AC_MSG_CHECKING([for sbrk])
+ HAVE_SBRK=""
+-AC_TRY_RUN([#include <unistd.h>
+- #include <stdio.h>
+- int main() {
++AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <unistd.h>
++ #include <stdio.h>
++ ]],[[
+ FILE *f;
+ if (!(f=fopen("conftest1","w")))
+ return -1;
+ fprintf(f,"%u",sbrk(0));
+ return 0;
+- }],
++ ]])],
+ HAVE_SBRK=1
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]),
+@@ -1153,14 +1164,15 @@
+ # AC_MSG_RESULT(sys/personality.h not found))
-- if test "$preload" = yes; then
-- if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
-- test "$dlopen_self_static" = unknown; then
-- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
-- fi
-- fi
-+ 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."
+ AC_MSG_CHECKING([for ADDR_NO_RANDOMIZE constant])
+- AC_TRY_RUN([#include <sys/personality.h>
+- #include <stdio.h>
+- int main(int argc,char *argv[],char *envp[]) {
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <sys/personality.h>
++ #include <stdio.h>
++ ]],[[
+ FILE *f;
+ if (!(f=fopen("conftest1","w"))) return -1;
+ fprintf(f,"%x",ADDR_NO_RANDOMIZE);
+ return 0;
+- }],
++ ]])],
+ ADDR_NO_RANDOMIZE=`cat conftest1`,ADDR_NO_RANDOMIZE=0,ADDR_NO_RANDOMIZE=0)
+ if test "$ADDR_NO_RANDOMIZE" = "0" ; then
+ AC_MSG_RESULT([no, assuming 0x40000])
+@@ -1170,10 +1182,11 @@
+ fi
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
- # On Rhapsody replace the C library is the System framework
-- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
-- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
-+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
- ;;
- esac
+ AC_MSG_CHECKING([for personality(ADDR_NO_RANDOMIZE) support])
+- AC_TRY_RUN([void gprof_cleanup() {};
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++ void gprof_cleanup() {}
+ int main(int argc,char *argv[],char *envp[]) {
+ #include "h/unrandomize.h"
+- return 0;}],CAN_UNRANDOMIZE_SBRK=1,CAN_UNRANDOMIZE_SBRK=0,CAN_UNRANDOMIZE_SBRK=0)
++ return 0;}]])],CAN_UNRANDOMIZE_SBRK=1,CAN_UNRANDOMIZE_SBRK=0,CAN_UNRANDOMIZE_SBRK=0)
-- compile_command="$compile_command $compile_deplibs"
-- finalize_command="$finalize_command $finalize_deplibs"
-+ 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 "$CAN_UNRANDOMIZE_SBRK" != 0 ; then
+ AC_MSG_RESULT(yes)
+@@ -1183,8 +1196,9 @@
+ fi
- if test -n "$rpath$xrpath"; then
- # If the user specified any rpath flags, then add them.
-@@ -3549,7 +8753,7 @@
- # This is the magic to use -rpath.
- case "$finalize_rpath " in
- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir" ;;
-+ *) func_append finalize_rpath " $libdir" ;;
- esac
- done
- fi
-@@ -3568,25 +8772,32 @@
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
-- rpath="$rpath $flag"
-+ func_append rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
-- *) perm_rpath="$perm_rpath $libdir" ;;
-+ *) func_append perm_rpath " $libdir" ;;
- esac
+ AC_MSG_CHECKING([that sbrk is (now) non-random])
+- AC_TRY_RUN([#include <stdio.h>
+- void gprof_cleanup() {};
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++ #include <stdio.h>
++ void gprof_cleanup() {}
+ int main(int argc,char * argv[],char * envp[]) {
+ FILE *f;
+ #ifdef CAN_UNRANDOMIZE_SBRK
+@@ -1192,13 +1206,13 @@
+ #endif
+ if (!(f=fopen("conftest1","w"))) return -1;
+ fprintf(f,"%u",sbrk(0));
+- return 0;}],SBRK=`cat conftest1`,SBRK=0,SBRK=0)
++ return 0;}]])],SBRK=`cat conftest1`,SBRK=0,SBRK=0)
+ if test "$SBRK" = "0" ; then
+- AC_MSG_RESULT(cannot trap sbrk)
+- exit 1
++ AC_MSG_ERROR([cannot trap sbrk], 1)
fi
- case $host in
-- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
- case :$dllsearchpath: in
- *":$libdir:"*) ;;
-- *) dllsearchpath="$dllsearchpath:$libdir";;
-+ ::) dllsearchpath=$libdir;;
-+ *) func_append dllsearchpath ":$libdir";;
-+ esac
-+ case :$dllsearchpath: in
-+ *":$testbindir:"*) ;;
-+ ::) dllsearchpath=$testbindir;;
-+ *) func_append dllsearchpath ":$testbindir";;
- esac
- ;;
- esac
-@@ -3612,18 +8823,18 @@
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
-- rpath="$rpath $flag"
-+ func_append rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
-- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-+ *) func_append finalize_perm_rpath " $libdir" ;;
- esac
+- AC_TRY_RUN([#include <stdio.h>
+- void gprof_cleanup() {};
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[
++ #include <stdio.h>
++ void gprof_cleanup() {}
+ int main(int argc,char * argv[],char * envp[]) {
+ FILE *f;
+ #ifdef CAN_UNRANDOMIZE_SBRK
+@@ -1206,10 +1220,9 @@
+ #endif
+ if (!(f=fopen("conftest1","w"))) return -1;
+ fprintf(f,"%u",sbrk(0));
+- return 0;}],SBRK1=`cat conftest1`,SBRK1=0,SBRK1=0)
++ return 0;}]])],SBRK1=`cat conftest1`,SBRK1=0,SBRK1=0)
+ if test "$SBRK1" = "0" ; then
+- AC_MSG_RESULT(cannot trap sbrk)
+- exit 1
++ AC_MSG_ERROR([cannot trap sbrk], 1)
fi
- done
-@@ -3635,227 +8846,57 @@
- fi
- finalize_rpath="$rpath"
+ if test "$SBRK" = "$SBRK1" ; then
+ AC_MSG_RESULT(yes)
+@@ -1224,15 +1237,17 @@
+ fi
+
+ # pagewidth
+-AC_MSG_CHECKING(for pagewidth)
+-AC_TRY_RUN([#include <stdio.h>
++AC_MSG_CHECKING([for pagewidth])
++AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <stdio.h>
+ #include <unistd.h>
+-int main() {size_t i=getpagesize(),j;
++ ]],[[
++ size_t i=getpagesize(),j;
+ FILE *fp=fopen("conftest1","w");
+ for (j=0;i>>=1;j++);
+ if (j<12) {printf("pagewidth %u is too small\n",j);return -1;}
+ fprintf(fp,"%u",j);
+- return 0;}],PAGEWIDTH=`cat conftest1`,PAGEWIDTH=0,PAGEWIDTH=0)
++ return 0;]])],PAGEWIDTH=`cat conftest1`,PAGEWIDTH=0,PAGEWIDTH=0)
+ AC_MSG_RESULT($PAGEWIDTH)
+ AC_DEFINE_UNQUOTED(PAGEWIDTH,$PAGEWIDTH)
+ AC_SUBST(PAGEWIDTH)
+@@ -1240,11 +1255,12 @@
+
+ old_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$TLDFLAGS"
+-AC_MSG_CHECKING("finding DBEGIN")
+-AC_TRY_RUN([#include <stdio.h>
+- #include <stdlib.h>
++AC_MSG_CHECKING([finding DBEGIN])
++AC_RUN_IFELSE([AC_LANG_SOURCE([[
++#include <stdio.h>
++#include <stdlib.h>
+
+-void gprof_cleanup() {};
++void gprof_cleanup() {}
+ int
+ main(int argc,char * argv[],char *envp[])
+ {
+@@ -1269,36 +1285,35 @@
+ #endif
+ fclose(fp);
+ return 0;
+-}],dbegin=`cat conftest1`,dbegin=0,dbegin=0)
++}]])],dbegin=`cat conftest1`,dbegin=0,dbegin=0)
+ AC_DEFINE_UNQUOTED(DBEGIN,$dbegin /* where data begins */)
+ AC_MSG_RESULT(got $dbegin)
+ LDFLAGS="$old_LDFLAGS"
-- dlsyms=
-- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-- if test -n "$NM" && test -n "$global_symbol_pipe"; then
-- dlsyms="${outputname}S.c"
-- else
-- $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
-- fi
-+ 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
-- if test -n "$dlsyms"; then
-- case $dlsyms in
-- "") ;;
-- *.c)
-- # Discover the nlist of each of the dlfiles.
-- nlist="$output_objdir/${outputname}.nm"
--
-- $show "$rm $nlist ${nlist}S ${nlist}T"
-- $run $rm "$nlist" "${nlist}S" "${nlist}T"
--
-- # Parse the name list into a source file.
-- $show "creating $output_objdir/$dlsyms"
--
-- test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
--/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
--/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
--
--#ifdef __cplusplus
--extern \"C\" {
--#endif
--
--/* Prevent the only kind of declaration conflicts we can make. */
--#define lt_preloaded_symbols some_other_symbol
--
--/* External symbol declarations for the compiler. */\
--"
--
-- if test "$dlself" = yes; then
-- $show "generating symbol list for \`$output'"
--
-- test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
--
-- # Add our own program objects to the symbol list.
-- progfiles="$objs$old_deplibs"
-- for arg in $progfiles; do
-- $show "extracting global C symbols from \`$arg'"
-- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
-- done
--
-- if test -n "$exclude_expsyms"; then
-- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-- $run eval '$mv "$nlist"T "$nlist"'
-- fi
--
-- if test -n "$export_symbols_regex"; then
-- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-- $run eval '$mv "$nlist"T "$nlist"'
-- fi
--
-- # Prepare the list of exported symbols
-- if test -z "$export_symbols"; then
-- export_symbols="$output_objdir/$output.exp"
-- $run $rm $export_symbols
-- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-- else
-- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
-- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
-- $run eval 'mv "$nlist"T "$nlist"'
-- fi
-- fi
--
-- for arg in $dlprefiles; do
-- $show "extracting global C symbols from \`$arg'"
-- name=`echo "$arg" | sed -e 's%^.*/%%'`
-- $run eval 'echo ": $name " >> "$nlist"'
-- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
-- done
--
-- if test -z "$run"; then
-- # 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" | sort +2 | 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/$dlsyms"'
-- else
-- echo '/* NONE */' >> "$output_objdir/$dlsyms"
-- fi
--
-- $echo >> "$output_objdir/$dlsyms" "\
--
--#undef lt_preloaded_symbols
--
--#if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
--#else
--# define lt_ptr_t char *
--# define const
--#endif
--
--/* The mapping between symbol names and symbols. */
--const struct {
-- const char *name;
-- lt_ptr_t address;
--}
--lt_preloaded_symbols[] =
--{\
--"
--
-- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
-- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
-- < "$nlist" >> "$output_objdir/$dlsyms"
--
-- $echo >> "$output_objdir/$dlsyms" "\
-- {0, (lt_ptr_t) 0}
--};
--
--/* This works around a problem in FreeBSD linker */
--#ifdef FREEBSD_WORKAROUND
--static const void *lt_preloaded_setup() {
-- return lt_preloaded_symbols;
--}
--#endif
--
--#ifdef __cplusplus
+-AC_MSG_CHECKING("finding CSTACK_ADDRESS")
+-AC_TRY_RUN([#include <stdio.h>
+-main()
+-{
++AC_MSG_CHECKING([finding CSTACK_ADDRESS])
++AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++#include <stdio.h>
++]],[[
+ char *b ;
+ FILE *fp = fopen("conftest1","w");
+ fprintf(fp,"%ld",((long) &b));
+ fclose(fp);
+ return 0;
+-}],cstack_address=`cat conftest1`,cstack_address=0,cstack_address=0)
++]])],cstack_address=`cat conftest1`,cstack_address=0,cstack_address=0)
+ AC_DEFINE_UNQUOTED(CSTACK_ADDRESS,$cstack_address \
+ )
+ AC_MSG_RESULT(got $cstack_address)
+
+
+
+-AC_MSG_CHECKING("sizeof long long int")
+-AC_TRY_RUN([#include <stdio.h>
+-main()
+-{
++AC_MSG_CHECKING([sizeof long long int])
++AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++#include <stdio.h>
++]],[[
+ if (sizeof(long long int) == 2*sizeof(long)) return 0;
+ return 1;
-}
--#endif\
--"
-- fi
--
-- pic_flag_for_symtable=
-- case $host in
-- # compiling the symbol table file with pic_flag works around
-- # a FreeBSD bug that causes programs to crash when -lm is
-- # linked before any other PIC object. But we must not use
-- # pic_flag when linking with -static. The problem exists in
-- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-- case "$compile_command " in
-- *" -static "*) ;;
-- *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
-- esac;;
-- *-*-hpux*)
-- case "$compile_command " in
-- *" -static "*) ;;
-- *) pic_flag_for_symtable=" $pic_flag";;
-- esac
-- esac
--
-- # Now compile the dynamic symbol file.
-- $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
-- $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
--
-- # Clean up the generated files.
-- $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
-- $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
--
-- # Transform the symbol file into the correct name.
-- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-- ;;
-- *)
-- $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
-- exit 1
-- ;;
-- 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.
-+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+-],[AC_DEFINE(HAVE_LONG_LONG)
++]])],[AC_DEFINE(HAVE_LONG_LONG)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no),
+ AC_MSG_RESULT(no)
+@@ -1467,7 +1482,6 @@
+ # To get around this problem, check for both libraries together
+ # if -lsocket doesn't work by itself.
+ #--------------------------------------------------------------------
+-AC_MSG_CHECKING([for sockets])
+ tcl_checkBoth=0
+ AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
+ if test "$tcl_checkSocket" = 1; then
+@@ -1504,8 +1518,8 @@
+ AC_SUBST(RL_OBJS)
+ AC_SUBST(RL_LIB)
+
+-AC_MSG_CHECKING(For network code for nsocket.c)
+-AC_TRY_LINK([
++AC_MSG_CHECKING([for network code for nsocket.c])
++AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -1522,24 +1536,25 @@
+ #include <netinet/in.h> /* struct in_addr, struct sockaddr_in */
+ #include <arpa/inet.h> /* inet_ntoa() */
+ #include <netdb.h> /* gethostbyname() */
+-],[ connect(0,(struct sockaddr *)0,0);
++]],[[connect(0,(struct sockaddr *)0,0);
+ gethostbyname("jil");
+ socket(AF_INET, SOCK_STREAM, 0);
+- ],
++ ]])],
+ [AC_DEFINE(HAVE_NSOCKET)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+
+
+-AC_MSG_CHECKING(check for listen using fcntl)
+-AC_TRY_COMPILE([#include <stdio.h>
++AC_MSG_CHECKING([for listen using fcntl])
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++#include <stdio.h>
+ #include <fcntl.h>
+-],
+-[FILE *fp=fopen("configure.in","r");
++]],
++[[FILE *fp=fopen("configure.in","r");
+ int orig;
+ orig = fcntl(fileno(fp), F_GETFL);
+ if (! (orig & O_NONBLOCK )) return 0;
+-],
++]])],
+ [AC_DEFINE(LISTEN_USE_FCNTL)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+@@ -1560,7 +1575,7 @@
+ AC_SUBST(USE_CLEANUP)
+ gcl_ok=no
-- # Nullify the symbol file.
-- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
-+ # template prelinking step
-+ if test -n "$prelink_cmds"; then
-+ func_execute_cmds "$prelink_cmds" 'exit $?'
- fi
+-AC_HEADER_EGREP(LITTLE_ENDIAN, ctype.h, gcl_ok=yes, gcl_ok=noo)
++AC_EGREP_HEADER(LITTLE_ENDIAN, ctype.h, gcl_ok=yes, gcl_ok=no)
+ if test $gcl_ok = yes ; then
+ AC_DEFINE(ENDIAN_ALREADY_DEFINED)
+ fi
+@@ -1592,32 +1607,32 @@
+ esac
-- if test $need_relink = no || test "$build_libtool_libs" != yes; then
-+ 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 "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-+ 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.
-- $show "$link_command"
-- $run eval "$link_command"
-- status=$?
-+ exit_status=0
-+ func_show_eval "$link_command" 'exit_status=$?'
+-AC_MSG_CHECKING(check for SV_ONSTACK)
+-AC_TRY_COMPILE([#include <signal.h>
+-int joe=SV_ONSTACK;
+-],
+-[],
++AC_MSG_CHECKING([for SV_ONSTACK])
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++#include <signal.h>
++]],
++[[return SV_ONSTACK;]])],
+ [AC_DEFINE(HAVE_SV_ONSTACK)
+ AC_SUBST(HAVE_SV_ONSTACK)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
-- # Delete the generated files.
-- if test -n "$dlsyms"; then
-- $show "$rm $output_objdir/${outputname}S.${objext}"
-- $run $rm "$output_objdir/${outputname}S.${objext}"
-+ 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
+-AC_MSG_CHECKING(check for SIGSYS)
+-AC_TRY_COMPILE([#include <signal.h>
+-int joe=SIGSYS;
+-],
+-[],
++AC_MSG_CHECKING([for SIGSYS])
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++#include <signal.h>
++]],
++[[return SIGSYS;]])],
+ [AC_DEFINE(HAVE_SIGSYS)
+ AC_SUBST(HAVE_SIGSYS)
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
-- exit $status
-- fi
-+ # Delete the generated files.
-+ if test -f "$output_objdir/${outputname}S.${objext}"; then
-+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-+ fi
-- if test -n "$shlibpath_var"; then
-- # We should set the shlibpath_var
-- rpath=
-- for dir in $temp_rpath; do
-- case $dir in
-- [\\/]* | [A-Za-z]:[\\/]*)
-- # Absolute path.
-- rpath="$rpath$dir:"
-- ;;
-- *)
-- # Relative path: add a thisdir entry.
-- rpath="$rpath\$thisdir/$dir:"
-- ;;
-- esac
-- done
-- temp_rpath="$rpath"
-+ exit $exit_status
- fi
+-AC_MSG_CHECKING(check for SIGEMT)
+-AC_TRY_COMPILE([#include <signal.h>
+-int joe=SIGEMT;
+-],
+-[],
++AC_MSG_CHECKING([for SIGEMT])
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++#include <signal.h>
++]],
++[[return SIGEMT;]])],
+ [AC_DEFINE(HAVE_SIGEMT)
+ AC_SUBST(HAVE_SIGEMT)
+ AC_MSG_RESULT(yes)],
+@@ -1629,12 +1644,13 @@
+ #if test $use = "386-linux" ; then
+ AC_CHECK_HEADERS(asm/sigcontext.h)
+ AC_CHECK_HEADERS(asm/signal.h)
+- AC_MSG_CHECKING([for sigcontext...])
+- AC_TRY_COMPILE([#include <signal.h>
+- ],
+- [
++ AC_MSG_CHECKING([for sigcontext])
++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++ #include <signal.h>
++ ]],
++ [[
+ struct sigcontext foo;
+- ],
++ ]])],
+ [
+ sigcontext_works=1;
+ AC_DEFINE(SIGNAL_H_HAS_SIGCONTEXT)
+@@ -1645,18 +1661,19 @@
+ AC_MSG_RESULT(sigcontext NOT in signal.h)]
+ )
+ if test "$sigcontext_works" = 0 ; then
+- AC_MSG_CHECKING([for sigcontext...])
+- AC_TRY_COMPILE([#include <signal.h>
++ AC_MSG_CHECKING([for sigcontext])
++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++ #include <signal.h>
+ #ifdef HAVE_ASM_SIGCONTEXT_H
+ #include <asm/sigcontext.h>
+ #endif
+ #ifdef HAVE_ASM_SIGNAL_H
+ #include <asm/signal.h>
+ #endif
+- ],
+- [
++ ]],
++ [[
+ struct sigcontext foo;
+- ],
++ ]])],
+ [
+ AC_DEFINE(HAVE_SIGCONTEXT)
+ AC_MSG_RESULT(sigcontext in asm files)
+@@ -1766,6 +1783,8 @@
- if test -n "$compile_shlibpath$finalize_shlibpath"; then
-@@ -3872,7 +8913,7 @@
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
-- rpath="$rpath$dir:"
-+ func_append rpath "$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
-@@ -3880,7 +8921,7 @@
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
-- rpath="$rpath$dir:"
-+ func_append rpath "$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
-@@ -3890,13 +8931,19 @@
- # We don't need to create a wrapper script.
- link_command="$compile_var$compile_command$compile_rpath"
- # Replace the output file specification.
-- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- # Delete the old output file.
-- $run $rm $output
-+ $opt_dry_run || $RM $output
- # Link the executable and exit
-- $show "$link_command"
-- $run eval "$link_command" || exit $?
-- exit 0
-+ 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 "$enable_tcltk" = "yes" ; then
- if test "$hardcode_action" = relink; then
-@@ -3904,13 +8951,13 @@
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
++AC_CHECK_LIB(ieee,main,have_ieee=1,have_ieee=0)
++AC_CHECK_PROG(TCLSH,tclsh,tclsh,${TCLSH})
+ AC_MSG_CHECKING([for tcl/tk])
-- $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
-- $echo "$modename: \`$output' will be relinked during installation" 1>&2
-+ 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 "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
-+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
-@@ -3922,246 +8969,99 @@
- fi
- # Replace the output file specification.
-- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+@@ -1786,9 +1805,6 @@
+ EOF
+ #cp conftest.tcl foo.tcl
+
+-AC_CHECK_PROG(TCLSH,tclsh,tclsh,${TCLSH})
+-#AC_CHECK_PROG(TCLSH,tclsh8.0,tclsh8.0,${TCLSH})
+-
+ if test "${TCLSH}" = "" ; then true ; else
+ TCL_CONFIG_PREFIX=`${TCLSH} < conftest.tcl`
+ fi
+@@ -1862,7 +1878,6 @@
+
+ fi
- # Delete the old output files.
-- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
-+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+-AC_CHECK_LIB(lieee,main,have_ieee=1,have_ieee=0)
+ if test "$have_ieee" = "0" ; then
+ TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
+ fi
+@@ -1906,15 +1921,18 @@
-- $show "$link_command"
-- $run eval "$link_command" || exit $?
-+ func_show_eval "$link_command" 'exit $?'
+ # the time handling for unixtime, add timezone
+
+-AC_MSG_CHECKING([alloca])
+-AC_TRY_RUN([int main() { exit(alloca(500) != NULL ? 0 : 1);}],
++# alloca
+
-+ 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
++AC_MSG_CHECKING([for alloca])
++AC_RUN_IFELSE([AC_LANG_PROGRAM([],[[exit(alloca(500) != NULL ? 0 : 1);]])],
+ ,gcl_ok=yes, gcl_ok=no,gcl_ok=no)
+ if test $gcl_ok = yes ; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ALLOCA)
+ else
+- AC_TRY_RUN([#include <alloca.h>
+- int main() { exit(alloca(500) != NULL ? 0 : 1);}],
++ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
++ #include <alloca.h>
++ ]],[[exit(alloca(500) != NULL ? 0 : 1);]])],
+ ,gcl_ok=yes, gcl_ok=no,gcl_ok=no)
+ if test $gcl_ok = yes ; then
+ AC_MSG_RESULT(yes)
+@@ -1933,8 +1951,6 @@
- # Now create the wrapper script.
-- $show "creating $output"
-+ 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}\" || unset $var || { $var=; export $var; }; }; $relink_command"
-+ 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
-- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
-- relink_command="$var=\"$var_value\"; export $var; $relink_command"
-+ 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-- fi
--
-- # Quote $echo for shipping.
-- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
-- case $0 in
-- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
-- *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
-- esac
-- qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
-- else
-- qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
-+ relink_command="(cd `pwd`; $relink_command)"
-+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
- fi
-- # Only actually do things if our run command is non-null.
-- if test -z "$run"; then
-+ # Only actually do things if not in dry run mode.
-+ $opt_dry_run || {
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
-- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
-+ *.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 ;;
-+ *cygwin*)
-+ exeext=.exe
-+ func_stripname '' '.exe' "$outputname"
-+ outputname=$func_stripname_result ;;
- *) exeext= ;;
- esac
-- $rm $output
-- trap "$rm $output; exit 1" 1 2 15
--
-- $echo > $output "\
--#! $SHELL
--
--# $output - temporary wrapper script for $objdir/$outputname
--# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
--#
--# The $output program cannot be directly executed until all the libtool
--# libraries that it depends on are installed.
--#
--# This wrapper script should never be moved out of the build directory.
--# If it is, it will not operate correctly.
--
--# Sed substitution that helps us do robust quoting. It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
--sed_quote_subst='$sed_quote_subst'
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
--
--relink_command=\"$relink_command > /dev/null 2>&1\"
+-# alloca
-
--# This environment variable determines our operation mode.
--if test \"\$libtool_install_magic\" = \"$magic\"; then
-- # install mode needs the following variable:
-- notinst_deplibs='$notinst_deplibs'
+ # dlopen etc
+ # idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
+ # then dlload("foo.o") a lisp file can refer to things in libX.so
+@@ -1958,7 +1974,7 @@
+
+ # redhat/cygnus released for some reason a buggy version of gcc,
+ # which no one else released. Catch that here.
+-AC_MSG_CHECKING([Checking for buggy gcc version from redhat])
++AC_MSG_CHECKING([for buggy gcc version from redhat])
+ if 2>&1 $CC -v | fgrep "gcc version 2.96" > /dev/null
+ then
+ BROKEN_O4_OPT=1
+@@ -1993,7 +2009,8 @@
+ if test -f h/$use.defs ; then
+
+ AC_SUBST(use)
+- AC_OUTPUT(makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp )
++ AC_CONFIG_FILES(makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp )
++ AC_OUTPUT
+ echo makedefc
+ cat makedefc
+
+--- ./configure.orig 2012-01-18 07:52:04.000000000 -0700
++++ ./configure 2012-03-28 09:53:39.628412580 -0600
+@@ -651,10 +651,10 @@
+ XMKMF
+ GMPDIR
+ GMP
++MAKEINFO
+ HAVE_MALLOC_ZONE_MEMALIGN
+ EGREP
+ GREP
+-MAKEINFO
+ AWK
+ CPP
+ OBJEXT
+@@ -4023,7 +4023,14 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int main() {return 0;}
++
++int
++main ()
++{
++return 0;
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ TCFLAGS="$TCFLAGS $TMPF";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+@@ -4269,51 +4276,6 @@
+ $as_echo_n "checking system version (for dynamic loading)... " >&6; }
+ if machine=`uname -m` ; then true; else machine=unknown ; fi
+
+-for ac_prog in makeinfo
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if ${ac_cv_prog_MAKEINFO+:} false; then :
+- $as_echo_n "(cached) " >&6
-else
-- # When we are sourced in execute mode, \$file and \$echo are already set.
-- if test \"\$libtool_execute_magic\" != \"$magic\"; then
-- echo=\"$qecho\"
-- file=\"\$0\"
-- # Make sure echo works.
-- if test \"X\$1\" = X--no-reexec; then
-- # Discard the --no-reexec flag, and continue.
-- shift
-- elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
-- # Yippee, \$echo works!
-- :
-- else
-- # Restart under the correct shell, and then maybe \$echo will work.
-- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-- fi
-- fi\
--"
-- $echo >> $output "\
--
-- # Find the directory that this script lives in.
-- thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
-- done
--
-- # Try to get the absolute directory name.
-- absdir=\`cd \"\$thisdir\" && pwd\`
-- test -n \"\$absdir\" && thisdir=\"\$absdir\"
--"
--
-- if test "$fast_install" = yes; then
-- echo >> $output "\
-- program=lt-'$outputname'$exeext
-- progdir=\"\$thisdir/$objdir\"
--
-- if test ! -f \"\$progdir/\$program\" || \\
-- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/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 >> $output "\
--
-- # 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
+- if test -n "$MAKEINFO"; then
+- ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_MAKEINFO="$ac_prog"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
-
-- $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-- { $rm \"\$progdir/\$program\";
-- $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-- $rm \"\$progdir/\$file\"
-- fi"
-- else
-- echo >> $output "\
-- program='$outputname'
-- progdir=\"\$thisdir/$objdir\"
--"
-- fi
+-fi
+-fi
+-MAKEINFO=$ac_cv_prog_MAKEINFO
+-if test -n "$MAKEINFO"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
+-$as_echo "$MAKEINFO" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
-
-- echo >> $output "\
-
-- if test -f \"\$progdir/\$program\"; then"
+- test -n "$MAKEINFO" && break
+-done
+-test -n "$MAKEINFO" || MAKEINFO=""false""
-
-- # Export our shlibpath_var if we have one.
-- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-- $echo >> $output "\
-- # Add our own library path to $shlibpath_var
-- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-- # Some systems cannot cope with colon-terminated $shlibpath_var
-- # The second colon is a workaround for a bug in BeOS R4 sed
-- $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
-- export $shlibpath_var
--"
-- fi
-+ 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
+ if test -f /usr/lib/NextStep/software_version; then
+ system=NEXTSTEP-`${AWK} '/3/,/3/' /usr/lib/NextStep/software_version`
+ else
+@@ -4711,22 +4673,29 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_sysconf" >&5
+ $as_echo "$ac_cv_lib_c_sysconf" >&6; }
+ if test "x$ac_cv_lib_c_sysconf" = xyes; then :
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for _SC_CLK_TCK\"" >&5
+-$as_echo_n "checking \"for _SC_CLK_TCK\"... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _SC_CLK_TCK" >&5
++$as_echo_n "checking for _SC_CLK_TCK... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ hz=0
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <unistd.h>
++
++ #include <unistd.h>
+ #include <stdio.h>
+- int
+- main() {
++
++int
++main ()
++{
++
+ FILE *fp=fopen("conftest1","w");
+ fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
+ fclose(fp);
+ return 0;
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ hz=`cat conftest1`
+@@ -4750,6 +4719,117 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
++$as_echo_n "checking for egrep... " >&6; }
++if ${ac_cv_path_EGREP+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ if test -z "$EGREP"; then
++ ac_path_EGREP_found=false
++ # Loop through the user's path and test for each of PROGNAME-LIST
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++# Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ $as_echo_n 0123456789 >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ $as_echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ as_fn_arith $ac_count + 1 && ac_count=$as_val
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++ $ac_path_EGREP_found && break 3
++ done
++ done
++ done
++IFS=$as_save_IFS
++ if test -z "$ac_cv_path_EGREP"; then
++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
++ fi
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++ fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
++$as_echo "$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++for ac_prog in makeinfo
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_MAKEINFO+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MAKEINFO"; then
++ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MAKEINFO="$ac_prog"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MAKEINFO=$ac_cv_prog_MAKEINFO
++if test -n "$MAKEINFO"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
++$as_echo "$MAKEINFO" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++ test -n "$MAKEINFO" && break
++done
++test -n "$MAKEINFO" || MAKEINFO=""false""
++
++
+
+ #MY_SUBDIRS=
+
+@@ -4803,25 +4883,36 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_init" >&5
+ $as_echo "$ac_cv_lib_gmp___gmpz_init" >&6; }
+ if test "x$ac_cv_lib_gmp___gmpz_init" = xyes; then :
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for external gmp version\"" >&5
+-$as_echo_n "checking \"for external gmp version\"... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for external gmp version" >&5
++$as_echo_n "checking for external gmp version... " >&6; }
+ if test "$cross_compiling" = yes; then :
+- echo "Cannot use dynamic gmp lib"
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cannot use dynamic gmp lib" >&5
++$as_echo "Cannot use dynamic gmp lib" >&6; }
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <gmp.h>
+- int main() {
++
++ #include <gmp.h>
++
++int
++main ()
++{
++
+ #if __GNU_MP_VERSION == 4 || __GNU_MP_VERSION == 5
+ return 0;
+ #else
+ return -1;
+ #endif
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ # MPFILES=$GMPDIR/mpn/mul_n.o
+ # PATCHED_SYMBOLS=__gmpn_toom3_mul_n
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 4/5" >&5
++$as_echo "4/5" >&6; }
+ MPFILES=
+ PATCHED_SYMBOLS=
+ # if test "$use" = "m68k-linux" ; then
+@@ -4834,7 +4925,8 @@
+ MP_INCLUDE=`cpp foo.c | grep /gmp.h | head -n 1 | $AWK '{print $3}' | tr -d '"'`
+ rm -f foo.c
+ else
+- echo "Cannot use dynamic gmp lib"
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cannot use dynamic gmp lib" >&5
++$as_echo "Cannot use dynamic gmp lib" >&6; }
+ fi
+ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+@@ -4894,8 +4986,8 @@
-- # fixup the dll searchpath if we need to.
-- if test -n "$dllsearchpath"; then
-- $echo >> $output "\
-- # Add the dll search path components to the executable PATH
-- PATH=$dllsearchpath:\$PATH
--"
-- fi
-+ func_emit_cwrapperexe_src > $cwrappersource
+ fi
-- $echo >> $output "\
-- if test \"\$libtool_execute_magic\" != \"$magic\"; then
-- # Run the actual program with our arguments.
--"
-- case $host in
-- # win32 systems need to use the prog path for dll
-- # lookup to work
-- *-*-cygwin* | *-*-pw32*)
-- $echo >> $output "\
-- exec \$progdir/\$program \${1+\"\$@\"}
--"
-- ;;
-+ # 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
-+ }
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for leading underscore in object symbols\"" >&5
+-$as_echo_n "checking \"for leading underscore in object symbols\"... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for leading underscore in object symbols" >&5
++$as_echo_n "checking for leading underscore in object symbols... " >&6; }
+ cat>foo.c <<EOFF
+ #include <math.h>
+ #include <stdio.h>
+@@ -4906,45 +4998,53 @@
+ LEADING_UNDERSCORE=1
+ $as_echo "#define LEADING_UNDERSCORE 1" >>confdefs.h
-- # Backslashes separate directories on plain windows
-- *-*-mingw | *-*-os2*)
-- $echo >> $output "\
-- exec \$progdir\\\\\$program \${1+\"\$@\"}
--"
-+ # 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
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
+-$as_echo "\"yes\"" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
+ else
+ LEADING_UNDERSCORE=""
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
+-$as_echo "\"no\"" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for GNU ld option -Map\"" >&5
+-$as_echo_n "checking \"for GNU ld option -Map\"... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld option -Map" >&5
++$as_echo_n "checking for GNU ld option -Map... " >&6; }
+ touch map
+ $CC -o foo -Wl,-Map map foo.o >/dev/null 2>&1
+ if test `cat map | wc -l` != "0" ; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
+-$as_echo "\"yes\"" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
+ $as_echo "#define HAVE_GNU_LD 1" >>confdefs.h
-- *)
-- $echo >> $output "\
-- # Export the path to the program.
-- PATH=\"\$progdir:\$PATH\"
-- export PATH
--
-- exec \$program \${1+\"\$@\"}
--"
-+ func_emit_wrapper no > $output
-+ chmod +x $output
- ;;
- esac
-- $echo >> $output "\
-- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
-- exit 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\
--"
-- chmod +x $output
-- fi
-- exit 0
-+ }
-+ exit $EXIT_SUCCESS
- ;;
- esac
+ GNU_LD=1
+ else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
+-$as_echo "\"no\"" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
+ GNU_LD=
+ fi
+ rm -f foo.c foo.o foo map
-@@ -4169,7 +9069,7 @@
- for oldlib in $oldlibs; do
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for size of gmp limbs\"" >&5
+-$as_echo_n "checking \"for size of gmp limbs\"... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for size of gmp limbs" >&5
++$as_echo_n "checking for size of gmp limbs... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ mpsize=0
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
++
++ #include <stdio.h>
+ #include "$MP_INCLUDE"
+- int main() {
++
++int
++main ()
++{
++
+ FILE *fp=fopen("conftest1","w");
+ fprintf(fp,"%u",sizeof(mp_limb_t));
+ fclose(fp);
+ return 0;
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ mpsize=`cat conftest1`
+@@ -4956,8 +5056,7 @@
+ fi
- if test "$build_libtool_libs" = convenience; then
-- oldobjs="$libobjs_save"
-+ oldobjs="$libobjs_save $symfileobj"
- addlibs="$convenience"
- build_libtool_libs=no
- else
-@@ -4177,146 +9077,177 @@
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
-- oldobjs="$objs$old_deplibs $non_pic_objects"
-+ 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 "$mpsize" = "0" ; then
+- echo "Cannot determine mpsize"
+- exit 1
++ as_fn_error 1 "Cannot determine mpsize" "$LINENO" 5
+ fi
+ cat >>confdefs.h <<_ACEOF
+ #define MP_LIMB_BYTES $mpsize
+@@ -4966,23 +5065,31 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mpsize" >&5
+ $as_echo "$mpsize" >&6; }
- if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
-- $show "${rm}r $gentop"
-- $run ${rm}r "$gentop"
-- $show "$mkdir $gentop"
-- $run $mkdir "$gentop"
-- status=$?
-- if test $status -ne 0 && test ! -d "$gentop"; then
-- exit $status
-- fi
-- generated="$generated $gentop"
--
-- # Add in members from convenience archives.
-- for xlib in $addlibs; do
-- # Extract the objects.
-- case $xlib in
-- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-- *) xabs=`pwd`"/$xlib" ;;
-- esac
-- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-- xdir="$gentop/$xlib"
--
-- $show "${rm}r $xdir"
-- $run ${rm}r "$xdir"
-- $show "$mkdir $xdir"
-- $run $mkdir "$xdir"
-- status=$?
-- if test $status -ne 0 && test ! -d "$xdir"; then
-- exit $status
-- fi
-- $show "(cd $xdir && $AR x $xabs)"
-- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-+ func_append generated " $gentop"
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"_SHORT_LIMB\"" >&5
+-$as_echo_n "checking \"_SHORT_LIMB\"... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking _SHORT_LIMB" >&5
++$as_echo_n "checking _SHORT_LIMB... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
++
++ #include <stdio.h>
+ #include "$MP_INCLUDE"
+- int main() {
++
++int
++main ()
++{
++
+ #ifdef _SHORT_LIMB
+ return 0;
+ #else
+ return 1;
+ #endif
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ $as_echo "#define __SHORT_LIMB 1" >>confdefs.h
+@@ -4996,23 +5103,31 @@
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
-- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print | $NL2SP`
-- done
-+ func_extract_archives $gentop $addlibs
-+ func_append oldobjs " $func_extract_archives_result"
- fi
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"_LONG_LONG_LIMB\"" >&5
+-$as_echo_n "checking \"_LONG_LONG_LIMB\"... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking _LONG_LONG_LIMB" >&5
++$as_echo_n "checking _LONG_LONG_LIMB... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
++
++ #include <stdio.h>
+ #include "$MP_INCLUDE"
+- int main() {
++
++int
++main ()
++{
++
+ #ifdef _LONG_LONG_LIMB
+ return 0;
+ #else
+ return 1;
+ #endif
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ $as_echo "#define __LONG_LONG_LIMB 1" >>confdefs.h
+@@ -5351,8 +5466,7 @@
+ fi
- # Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-- eval cmds=\"$old_archive_from_new_cmds\"
-+ cmds=$old_archive_from_new_cmds
- else
--# # Ensure that we have .o objects in place in case we decided
--# # not to build a shared library, and have fallen back to building
--# # static libs even though --disable-static was passed!
--# for oldobj in $oldobjs; do
--# if test ! -f $oldobj; then
--# xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
--# if test "X$xdir" = "X$oldobj"; then
--# xdir="."
--# else
--# xdir="$xdir"
--# fi
--# baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
--# obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
--# $show "(cd $xdir && ${LN_S} $obj $baseobj)"
--# $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
--# fi
--# done
+ if test "$have_dl" = "0" ; then
+- echo "Cannot find dlopen in -dl"
+- exit 1
++ as_fn_error 1 "Cannot find dlopen in -dl" "$LINENO" 5
+ fi
-- eval cmds=\"$old_archive_cmds\"
-+ # Add any objects from preloaded convenience libraries
-+ if test -n "$dlprefiles"; then
-+ gentop="$output_objdir/${outputname}x"
-+ func_append generated " $gentop"
+ TLIBS="$TLIBS -ldl -rdynamic"
+@@ -5410,9 +5524,17 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#define IN_GCC
++
++ #define IN_GCC
+ #include <bfd.h>
+- int main() { symbol_info t; return 0;}
++
++int
++main ()
++{
++symbol_info t; return 0;
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+@@ -5423,10 +5545,18 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#define CONST const
++
++ #define CONST const
+ #define IN_GCC
+ #include <bfd.h>
+- int main() {symbol_info t; return 0;}
++
++int
++main ()
++{
++symbol_info t; return 0;
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+@@ -5459,18 +5589,26 @@
+ # BFD boolean syntax
+ #
-- if len=`expr "X$cmds" : ".*"` &&
-- test $len -le $max_cmd_len; then
-- :
-- else
-- # the command line is too long to link in one step, link in parts
-- $echo "using piecewise archive linking..."
-+ func_extract_archives $gentop $dlprefiles
-+ func_append oldobjs " $func_extract_archives_result"
-+ fi
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for useable bfd_boolean" >&5
+-$as_echo_n "checking for useable bfd_boolean... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable bfd_boolean" >&5
++$as_echo_n "checking for usable bfd_boolean... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#define IN_GCC
+
-+ # 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
-+ eval cmds=\"$old_archive_cmds\"
++ #define IN_GCC
+ #include <bfd.h>
+ bfd_boolean foo() {return FALSE;}
+- int main() {return 0;}
++
++int
++main ()
++{
++return 0;
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+@@ -5499,9 +5637,17 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <bfd.h>
++
++ #include <bfd.h>
+ #include <bfdlink.h>
+- int main() {struct bfd_link_info i;i.output_bfd=0;return 0;}
++
++int
++main ()
++{
++struct bfd_link_info i;i.output_bfd=0;return 0;
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+@@ -5899,26 +6045,34 @@
+ # work around MSYS pwd result incompatibility
+ if test "$use" = "mingw" ; then
+ if test "$cross_compiling" = yes; then :
+- echo Cannot find sizeof struct contblock;exit 1
++ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
++
++ #include <stdio.h>
+ #define EXTER
+ #include "$MP_INCLUDE"
+ #include "h/enum.h"
+ #include "h/object.h"
+- int main(int argc,char **argv,char **envp) {
++
++int
++main ()
++{
++
+ FILE *f=fopen("conftest1","w");
+ fprintf(f,"%u",sizeof(struct contblock));
+ fclose(f);
+ return 0;
+- }
+
-+ 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
-- for obj in $save_oldobjs
-- do
-- oldobjs="$objlist $obj"
-- objlist="$objlist $obj"
-- eval test_cmds=\"$old_archive_cmds\"
-- if len=`expr "X$test_cmds" : ".*"` &&
-- test $len -le $max_cmd_len; then
-- :
-- else
-- # the above command should be used before it gets too long
-- oldobjs=$objlist
-+ 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=
-- fi
-- done
-+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-+ objlist=
-+ len=$len0
-+ fi
-+ done
- RANLIB=$save_RANLIB
-- oldobjs=$objlist
-- eval cmds=\"\$concat_cmds~$old_archive_cmds\"
-- fi
-+ oldobjs=$objlist
-+ if test "X$oldobjs" = "X" ; then
-+ eval cmds=\"\$concat_cmds\"
-+ else
-+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-+ fi
-+ fi
- fi
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-+ func_execute_cmds "$cmds" 'exit $?'
- done
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ sizeof_contblock=`cat conftest1`
+ else
+- echo Cannot find sizeof struct contblock;exit 1
++ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
+ fi
+ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+@@ -5926,26 +6080,34 @@
-- if test -n "$generated"; then
-- $show "${rm}r$generated"
-- $run ${rm}r$generated
-- fi
-+ test -n "$generated" && \
-+ func_show_eval "${RM}r$generated"
+ else
+ if test "$cross_compiling" = yes; then :
+- echo Cannot find sizeof struct contblock;exit 1
++ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
++
++ #include <stdio.h>
+ #define EXTER
+ #include "$MP_INCLUDE"
+ #include "`pwd`/h/enum.h"
+ #include "`pwd`/h/object.h"
+- int main(int argc,char **argv,char **envp) {
++
++int
++main ()
++{
++
+ FILE *f=fopen("conftest1","w");
+ fprintf(f,"%u",sizeof(struct contblock));
+ fclose(f);
+ return 0;
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ sizeof_contblock=`cat conftest1`
+ else
+- echo Cannot find sizeof struct contblock;exit 1
++ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
+ fi
+ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+@@ -5972,7 +6134,11 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int main () {
++
++int
++main ()
++{
++
+ /* Are we little or big endian? Adapted from Harbison&Steele. */
+ union
+ {
+@@ -5981,6 +6147,9 @@
+ } u;
+ u.d = 1.0;
+ return u.l[sizeof(double)/sizeof(int)-1] ? 0 : 1;
++
++ ;
++ return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+@@ -6011,15 +6180,23 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <unistd.h>
+- #include <stdio.h>
+- int main() {
++
++ #include <unistd.h>
++ #include <stdio.h>
++
++int
++main ()
++{
++
+ FILE *f;
+ if (!(f=fopen("conftest1","w")))
+ return -1;
+ fprintf(f,"%u",sbrk(0));
+ return 0;
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ HAVE_SBRK=1
+@@ -6046,14 +6223,22 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <sys/personality.h>
+- #include <stdio.h>
+- int main(int argc,char *argv[],char *envp[]) {
++
++ #include <sys/personality.h>
++ #include <stdio.h>
++
++int
++main ()
++{
++
+ FILE *f;
+ if (!(f=fopen("conftest1","w"))) return -1;
+ fprintf(f,"%x",ADDR_NO_RANDOMIZE);
+ return 0;
+- }
++
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ ADDR_NO_RANDOMIZE=`cat conftest1`
+@@ -6083,7 +6268,8 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-void gprof_cleanup() {};
++
++ void gprof_cleanup() {}
+ int main(int argc,char *argv[],char *envp[]) {
+ #include "h/unrandomize.h"
+ return 0;}
+@@ -6115,8 +6301,9 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
+- void gprof_cleanup() {};
++
++ #include <stdio.h>
++ void gprof_cleanup() {}
+ int main(int argc,char * argv[],char * envp[]) {
+ FILE *f;
+ #ifdef CAN_UNRANDOMIZE_SBRK
+@@ -6136,17 +6323,16 @@
+ fi
- # Now create the libtool archive.
- case $output in
- *.la)
- old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
-- $show "creating $output"
-+ func_verbose "creating $output"
+ if test "$SBRK" = "0" ; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot trap sbrk" >&5
+-$as_echo "cannot trap sbrk" >&6; }
+- exit 1
++ as_fn_error 1 "cannot trap sbrk" "$LINENO" 5
+ fi
+ if test "$cross_compiling" = yes; then :
+ SBRK1=0
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
+- void gprof_cleanup() {};
++
++ #include <stdio.h>
++ void gprof_cleanup() {}
+ int main(int argc,char * argv[],char * envp[]) {
+ FILE *f;
+ #ifdef CAN_UNRANDOMIZE_SBRK
+@@ -6166,9 +6352,7 @@
+ fi
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
-- relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
-+ 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
-- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
-- relink_command="$var=\"$var_value\"; export $var; $relink_command"
-+ func_quote_for_eval "$var_value"
-+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ if test "$SBRK1" = "0" ; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot trap sbrk" >&5
+-$as_echo "cannot trap sbrk" >&6; }
+- exit 1
++ as_fn_error 1 "cannot trap sbrk" "$LINENO" 5
fi
- done
- # Quote the link command for shipping.
-- tagopts=
-- for tag in $taglist; do
-- tagopts="$tagopts --tag $tag"
-- done
-- relink_command="(cd `pwd`; $SHELL $0$tagopts --mode=relink $libtool_args)"
-- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-+ 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
+ if test "$SBRK" = "$SBRK1" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+@@ -6192,14 +6376,23 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <stdio.h>
++
++ #include <stdio.h>
+ #include <unistd.h>
+-int main() {size_t i=getpagesize(),j;
++
++int
++main ()
++{
++
++ size_t i=getpagesize(),j;
+ FILE *fp=fopen("conftest1","w");
+ for (j=0;i>>=1;j++);
+ if (j<12) {printf("pagewidth %u is too small\n",j);return -1;}
+ fprintf(fp,"%u",j);
+- return 0;}
++ return 0;
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ PAGEWIDTH=`cat conftest1`
+@@ -6221,17 +6414,18 @@
- # Only create the output if not a dry run.
-- if test -z "$run"; then
-+ $opt_dry_run || {
- for installed in no yes; do
- if test "$installed" = yes; then
- if test -z "$install_libdir"; then
-@@ -4328,50 +9259,108 @@
- for deplib in $dependency_libs; do
- case $deplib in
- *.la)
-- name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-- if test -z "$libdir"; then
-- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-- exit 1
-- fi
-- newdependency_libs="$newdependency_libs $libdir/$name"
-+ func_basename "$deplib"
-+ name="$func_basename_result"
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ test -z "$libdir" && \
-+ func_fatal_error "\`$deplib' is not a valid libtool archive"
-+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
- ;;
-- *) newdependency_libs="$newdependency_libs $deplib" ;;
-+ -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=
+ old_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$TLDFLAGS"
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"finding DBEGIN\"" >&5
+-$as_echo_n "checking \"finding DBEGIN\"... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking finding DBEGIN" >&5
++$as_echo_n "checking finding DBEGIN... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ dbegin=0
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
- for lib in $dlfiles; do
-- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-- if test -z "$libdir"; then
-- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-- exit 1
-- fi
-- newdlfiles="$newdlfiles $libdir/$name"
-+ 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
-- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-- if test -z "$libdir"; then
-- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-- exit 1
-- fi
-- newdlprefiles="$newdlprefiles $libdir/$name"
-+ 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
-+ $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) tdlname=../bin/$dlname ;;
-+ *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 "\
-+ $ECHO > $output "\
- # $outputname - a libtool library file
--# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
- #
- # Please DO NOT delete this file!
- # It is necessary for linking the library.
-@@ -4385,9 +9374,15 @@
- # The name of the static archive.
- old_library='$old_library'
+ #include <stdio.h>
+- #include <stdlib.h>
++#include <stdlib.h>
-+# Linker flags that can not go in dependency_libs.
-+inherited_linker_flags='$new_inherited_linker_flags'
+-void gprof_cleanup() {};
++void gprof_cleanup() {}
+ int
+ main(int argc,char * argv[],char *envp[])
+ {
+@@ -6276,21 +6470,28 @@
+ LDFLAGS="$old_LDFLAGS"
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"finding CSTACK_ADDRESS\"" >&5
+-$as_echo_n "checking \"finding CSTACK_ADDRESS\"... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking finding CSTACK_ADDRESS" >&5
++$as_echo_n "checking finding CSTACK_ADDRESS... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ cstack_address=0
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++
+ #include <stdio.h>
+-main()
++
++int
++main ()
+ {
+
- # Libraries that this one depends upon.
- dependency_libs='$dependency_libs'
-
-+# Names of additional weak libraries provided by this library
-+weak_library_names='$weak_libs'
+ char *b ;
+ FILE *fp = fopen("conftest1","w");
+ fprintf(fp,"%ld",((long) &b));
+ fclose(fp);
+ return 0;
+
- # Version information for $libname.
- current=$current
- age=$age
-@@ -4396,692 +9391,39 @@
- # Is this an already installed library?
- installed=$installed
++ ;
++ return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+@@ -6312,8 +6513,8 @@
-+# 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 "\
-+ if test "$installed" = no && test "$need_relink" = yes; then
-+ $ECHO >> $output "\
- relink_command=\"$relink_command\""
- fi
- done
-- fi
-+ }
- # Do a symbolic link so that the libtool archive can be found in
- # LD_LIBRARY_PATH before the program is installed.
-- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
-- $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
-- ;;
-- esac
-- exit 0
-- ;;
--
-- # libtool install mode
-- install)
-- modename="$modename: install"
--
-- # There may be an optional sh(1) argument at the beginning of
-- # install_prog (especially on Windows NT).
-- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-- # Allow the use of GNU shtool's install command.
-- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
-- # Aesthetically quote it.
-- arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
-- arg="\"$arg\""
-- ;;
-- esac
-- install_prog="$arg "
-- arg="$1"
-- shift
-- else
-- install_prog=
-- arg="$nonopt"
-- fi
--
-- # The real first argument should be the name of the installation program.
-- # Aesthetically quote it.
-- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
-- arg="\"$arg\""
-- ;;
-- esac
-- install_prog="$install_prog$arg"
--
-- # We need to accept at least all the BSD install flags.
-- dest=
-- files=
-- opts=
-- prev=
-- install_type=
-- isdir=no
-- stripme=
-- for arg
-- do
-- if test -n "$dest"; then
-- files="$files $dest"
-- dest="$arg"
-- continue
-- fi
--
-- case $arg in
-- -d) isdir=yes ;;
-- -f) prev="-f" ;;
-- -g) prev="-g" ;;
-- -m) prev="-m" ;;
-- -o) prev="-o" ;;
-- -s)
-- stripme=" -s"
-- continue
-- ;;
-- -*) ;;
--
-- *)
-- # If the previous option needed an argument, then skip it.
-- if test -n "$prev"; then
-- prev=
-- else
-- dest="$arg"
-- continue
-- fi
-- ;;
-- esac
--
-- # Aesthetically quote the argument.
-- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case $arg in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
-- arg="\"$arg\""
-- ;;
-- esac
-- install_prog="$install_prog $arg"
-- done
--
-- if test -z "$install_prog"; then
-- $echo "$modename: you must specify an install program" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
--
-- if test -n "$prev"; then
-- $echo "$modename: the \`$prev' option requires an argument" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
--
-- if test -z "$files"; then
-- if test -z "$dest"; then
-- $echo "$modename: no file or destination specified" 1>&2
-- else
-- $echo "$modename: you must specify a destination" 1>&2
-- fi
-- $echo "$help" 1>&2
-- exit 1
-- fi
--
-- # Strip any trailing slash from the destination.
-- dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
--
-- # Check to see that the destination is a directory.
-- test -d "$dest" && isdir=yes
-- if test "$isdir" = yes; then
-- destdir="$dest"
-- destname=
-- else
-- destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
-- test "X$destdir" = "X$dest" && destdir=.
-- destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
--
-- # Not a directory, so check to see that there is only one file specified.
-- set dummy $files
-- if test $# -gt 2; then
-- $echo "$modename: \`$dest' is not a directory" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
-- fi
-- case $destdir in
-- [\\/]* | [A-Za-z]:[\\/]*) ;;
-- *)
-- for file in $files; do
-- case $file in
-- *.lo) ;;
-- *)
-- $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- ;;
-- esac
-- done
-+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
- ;;
- esac
-+ exit $EXIT_SUCCESS
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"sizeof long long int\"" >&5
+-$as_echo_n "checking \"sizeof long long int\"... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sizeof long long int" >&5
++$as_echo_n "checking sizeof long long int... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+@@ -6321,13 +6522,19 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++
+ #include <stdio.h>
+-main()
++
++int
++main ()
+ {
++
+ if (sizeof(long long int) == 2*sizeof(long)) return 0;
+ return 1;
+-}
+
++ ;
++ return 0;
+}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+ $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
+@@ -6833,8 +7040,6 @@
+ # To get around this problem, check for both libraries together
+ # if -lsocket doesn't work by itself.
+ #--------------------------------------------------------------------
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockets" >&5
+-$as_echo_n "checking for sockets... " >&6; }
+ tcl_checkBoth=0
+ ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+ if test "x$ac_cv_func_connect" = xyes; then :
+@@ -7046,8 +7251,8 @@
+
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking For network code for nsocket.c" >&5
+-$as_echo_n "checking For network code for nsocket.c... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for network code for nsocket.c" >&5
++$as_echo_n "checking for network code for nsocket.c... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+@@ -7071,7 +7276,7 @@
+ int
+ main ()
+ {
+- connect(0,(struct sockaddr *)0,0);
++connect(0,(struct sockaddr *)0,0);
+ gethostbyname("jil");
+ socket(AF_INET, SOCK_STREAM, 0);
+
+@@ -7092,10 +7297,11 @@
+ conftest$ac_exeext conftest.$ac_ext
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for listen using fcntl" >&5
+-$as_echo_n "checking check for listen using fcntl... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for listen using fcntl" >&5
++$as_echo_n "checking for listen using fcntl... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++
+ #include <stdio.h>
+ #include <fcntl.h>
-- # 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.
-- staticlibs="$staticlibs $file"
-- ;;
--
-- *.la)
-- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-- else
-- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
--
-- library_names=
-- old_library=
-- relink_command=
-- # If there is no directory component, then add one.
-- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-- esac
--
-- # Add the libdir to current_libdirs if it is the destination.
-- if test "X$destdir" = "X$libdir"; then
-- case "$current_libdirs " in
-- *" $libdir "*) ;;
-- *) current_libdirs="$current_libdirs $libdir" ;;
-- esac
-- else
-- # Note the libdir as a future libdir.
-- case "$future_libdirs " in
-- *" $libdir "*) ;;
-- *) future_libdirs="$future_libdirs $libdir" ;;
-- esac
-- fi
--
-- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
-- test "X$dir" = "X$file/" && dir=
-- dir="$dir$objdir"
--
-- if test -n "$relink_command"; then
-- $echo "$modename: warning: relinking \`$file'" 1>&2
-- $show "$relink_command"
-- if $run eval "$relink_command"; then :
-- else
-- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-- exit 1
-- fi
-- fi
--
-- # See the names of the shared library.
-- set dummy $library_names
-- if test -n "$2"; then
-- realname="$2"
-- shift
-- shift
--
-- srcname="$realname"
-- test -n "$relink_command" && srcname="$realname"T
--
-- # Install the shared library and build the symlinks.
-- $show "$install_prog $dir/$srcname $destdir/$realname"
-- $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
-- if test -n "$stripme" && test -n "$striplib"; then
-- $show "$striplib $destdir/$realname"
-- $run eval "$striplib $destdir/$realname" || exit $?
-- fi
--
-- if test $# -gt 0; then
-- # Delete the old symlinks, and create new ones.
-- for linkname
-- do
-- if test "$linkname" != "$realname"; then
-- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
-- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
-- fi
-- done
-- fi
--
-- # Do each command in the postinstall commands.
-- lib="$destdir/$realname"
-- eval cmds=\"$postinstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-- fi
--
-- # Install the pseudo-library for information purposes.
-- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-- instname="$dir/$name"i
-- $show "$install_prog $instname $destdir/$name"
-- $run eval "$install_prog $instname $destdir/$name" || exit $?
--
-- # Maybe install the static library, too.
-- test -n "$old_library" && staticlibs="$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
-- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-- destfile="$destdir/$destfile"
-- fi
--
-- # Deduce the name of the destination old-style object file.
-- case $destfile in
-- *.lo)
-- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
-- ;;
-- *.$objext)
-- staticdest="$destfile"
-- destfile=
-- ;;
-- *)
-- $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- ;;
-- esac
--
-- # Install the libtool object if requested.
-- if test -n "$destfile"; then
-- $show "$install_prog $file $destfile"
-- $run eval "$install_prog $file $destfile" || exit $?
-- fi
--
-- # Install the old object if enabled.
-- if test "$build_old_libs" = yes; then
-- # Deduce the name of the old-style object file.
-- staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+@@ -7171,7 +7377,7 @@
+ $EGREP "LITTLE_ENDIAN" >/dev/null 2>&1; then :
+ gcl_ok=yes
+ else
+- gcl_ok=noo
++ gcl_ok=no
+ fi
+ rm -f conftest*
+
+@@ -7215,17 +7421,17 @@
+ esac
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for SV_ONSTACK" >&5
+-$as_echo_n "checking check for SV_ONSTACK... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SV_ONSTACK" >&5
++$as_echo_n "checking for SV_ONSTACK... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++
+ #include <signal.h>
+-int joe=SV_ONSTACK;
+
+ int
+ main ()
+ {
-
-- $show "$install_prog $staticobj $staticdest"
-- $run eval "$install_prog \$staticobj \$staticdest" || exit $?
-- fi
-- exit 0
-- ;;
++return SV_ONSTACK;
+ ;
+ return 0;
+ }
+@@ -7242,17 +7448,17 @@
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for SIGSYS" >&5
+-$as_echo_n "checking check for SIGSYS... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGSYS" >&5
++$as_echo_n "checking for SIGSYS... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++
+ #include <signal.h>
+-int joe=SIGSYS;
+
+ int
+ main ()
+ {
-
-- *)
-- # Figure out destination file name, if it wasn't already specified.
-- if test -n "$destname"; then
-- destfile="$destdir/$destname"
-- else
-- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-- destfile="$destdir/$destfile"
-- fi
++return SIGSYS;
+ ;
+ return 0;
+ }
+@@ -7270,17 +7476,17 @@
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for SIGEMT" >&5
+-$as_echo_n "checking check for SIGEMT... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGEMT" >&5
++$as_echo_n "checking for SIGEMT... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++
+ #include <signal.h>
+-int joe=SIGEMT;
+
+ int
+ main ()
+ {
-
-- # Do a test to see if this is really a libtool program.
-- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- notinst_deplibs=
-- relink_command=
++return SIGEMT;
+ ;
+ return 0;
+ }
+@@ -7325,11 +7531,12 @@
+
+ done
+
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
+-$as_echo_n "checking for sigcontext...... " >&6; }
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext" >&5
++$as_echo_n "checking for sigcontext... " >&6; }
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <signal.h>
++
++ #include <signal.h>
+
+ int
+ main ()
+@@ -7357,11 +7564,12 @@
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test "$sigcontext_works" = 0 ; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
+-$as_echo_n "checking for sigcontext...... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext" >&5
++$as_echo_n "checking for sigcontext... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <signal.h>
++
++ #include <signal.h>
+ #ifdef HAVE_ASM_SIGCONTEXT_H
+ #include <asm/sigcontext.h>
+ #endif
+@@ -7540,26 +7748,41 @@
+
+ if test "$enable_tcltk" = "yes" ; then
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tcl/tk" >&5
+-$as_echo_n "checking for tcl/tk... " >&6; }
-
-- # If there is no directory component, then add one.
-- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-- esac
-
-- # Check the variables that should have been set.
-- if test -z "$notinst_deplibs"; then
-- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
-- exit 1
-- fi
+-if test -d "${TCL_CONFIG_PREFIX}" ; then true ; else
+-rm -f conftest.tcl
+-cat >> conftest.tcl <<EOF
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5
++$as_echo_n "checking for main in -lieee... " >&6; }
++if ${ac_cv_lib_ieee_main+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lieee $LIBS"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
+
+-set dir [set tcl_library]
+-if { [file exists [file join [set dir] tclConfig.sh]] } {
+- puts [set dir]
+- exit
+- }
+-set dir [file dirname [set tcl_library]]
+-if { [file exists [file join [set dir] tclConfig.sh]] } {
+- puts [set dir]
+- }
+
+-EOF
+-#cp conftest.tcl foo.tcl
++int
++main ()
++{
++return main ();
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++ ac_cv_lib_ieee_main=yes
++else
++ ac_cv_lib_ieee_main=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5
++$as_echo "$ac_cv_lib_ieee_main" >&6; }
++if test "x$ac_cv_lib_ieee_main" = xyes; then :
++ have_ieee=1
++else
++ have_ieee=0
++fi
+
+ # Extract the first word of "tclsh", so it can be a program name with args.
+ set dummy tclsh; ac_word=$2
+@@ -7599,7 +7822,26 @@
+ fi
+
+
+-#AC_CHECK_PROG(TCLSH,tclsh8.0,tclsh8.0,${TCLSH})
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tcl/tk" >&5
++$as_echo_n "checking for tcl/tk... " >&6; }
++
++
++if test -d "${TCL_CONFIG_PREFIX}" ; then true ; else
++rm -f conftest.tcl
++cat >> conftest.tcl <<EOF
++
++set dir [set tcl_library]
++if { [file exists [file join [set dir] tclConfig.sh]] } {
++ puts [set dir]
++ exit
++ }
++set dir [file dirname [set tcl_library]]
++if { [file exists [file join [set dir] tclConfig.sh]] } {
++ puts [set dir]
++ }
++
++EOF
++#cp conftest.tcl foo.tcl
+
+ if test "${TCLSH}" = "" ; then true ; else
+ TCL_CONFIG_PREFIX=`${TCLSH} < conftest.tcl`
+@@ -7674,42 +7916,6 @@
+
+ fi
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -llieee" >&5
+-$as_echo_n "checking for main in -llieee... " >&6; }
+-if ${ac_cv_lib_lieee_main+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-llieee $LIBS"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
-
-- finalize=yes
-- for lib in $notinst_deplibs; do
-- # Check to see that each library is installed.
-- libdir=
-- if test -f "$lib"; then
-- # If there is no directory component, then add one.
-- case $lib in
-- */* | *\\*) . $lib ;;
-- *) . ./$lib ;;
-- esac
-- fi
-- libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
-- if test -n "$libdir" && test ! -f "$libfile"; then
-- $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
-- finalize=no
-- fi
-- done
-
-- relink_command=
-- # If there is no directory component, then add one.
-- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-- esac
+-int
+-main ()
+-{
+-return main ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_lib_lieee_main=yes
+-else
+- ac_cv_lib_lieee_main=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lieee_main" >&5
+-$as_echo "$ac_cv_lib_lieee_main" >&6; }
+-if test "x$ac_cv_lib_lieee_main" = xyes; then :
+- have_ieee=1
+-else
+- have_ieee=0
+-fi
-
-- outputname=
-- if test "$fast_install" = no && test -n "$relink_command"; then
-- if test "$finalize" = yes && test -z "$run"; then
-- tmpdir="/tmp"
-- test -n "$TMPDIR" && tmpdir="$TMPDIR"
-- tmpdir="$tmpdir/libtool-$$"
-- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
-- else
-- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
-- continue
-- fi
-- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-- outputname="$tmpdir/$file"
-- # Replace the output file specification.
-- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+ if test "$have_ieee" = "0" ; then
+ TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
+ fi
+@@ -7755,14 +7961,23 @@
+
+ # the time handling for unixtime, add timezone
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alloca" >&5
+-$as_echo_n "checking alloca... " >&6; }
++# alloca
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
++$as_echo_n "checking for alloca... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ gcl_ok=no
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int main() { exit(alloca(500) != NULL ? 0 : 1);}
++
++int
++main ()
++{
++exit(alloca(500) != NULL ? 0 : 1);
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+
+@@ -7784,8 +7999,16 @@
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <alloca.h>
+- int main() { exit(alloca(500) != NULL ? 0 : 1);}
++
++ #include <alloca.h>
++
++int
++main ()
++{
++exit(alloca(500) != NULL ? 0 : 1);
++ ;
++ return 0;
++}
+ _ACEOF
+ if ac_fn_c_try_run "$LINENO"; then :
+
+@@ -7817,8 +8040,6 @@
+
+
+
+-# alloca
-
-- $show "$relink_command"
-- if $run eval "$relink_command"; then :
-- else
-- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-- ${rm}r "$tmpdir"
-- continue
-- fi
-- file="$outputname"
+ # dlopen etc
+ # idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
+ # then dlload("foo.o") a lisp file can refer to things in libX.so
+@@ -7842,8 +8063,8 @@
+
+ # redhat/cygnus released for some reason a buggy version of gcc,
+ # which no one else released. Catch that here.
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for buggy gcc version from redhat" >&5
+-$as_echo_n "checking Checking for buggy gcc version from redhat... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy gcc version from redhat" >&5
++$as_echo_n "checking for buggy gcc version from redhat... " >&6; }
+ if 2>&1 $CC -v | fgrep "gcc version 2.96" > /dev/null
+ then
+ BROKEN_O4_OPT=1
+@@ -7883,7 +8104,7 @@
+
+ ac_config_files="$ac_config_files makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp"
+
+-cat >confcache <<\_ACEOF
++ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+ # scripts and configure runs, see configure's option --config-cache.
+--- ./install.sh.orig 1999-12-06 15:43:54.000000000 -0700
++++ ./install.sh 2012-01-09 20:36:31.000000000 -0700
+@@ -1,19 +1,38 @@
+-#! /bin/sh
+-#
++#!/bin/sh
+ # install - install a program, script, or datafile
+-# This comes from X11R5 (mit/util/scripts/install.sh).
++
++scriptversion=2009-04-28.21; # UTC
++
++# This originates from X11R5 (mit/util/scripts/install.sh), which was
++# later released in X11R6 (xc/config/util/install.sh) with the
++# following copyright and license.
+ #
+-# Copyright 1991 by the Massachusetts Institute of Technology
++# Copyright (C) 1994 X Consortium
+ #
+-# Permission to use, copy, modify, distribute, and sell this software and its
+-# documentation for any purpose is hereby granted without fee, provided that
+-# the above copyright notice appear in all copies and that both that
+-# copyright notice and this permission notice appear in supporting
+-# documentation, and that the name of M.I.T. not be used in advertising or
+-# publicity pertaining to distribution of the software without specific,
+-# written prior permission. M.I.T. makes no representations about the
+-# suitability of this software for any purpose. It is provided "as is"
+-# without express or implied warranty.
++# 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
+@@ -21,230 +40,481 @@
+ #
+ # 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-}"
++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.
+
+-# put in absolute paths if you don't have them in your path; or use env. 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}
+
+-mvprog="${MVPROG-mv}"
+-cpprog="${CPPROG-cp}"
+-chmodprog="${CHMODPROG-chmod}"
+-chownprog="${CHOWNPROG-chown}"
+-chgrpprog="${CHGRPPROG-chgrp}"
+-stripprog="${STRIPPROG-strip}"
+-rmprog="${RMPROG-rm}"
+-mkdirprog="${MKDIRPROG-mkdir}"
++posix_glob='?'
++initialize_posix_glob='
++ test "$posix_glob" != "?" || {
++ if (set -f) 2>/dev/null; then
++ posix_glob=
++ else
++ posix_glob=:
++ fi
++ }
++'
+
+-transformbasename=""
+-transform_arg=""
+-instcmd="$mvprog"
+-chmodcmd="$chmodprog 0755"
+-chowncmd=""
+-chgrpcmd=""
+-stripcmd=""
++posix_mkdir=
++
++# Desired mode of installed file.
++mode=0755
++
++chgrpcmd=
++chmodcmd=$chmodprog
++chowncmd=
++mvcmd=$mvprog
+ rmcmd="$rmprog -f"
+-mvcmd="$mvprog"
+-src=""
+-dst=""
+-dir_arg=""
++stripcmd=
+
+-while [ x"$1" != x ]; do
+- case $1 in
+- -c) instcmd="$cpprog"
+- shift
+- continue;;
++src=
++dst=
++dir_arg=
++dst_arg=
+
+- -d) dir_arg=true
+- shift
+- continue;;
++copy_on_change=false
++no_target_directory=
+
+- -m) chmodcmd="$chmodprog $2"
+- shift
+- shift
+- continue;;
++usage="\
++Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
++ or: $0 [OPTION]... SRCFILES... DIRECTORY
++ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
++ or: $0 [OPTION]... -d DIRECTORIES...
+
+- -o) chowncmd="$chownprog $2"
+- shift
+- shift
+- continue;;
++In the 1st form, copy SRCFILE to DSTFILE.
++In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
++In the 4th, create DIRECTORIES.
+
+- -g) chgrpcmd="$chgrpprog $2"
+- shift
+- shift
+- continue;;
++Options:
++ --help display this help and exit.
++ --version display version info and exit.
+
+- -s) stripcmd="$stripprog"
+- shift
+- continue;;
++ -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.
+
+- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+- shift
+- continue;;
++Environment variables override the default commands:
++ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
++ RMPROG STRIPPROG
++"
+
+- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+- shift
+- continue;;
++while test $# -ne 0; do
++ case $1 in
++ -c) ;;
+
+- *) if [ x"$src" = x ]
+- then
+- src=$1
- else
-- $echo "$modename: warning: cannot relink \`$file'" 1>&2
+- # this colon is to work around a 386BSD /bin/sh bug
+- :
+- dst=$1
- fi
-- else
-- # Install the binary that we compiled earlier.
-- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
-- fi
+- shift
+- continue;;
+- esac
++ -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
++ 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 [ x"$src" = x ]
+-then
+- echo "install: no input file specified"
+- exit 1
+-else
+- true
++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
++ done
+ fi
+
+-if [ x"$dir_arg" != x ]; then
+- dst=$src
+- src=""
+-
+- if [ -d $dst ]; then
+- instcmd=:
+- else
+- instcmd=mkdir
- fi
+-else
-
--
-- # remove .exe since cygwin /usr/bin/install will append another
-- # one anyways
-- case $install_prog,$host in
-- */usr/bin/install*,*cygwin*)
-- case $file:$destfile in
-- *.exe:*.exe)
-- # this is ok
-- ;;
-- *.exe:*)
-- destfile=$destfile.exe
-- ;;
-- *:*.exe)
-- destfile=`echo $destfile | sed -e 's,.exe$,,'`
-- ;;
-- esac
-- ;;
-- esac
--
-- $show "$install_prog$stripme $file $destfile"
-- $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
-- test -n "$outputname" && ${rm}r "$tmpdir"
-- ;;
-- esac
-- done
--
-- for file in $staticlibs; do
-- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
--
-- # Set up the ranlib parameters.
-- oldlib="$destdir/$name"
--
-- $show "$install_prog $file $oldlib"
-- $run eval "$install_prog \$file \$oldlib" || exit $?
--
-- if test -n "$stripme" && test -n "$striplib"; then
-- $show "$old_striplib $oldlib"
-- $run eval "$old_striplib $oldlib" || exit $?
-- fi
--
-- # Do each command in the postinstall commands.
-- eval cmds=\"$old_postinstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || exit $?
-- done
-- IFS="$save_ifs"
-- done
--
-- if test -n "$future_libdirs"; then
-- $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
-- fi
--
-- if test -n "$current_libdirs"; then
-- # Maybe just do a dry run.
-- test -n "$run" && current_libdirs=" -n$current_libdirs"
-- exec_cmd='$SHELL $0 --finish$current_libdirs'
-- else
-- exit 0
-- fi
-- ;;
--
-- # libtool finish mode
-- finish)
-- modename="$modename: finish"
-- libdirs="$nonopt"
-- admincmds=
--
-- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-- for dir
-- do
-- libdirs="$libdirs $dir"
-- done
--
-- for libdir in $libdirs; do
-- if test -n "$finish_cmds"; then
-- # Do each command in the finish commands.
-- eval cmds=\"$finish_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd" || admincmds="$admincmds
-- $cmd"
-- done
-- IFS="$save_ifs"
-- fi
-- if test -n "$finish_eval"; then
-- # Do the single finish_eval.
-- eval cmds=\"$finish_eval\"
-- $run eval "$cmds" || admincmds="$admincmds
-- $cmds"
+-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+-# might cause directories to be created, which would be especially bad
+-# if $src (and thus $dsttmp) contains '*'.
++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 [ -f $src -o -d $src ]
+- then
+- true
+- else
+- echo "install: $src does not exist"
+- exit 1
- fi
-- done
-- fi
--
-- # Exit here if they wanted silent mode.
-- test "$show" = ":" && exit 0
--
-- 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"
-- echo "more information, such as the ld(1) and ld.so(8) manual pages."
-- echo "----------------------------------------------------------------------"
-- exit 0
-- ;;
--
-- # libtool execute mode
-- execute)
-- modename="$modename: execute"
--
-- # The first argument is the command name.
-- cmd="$nonopt"
-- if test -z "$cmd"; then
-- $echo "$modename: you must specify a COMMAND" 1>&2
-- $echo "$help"
-- exit 1
-- fi
--
-- # Handle -dlopen flags immediately.
-- for file in $execute_dlfiles; do
-- if test ! -f "$file"; then
-- $echo "$modename: \`$file' is not a file" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
--
-- dir=
-- case $file in
-- *.la)
-- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+-
+- if [ x"$dst" = x ]
+- then
+- echo "install: no destination specified"
+- exit 1
- else
-- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-- $echo "$help" 1>&2
-- exit 1
+- true
- fi
--
-- # Read the libtool library.
-- dlname=
-- library_names=
--
-- # If there is no directory component, then add one.
-- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-- esac
--
-- # Skip this library if it cannot be dlopened.
-- if test -z "$dlname"; then
-- # Warn if it was a shared library.
-- test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
-- continue
++if test -z "$dir_arg"; then
++ trap '(exit $?); exit' 1 2 13 15
+
+-# If destination is a directory, append the input filename; if your system
+-# does not like double slashes in filenames, you may need to add some logic
++ # 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;;
+
+- if [ -d $dst ]
+- then
+- dst="$dst"/`basename $src`
+- else
+- true
- fi
--
-- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-- test "X$dir" = "X$file" && dir=.
--
-- if test -f "$dir/$objdir/$dlname"; then
-- dir="$dir/$objdir"
++ *[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
+
+-## this sed command emulates the dirname command
+-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
++for src
++do
++ # Protect names starting with `-'.
++ case $src in
++ -*) src=./$src;;
++ esac
+
+-# Make sure that the destination directory exists.
+-# this part is taken from Noah Friedman's mkinstalldirs script
++ if test -n "$dir_arg"; then
++ dst=$src
++ dstdir=$dst
++ test -d "$dstdir"
++ dstdir_status=$?
++ else
+
+-# Skip lots of stat calls in the usual case.
+-if [ ! -d "$dstdir" ]; then
+-defaultIFS='
+-'
+-IFS="${IFS-${defaultIFS}}"
++ # 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
+
+-oIFS="${IFS}"
+-# Some sh's can't handle IFS=/ for some reason.
+-IFS='%'
+-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+-IFS="${oIFS}"
++ if test -z "$dst_arg"; then
++ echo "$0: no destination specified." >&2
++ exit 1
++ fi
+
+-pathcomp=''
++ dst=$dst_arg
++ # Protect names starting with `-'.
++ case $dst in
++ -*) dst=./$dst;;
++ esac
+
+-while [ $# -ne 0 ] ; do
+- pathcomp="${pathcomp}${1}"
+- shift
++ # 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'
++ `
+
+- if [ ! -d "${pathcomp}" ] ;
+- then
+- $mkdirprog "${pathcomp}"
++ 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
+- true
++ mkdir_mode=
+ fi
+
+- pathcomp="${pathcomp}/"
+-done
+-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 [ x"$dir_arg" != x ]
+-then
+- $doit $instcmd $dst &&
++ 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-writeable 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 [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+-else
++ if
++ $posix_mkdir && (
++ umask $mkdir_umask &&
++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
++ )
++ then :
++ else
+
+-# If we're going to rename the final executable, determine the name now.
++ # 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.
+
+- if [ x"$transformarg" = x ]
+- then
+- dstfile=`basename $dst`
- else
-- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
-- exit 1
+- dstfile=`basename $dst $transformbasename |
+- sed $transformarg`$transformbasename
- fi
-- ;;
--
-- *.lo)
-- # Just add the directory containing the .lo file.
-- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-- test "X$dir" = "X$file" && dir=.
-- ;;
--
-- *)
-- $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
-- 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"
++ case $dstdir in
++ /*) prefix='/';;
++ -*) prefix='./';;
++ *) prefix='';;
++ esac
+
+-# don't allow the sed command to completely eliminate the filename
++ eval "$initialize_posix_glob"
+
+- if [ x"$dstfile" = x ]
+- then
+- dstfile=`basename $dst`
++ oIFS=$IFS
++ IFS=/
++ $posix_glob set -f
++ set fnord $dstdir
++ shift
++ $posix_glob set +f
++ IFS=$oIFS
++
++ prefixes=
++
++ for d
++ do
++ test -z "$d" && continue
++
++ prefix=$prefix$d
++ if test -d "$prefix"; then
++ prefixes=
+ else
+- true
++ 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
+
+-# Make a temp file name in the proper directory.
++ 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
+
+- dsttmp=$dstdir/#inst.$$#
++ 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
+
+-# Move or copy the file name to the temp name
++ # Make a couple of temp file names in the proper directory.
++ dsttmp=$dstdir/_inst.$$_
++ rmtmp=$dstdir/_rm.$$_
+
+- $doit $instcmd $src $dsttmp &&
++ # Trap to clean up those temp files at exit.
++ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+- trap "rm -f ${dsttmp}" 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
++ # 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 any of these fail, we abort the whole thing. If we want to
+-# ignore errors from any of these, just make sure not to ignore
+-# errors from the above "$doit $instcmd $src $dsttmp" command.
++ # If -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` &&
+
+- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
++ 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 &&
+
+-# Now rename the file to the real destination.
++ 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 ||
+
+- $doit $rmcmd -f $dstdir/$dstfile &&
+- $doit $mvcmd $dsttmp $dstdir/$dstfile
++ # 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
++ }
++ } &&
+
+-fi &&
++ # Now rename the file to the real destination.
++ $doit $mvcmd "$dsttmp" "$dst"
++ }
++ fi || exit 1
+
++ trap '' 0
++ fi
++done
+
+-exit 0
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "scriptversion="
++# time-stamp-format: "%:y-%02m-%02d.%02H"
++# time-stamp-time-zone: "UTC"
++# time-stamp-end: "; # UTC"
++# End:
+--- ./info/texinfo.tex.orig 2002-10-26 09:14:15.000000000 -0600
++++ ./info/texinfo.tex 2012-01-09 20:36:31.000000000 -0700
+@@ -3,15 +3,16 @@
+ % Load plain if necessary, i.e., if running under initex.
+ \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+ %
+-\def\texinfoversion{1999-09-25.10}
++\def\texinfoversion{2008-04-18.10}
+ %
+-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
+-% Free Software Foundation, Inc.
++% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
++% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
++% 2007, 2008 Free Software Foundation, Inc.
+ %
+-% This texinfo.tex file is free software; you can redistribute it and/or
++% 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 2, or (at
+-% your option) any later version.
++% 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
+@@ -19,25 +20,19 @@
+ % General Public License for more details.
+ %
+ % You should have received a copy of the GNU General Public License
+-% along with this texinfo.tex file; see the file COPYING. If not, write
+-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+-% Boston, MA 02111-1307, USA.
++% along with this program. If not, see <http://www.gnu.org/licenses/>.
+ %
+-% In other words, you are welcome to use, share and improve this program.
+-% You are forbidden to forbid anyone else to use, share and improve
+-% what you give them. Help stamp out software-hoarding!
++% As a special exception, when this file is read by TeX when processing
++% a Texinfo source document, you may use the result without
++% restriction. (This has been our intent since Texinfo was invented.)
+ %
+ % Please try the latest version of texinfo.tex before submitting bug
+ % reports; you can get the latest version from:
+-% ftp://ftp.gnu.org/gnu/texinfo.tex
+-% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
+-% ftp://texinfo.org/tex/texinfo.tex
+-% ftp://us.ctan.org/macros/texinfo/texinfo.tex
+-% (and all CTAN mirrors, finger ctan at us.ctan.org for a list).
+-% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
+-% The texinfo.tex in any given Texinfo distribution could well be out
++% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
++% ftp://tug.org/tex/texinfo.tex
++% (and all CTAN mirrors, see http://www.ctan.org).
++% The texinfo.tex in any given distribution could well be out
+ % of date, so if that's what you're using, please check.
+-% Texinfo has a small home page at http://texinfo.org/.
+ %
+ % 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
+@@ -50,13 +45,17 @@
+ % texindex foo.??
+ % tex foo.texi
+ % tex foo.texi
+-% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
+-% The extra runs of TeX get the cross-reference information correct.
++% 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. You can get
+-% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
++% 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]:}
+
+@@ -66,7 +65,14 @@
+ \everyjob{\message{[Texinfo version \texinfoversion]}%
+ \catcode`+=\active \catcode`\_=\active}
+
+-% Save some parts of plain tex whose names we will redefine.
++
++\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
+@@ -76,23 +82,36 @@
+ \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\ptexrbrace=\}
++\let\ptexslash=\/
+ \let\ptexstar=\*
+ \let\ptext=\t
-
-- # Check if any of the arguments is a wrapper script.
-- args=
-- for file
-- do
-- case $file in
-- -*) ;;
-- *)
-- # Do a test to see if this is really a libtool program.
-- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- # If there is no directory component, then add one.
-- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-- esac
+-% We never want plain's outer \+ definition in Texinfo.
+-% For @tex, we can use \tabalign.
+-\let\+ = \relax
-
-- # Transform arg to wrapped name.
-- file="$progdir/$program"
-- fi
-- ;;
-- esac
-- # Quote arguments (to preserve shell metacharacters).
-- file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
-- args="$args \"$file\""
-- done
+-\message{Basics,}
+-\chardef\other=12
++\let\ptextop=\top
+
+ % 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
+@@ -131,44 +150,119 @@
+ \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+ \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+ \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+-\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
+ \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+-\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{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\colonChar = `\:
++\chardef\commaChar = `\,
++\chardef\dashChar = `\-
++\chardef\dotChar = `\.
++\chardef\exclamChar= `\!
++\chardef\lquoteChar= `\`
++\chardef\questChar = `\?
++\chardef\rquoteChar= `\'
++\chardef\semiChar = `\;
++\chardef\underChar = `\_
+
+ % Ignore a token.
+ %
+ \def\gobble#1{}
+
+-\hyphenation{ap-pen-dix}
+-\hyphenation{mini-buf-fer mini-buf-fers}
+-\hyphenation{eshell}
+-\hyphenation{white-space}
++% 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\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}
++
++% @| 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).
++%
++\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
++ }%
++ }%
++}
++
+ % 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.
++% 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}%
+-\ifx\eTeXversion\undefined
+-\def\loggingall{\tracingcommands2 \tracingstats2
+- \tracingpages1 \tracingoutput1 \tracinglostchars1
+- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
+- \showboxbreadth\maxdimen\showboxdepth\maxdimen
+-}%
+-\else
+-\def\loggingall{\tracingcommands3 \tracingstats2
+- \tracingpages1 \tracingoutput1 \tracinglostchars1
+- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
+- \tracingscantokens1 \tracingassigns1 \tracingifs1
+- \tracinggroups1 \tracingnesting2
+- \showboxbreadth\maxdimen\showboxdepth\maxdimen
++\def\loggingall{%
++ \tracingstats2
++ \tracingpages1
++ \tracinglostchars2 % 2 gives us more in etex
++ \tracingparagraphs1
++ \tracingoutput1
++ \tracingmacros2
++ \tracingrestores1
++ \showboxbreadth\maxdimen \showboxdepth\maxdimen
++ \ifx\eTeXversion\undefined\else % etex gives us more logging
++ \tracingscantokens1
++ \tracingifs1
++ \tracinggroups1
++ \tracingnesting2
++ \tracingassigns1
++ \fi
++ \tracingcommands3 % 3 gives us more in etex
++ \errorcontextlines16
+ }%
+-\fi
++
++% 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}
+
+ % For @cropmarks command.
+ % Do @cropmarks to get crop marks.
+@@ -184,6 +278,50 @@
+ \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}}
+@@ -201,7 +339,9 @@
+ %
+ % 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}%
+ %
+ {%
+@@ -209,11 +349,18 @@
+ % take effect in \write's, yet the group defined by the \vbox ends
+ % before the \shipout runs.
+ %
+- \escapechar = `\\ % use backslash in output files.
+ \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.
++ % 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
+@@ -237,14 +384,12 @@
+ \pagebody{#1}%
+ \ifdim\ht\footlinebox > 0pt
+ % Only leave this space if the footline is nonempty.
+- % (We lessened \vsize for it in \oddfootingxxx.)
++ % (We lessened \vsize for it in \oddfootingyyy.)
+ % The \baselineskip=24pt in plain's \makefootline has no effect.
+- \vskip 2\baselineskip
++ \vskip 24pt
+ \unvbox\footlinebox
+ \fi
+ %
+- \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
+- %
+ \ifcropmarks
+ \egroup % end of \vbox\bgroup
+ \hfil\egroup % end of (centering) \line\bgroup
+@@ -262,7 +407,7 @@
+ \egroup % \vbox from first cropmarks clause
+ \fi
+ }% end of \shipout\vbox
+- }% end of group with \turnoffactive
++ }% end of group with \indexdummies
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+ }
+@@ -275,7 +420,7 @@
+ % 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 \unvbox#1
++\dimen@=\dp#1\relax \unvbox#1\relax
+ \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+ \ifr at ggedbottom \kern-\dimen@ \vfil \fi}
+ }
+@@ -295,143 +440,161 @@
+ % the input line (except we remove a trailing comment). #1 should be a
+ % macro which expects an ordinary undelimited TeX argument.
+ %
+-\def\parsearg#1{%
+- \let\next = #1%
++\def\parsearg{\parseargusing{}}
++\def\parseargusing#1#2{%
++ \def\argtorun{#2}%
+ \begingroup
+ \obeylines
+- \futurelet\temp\parseargx
+-}
-
-- if test -z "$run"; then
-- if test -n "$shlibpath_var"; then
-- # Export the shlibpath_var.
-- eval "export $shlibpath_var"
-- fi
+-% If the next token is an obeyed space (from an @example environment or
+-% the like), remove it and recurse. Otherwise, we're done.
+-\def\parseargx{%
+- % \obeyedspace is defined far below, after the definition of \sepspaces.
+- \ifx\obeyedspace\temp
+- \expandafter\parseargdiscardspace
+- \else
+- \expandafter\parseargline
+- \fi
++ \spaceisspace
++ #1%
++ \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+ }
+
+-% Remove a single space (as the delimiter token to the macro call).
+-{\obeyspaces %
+- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-- # Restore saved enviroment variables
-- if test "${save_LC_ALL+set}" = set; then
-- LC_ALL="$save_LC_ALL"; export LC_ALL
-- fi
-- if test "${save_LANG+set}" = set; then
-- LANG="$save_LANG"; export LANG
-- fi
-+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-+ func_mode_link ${1+"$@"}
+ {\obeylines %
+ \gdef\parseargline#1^^M{%
+ \endgroup % End of the group started in \parsearg.
+- %
+- % First remove any @c comment, then any @comment.
+- % Result of each macro is put in \toks0.
+- \argremovec #1\c\relax %
+- \expandafter\argremovecomment \the\toks0 \comment\relax %
+- %
+- % Call the caller's macro, saved as \next in \parsearg.
+- \expandafter\next\expandafter{\the\toks0}%
++ \argremovecomment #1\comment\ArgTerm%
+ }%
+ }
-- # 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 0
-- fi
-- ;;
+-% Since all \c{,omment} does is throw away the argument, we can let TeX
+-% do that for us. The \relax here is matched by the \relax in the call
+-% in \parseargline; it could be more or less anything, its purpose is
+-% just to delimit the argument to the \c.
+-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
+-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
++% 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}
-- # libtool clean and uninstall mode
-- clean | uninstall)
-- modename="$modename: $mode"
-- rm="$nonopt"
-+# func_mode_uninstall arg...
-+func_mode_uninstall ()
+-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
+-% @end itemize @c foo
+-% will have two active spaces as part of the argument with the
+-% `itemize'. Here we remove all active spaces from #1, and assign the
+-% result to \toks0.
++% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+ %
+-% This loses if there are any *other* active characters besides spaces
+-% in the argument -- _ ^ +, for example -- since they get expanded.
+-% Fortunately, Texinfo does not define any such commands. (If it ever
+-% does, the catcode of the characters in questionwill have to be changed
+-% here.) But this means we cannot call \removeactivespaces as part of
+-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
+-% that \parsearg gets might well have any character at all in it.
++% \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\removeactivespaces#1{%
+- \begingroup
+- \ignoreactivespaces
+- \edef\temp{#1}%
+- \global\toks0 = \expandafter{\temp}%
+- \endgroup
++\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
+ }
+
+-% Change the active space to expand to nothing.
++% 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.
+ %
+-\begingroup
++% 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:
+{
-+ $opt_debug
-+ RM="$nonopt"
- files=
- rmforce=
- exit_status=0
-@@ -5093,49 +9435,47 @@
- for arg
- do
- case $arg in
-- -f) rm="$rm $arg"; rmforce=yes ;;
-- -*) rm="$rm $arg" ;;
-- *) files="$files $arg" ;;
-+ -f) func_append RM " $arg"; rmforce=yes ;;
-+ -*) func_append RM " $arg" ;;
-+ *) func_append files " $arg" ;;
- esac
- done
+ \obeyspaces
+- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
+-\endgroup
++ \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}
+
+-%% These are used to keep @begin/@end levels from running away
+-%% Call \inENV within environments (after a \begingroup)
+-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
+-\def\ENVcheck{%
+-\ifENV\errmessage{Still within an environment; press RETURN to continue}
+-\endgroup\fi} % This is not perfect, but it should reduce lossage
++% 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.)
-- if test -z "$rm"; then
-- $echo "$modename: you must specify an RM program" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
-+ test -z "$RM" && \
-+ func_fatal_help "you must specify an RM program"
+-% @begin foo is the same as @foo, for now.
+-\newhelp\EMsimple{Press RETURN to continue.}
- rmdirs=
+-\outer\def\begin{\parsearg\beginxxx}
++% At run-time, environments start with this:
++\def\startenvironment#1{\begingroup\def\thisenv{#1}}
++% initialize
++\let\thisenv\empty
- for file in $files; do
-- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$dir" = "X$file"; then
-- dir=.
-- objdir="$objdir"
-+ func_dirname "$file" "" "."
-+ dir="$func_dirname_result"
-+ if test "X$dir" = X.; then
-+ odir="$objdir"
- else
-- objdir="$dir/$objdir"
-+ odir="$dir/$objdir"
- fi
-- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-- test $mode = uninstall && objdir="$dir"
-+ func_basename "$file"
-+ name="$func_basename_result"
-+ test "$opt_mode" = uninstall && odir="$dir"
+-\def\beginxxx #1{%
+-\expandafter\ifx\csname #1\endcsname\relax
+-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
+-\csname #1\endcsname\fi}
++% ... 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}}
-- # Remember objdir for removal later, being careful to avoid duplicates
-- if test $mode = clean; then
-+ # Remember odir for removal later, being careful to avoid duplicates
-+ if test "$opt_mode" = clean; then
- case " $rmdirs " in
-- *" $objdir "*) ;;
-- *) rmdirs="$rmdirs $objdir" ;;
-+ *" $odir "*) ;;
-+ *) func_append rmdirs " $odir" ;;
- esac
- fi
+-% @end foo executes the definition of \Efoo.
+-%
+-\def\end{\parsearg\endxxx}
+-\def\endxxx #1{%
+- \removeactivespaces{#1}%
+- \edef\endthing{\the\toks0}%
+- %
+- \expandafter\ifx\csname E\endthing\endcsname\relax
+- \expandafter\ifx\csname \endthing\endcsname\relax
+- % There's no \foo, i.e., no ``environment'' foo.
+- \errhelp = \EMsimple
+- \errmessage{Undefined command `@end \endthing'}%
+- \else
+- \unmatchedenderror\endthing
+- \fi
++% Check whether we're in the right environment:
++\def\checkenv#1{%
++ \def\temp{#1}%
++ \ifx\thisenv\temp
+ \else
+- % Everything's ok; the right environment has been started.
+- \csname E\endthing\endcsname
++ \badenverr
+ \fi
+ }
- # Don't error if the file doesn't exist and rm -f was used.
-- if (test -L "$file") >/dev/null 2>&1 \
-- || (test -h "$file") >/dev/null 2>&1 \
-- || test -f "$file"; then
-- :
-+ if { test -L "$file"; } >/dev/null 2>&1 ||
-+ { test -h "$file"; } >/dev/null 2>&1 ||
-+ test -f "$file"; then
-+ :
- elif test -d "$file"; then
-- exit_status=1
-+ exit_status=1
- continue
- elif test "$rmforce" = yes; then
-- continue
-+ continue
- fi
+-% There is an environment #1, but it hasn't been started. Give an error.
+-%
+-\def\unmatchedenderror#1{%
++% Environment mismatch, #1 expected:
++\def\badenverr{%
+ \errhelp = \EMsimple
+- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
++ \errmessage{This command can appear only \inenvironment\temp,
++ not \inenvironment\thisenv}%
++}
++\def\inenvironment#1{%
++ \ifx#1\empty
++ out of any environment%
++ \else
++ in environment \expandafter\string#1%
++ \fi
+ }
- rmfiles="$file"
-@@ -5143,312 +9483,130 @@
- case $name in
- *.la)
- # Possibly a libtool archive, so verify it.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- . $dir/$name
-+ if func_lalib_p "$file"; then
-+ func_source $dir/$name
+-% Define the control sequence \E#1 to give an unmatched @end error.
++% @end foo executes the definition of \Efoo.
++% But first, it executes a specialized version of \checkenv
+ %
+-\def\defineunmatchedend#1{%
+- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
++\parseargdef\end{%
++ \if 1\csname iscond.#1\endcsname
++ \else
++ % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
++ \expandafter\checkenv\csname#1\endcsname
++ \csname E#1\endcsname
++ \endgroup
++ \fi
+ }
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
-- rmfiles="$rmfiles $objdir/$n"
-+ func_append rmfiles " $odir/$n"
- done
-- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-- test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
++\newhelp\EMsimple{Press RETURN to continue.}
-- if test $mode = uninstall; then
-+ case "$opt_mode" in
-+ clean)
-+ case " $library_names " in
-+ *" $dlname "*) ;;
-+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
-+ esac
-+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
-+ ;;
-+ uninstall)
- if test -n "$library_names"; then
- # Do each command in the postuninstall commands.
-- eval cmds=\"$postuninstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd"
-- if test $? != 0 && test "$rmforce" != yes; then
-- exit_status=1
-- fi
-- done
-- IFS="$save_ifs"
-+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- fi
+-% Single-spacing is done by various environments (specifically, in
+-% \nonfillstart and \quotations).
+-\newskip\singlespaceskip \singlespaceskip = 12.5pt
+-\def\singlespace{%
+- % Why was this kern here? It messes up equalizing space above and below
+- % environments. --karl, 6may93
+- %{\advance \baselineskip by -\singlespaceskip
+- %\kern \baselineskip}%
+- \setleading \singlespaceskip
+-}
- if test -n "$old_library"; then
- # Do each command in the old_postuninstall commands.
-- eval cmds=\"$old_postuninstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd"
-- if test $? != 0 && test "$rmforce" != yes; then
-- exit_status=1
-- fi
-- done
-- IFS="$save_ifs"
-+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- fi
- # FIXME: should reinstall the best remaining shared library.
-- fi
-+ ;;
-+ esac
- fi
- ;;
+ %% Simple single-character @ commands
- *.lo)
- # Possibly a libtool object, so verify it.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ if func_lalib_p "$file"; then
+@@ -452,16 +615,22 @@
+ \let\{=\mylbrace
+ \let\}=\myrbrace
+ \begingroup
+- % Definitions to produce actual \{ & \} command in an index.
+- \catcode`\{ = 12 \catcode`\} = 12
++ % 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`\\ = 12
+- @gdef at lbracecmd[\{]%
+- @gdef at rbracecmd[\}]%
+- at endgroup
++ \catcode`\! = 0 \catcode`\\ = \other
++ !gdef!lbracecmd[\{]%
++ !gdef!rbracecmd[\}]%
++ !gdef!lbraceatcmd[@{]%
++ !gdef!rbraceatcmd[@}]%
++!endgroup
++
++% @comma{} to avoid , parsing problems.
++\let\comma = ,
-- # Read the .lo file
-- . $dir/$name
-+ # Read the .lo file
-+ func_source $dir/$name
+ % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+-% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.
++% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+ \let\, = \c
+ \let\dotaccent = \.
+ \def\ringaccent#1{{\accent23 #1}}
+@@ -469,22 +638,43 @@
+ \let\ubaraccent = \b
+ \let\udotaccent = \d
- # Add PIC object to the list of files to remove.
-- if test -n "$pic_object" \
-- && test "$pic_object" != none; then
-- rmfiles="$rmfiles $dir/$pic_object"
-- fi
-+ if test -n "$pic_object" &&
-+ test "$pic_object" != none; then
-+ func_append rmfiles " $dir/$pic_object"
-+ fi
+-% Other special characters: @questiondown @exclamdown
+-% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.
++% 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}}}
- # Add non-PIC object to the list of files to remove.
-- if test -n "$non_pic_object" \
-- && test "$non_pic_object" != none; then
-- rmfiles="$rmfiles $dir/$non_pic_object"
-- fi
-+ if test -n "$non_pic_object" &&
-+ test "$non_pic_object" != none; then
-+ func_append rmfiles " $dir/$non_pic_object"
-+ fi
- fi
- ;;
+ % Dotless i and dotless j, used for accents.
+ \def\imacro{i}
+ \def\jmacro{j}
+ \def\dotless#1{%
+ \def\temp{#1}%
+- \ifx\temp\imacro \ptexi
+- \else\ifx\temp\jmacro \j
++ \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
+ }
- *)
-- # Do a test to see if this is a libtool program.
-- if test $mode = clean &&
-- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- relink_command=
-- . $dir/$file
-+ 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
++% 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{\selectfonts\lllsize A}\vss}}%
++ \kern-.15em
++ \TeX
++}
++
+ % 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
+@@ -503,14 +693,32 @@
+ % @* forces a line break.
+ \def\*{\hfil\break\hbox{}\ignorespaces}
-- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-- if test "$fast_install" = yes && test -n "$relink_command"; then
-- rmfiles="$rmfiles $objdir/lt-$name"
-+ # 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
-- $show "$rm $rmfiles"
-- $run $rm $rmfiles || exit_status=1
-+ func_show_eval "$RM $rmfiles" 'exit_status=1'
- done
++% @/ allows a line break.
++\let\/=\allowbreak
++
+ % @. is an end-of-sentence period.
+-\def\.{.\spacefactor=3000 }
++\def\.{.\spacefactor=\endofsentencespacefactor\space}
- # Try to remove the ${objdir}s in the directories where we deleted files
- for dir in $rmdirs; do
- if test -d "$dir"; then
-- $show "rmdir $dir"
-- $run rmdir $dir >/dev/null 2>&1
-+ func_show_eval "rmdir $dir >/dev/null 2>&1"
- fi
- done
+ % @! is an end-of-sentence bang.
+-\def\!{!\spacefactor=3000 }
++\def\!{!\spacefactor=\endofsentencespacefactor\space}
- exit $exit_status
-- ;;
+ % @? is an end-of-sentence query.
+-\def\?{?\spacefactor=3000 }
++\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
+}
-- "")
-- $echo "$modename: you must specify a MODE" 1>&2
-- $echo "$generic_help" 1>&2
-- exit 1
-- ;;
-- esac
-+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-+ func_mode_uninstall ${1+"$@"}
-
-- if test -z "$exec_cmd"; then
-- $echo "$modename: invalid operation mode \`$mode'" 1>&2
-- $echo "$generic_help" 1>&2
-- exit 1
-- fi
--fi # test -z "$show_help"
-+test -z "$opt_mode" && {
-+ help="$generic_help"
-+ func_fatal_help "you must specify a MODE"
+ % @w prevents a word break. Without the \leavevmode, @w at the
+ % beginning of a paragraph, when TeX is still in vertical mode, would
+@@ -525,47 +733,24 @@
+ % therefore, no glue is inserted, and the space between the headline and
+ % the text is small, which looks bad.
+ %
+-\def\group{\begingroup
+- \ifnum\catcode13=\active \else
++% 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
+ %
+- % The \vtop we start below 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. (See p.82 of
+- % the TeXbook.) Thus, space below is not quite equal to space
+- % above. But it's pretty close.
+- \def\Egroup{%
+- \egroup % End the \vtop.
+- \endgroup % End the \group.
+- }%
+- %
+- \vtop\bgroup
+- % We have to put a strut on the last line in case the @group is in
+- % the midst of an example, rather than completely enclosing it.
+- % Otherwise, the interline space between the last line of the group
+- % and the first line afterwards is too small. But we can't put the
+- % strut in \Egroup, since there it would be on a line by itself.
+- % Hence this just inserts a strut at the beginning of each line.
+- \everypar = {\strut}%
+- %
+- % Since we have a strut on every line, we don't need any of TeX's
+- % normal interline spacing.
+- \offinterlineskip
+- %
+- % OK, but now we have to do something about blank
+- % lines in the input in @example-like environments, which normally
+- % just turn into \lisppar, which will insert no space now that we've
+- % turned off the interline space. Simplest is to make them be an
+- % empty paragraph.
+- \ifx\par\lisppar
+- \edef\par{\leavevmode \par}%
+- %
+- % Reset ^^M's definition to new definition of \par.
+- \obeylines
+- \fi
+- %
++ \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
+@@ -575,6 +760,32 @@
+ \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
+}
-+
-+test -z "$exec_cmd" && \
-+ func_fatal_help "invalid operation mode \`$opt_mode'"
++%
+ % TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+ % message, so this ends up printing `@group can only ...'.
+ %
+@@ -587,10 +798,8 @@
- if test -n "$exec_cmd"; then
-- eval exec $exec_cmd
-- exit 1
-+ eval exec "$exec_cmd"
-+ exit $EXIT_FAILURE
- fi
+ \newdimen\mil \mil=0.001in
--# We need to display help for each of the modes.
--case $mode in
--"") $echo \
--"Usage: $modename [OPTION]... [MODE-ARG]...
--
--Provide generalized library-building support services.
--
-- --config show all configuration variables
-- --debug enable verbose shell tracing
---n, --dry-run display commands without modifying any files
-- --features display basic configuration information and exit
-- --finish same as \`--mode=finish'
-- --help display this help message and exit
-- --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
-- --quiet same as \`--silent'
-- --silent don't print informational messages
-- --tag=TAG use configuration variables from tag TAG
-- --version print version information
--
--MODE must be one of the following:
--
-- clean remove files from the build directory
-- compile compile a source file into a libtool object
-- execute automatically set library path, then run a program
-- finish complete the installation of libtool libraries
-- install install libraries or executables
-- link create a library or an executable
-- uninstall remove libraries from an installed directory
--
--MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
--a more detailed description of MODE."
-- exit 0
-- ;;
--
--clean)
-- $echo \
--"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
--
--Remove files from the build directory.
--
--RM is the name of the program to use to delete files associated with each FILE
--(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
--to RM.
--
--If FILE is a libtool library, object or program, all the files associated
--with it are deleted. Otherwise, only FILE itself is deleted using RM."
-- ;;
--
--compile)
-- $echo \
--"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
--
--Compile a source file into a libtool library object.
--
--This mode accepts the following additional options:
--
-- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
-- -prefer-pic try to building PIC objects only
-- -prefer-non-pic try to building non-PIC objects only
-- -static always build a \`.o' file suitable for static linking
--
--COMPILE-COMMAND is a command to be used in creating a \`standard' object file
--from the given SOURCEFILE.
--
--The output file name is determined by removing the directory component from
--SOURCEFILE, then substituting the C source code suffix \`.c' with the
--library object suffix, \`.lo'."
-- ;;
--
--execute)
-- $echo \
--"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
--
--Automatically set library path, then run a program.
--
--This mode accepts the following additional options:
--
-- -dlopen FILE add the directory containing FILE to the library path
--
--This mode sets the library path environment variable according to \`-dlopen'
--flags.
--
--If any of the ARGS are libtool executable wrappers, then they are translated
--into their corresponding uninstalled binary, and any of their required library
--directories are added to the library path.
--
--Then, COMMAND is executed, with ARGS as arguments."
-- ;;
--
--finish)
-- $echo \
--"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
--
--Complete the installation of libtool libraries.
--
--Each LIBDIR is a directory that contains libtool libraries.
--
--The commands that this mode executes may require superuser privileges. Use
--the \`--dry-run' option if you just want to see what would be executed."
-- ;;
--
--install)
-- $echo \
--"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
--
--Install executables or libraries.
--
--INSTALL-COMMAND is the installation command. The first component should be
--either the \`install' or \`cp' program.
--
--The rest of the components are interpreted as arguments to that command (only
--BSD-compatible install options are recognized)."
-- ;;
--
--link)
-- $echo \
--"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
--
--Link object files or libraries together to form another library, or to
--create an executable program.
--
--LINK-COMMAND is a command using the C compiler that you would use to create
--a program from several object files.
--
--The following components of LINK-COMMAND are treated specially:
--
-- -all-static do not do any dynamic linking at all
-- -avoid-version do not add a version suffix if possible
-- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
-- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
-- -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-- -export-symbols SYMFILE
-- try to export only the symbols listed in SYMFILE
-- -export-symbols-regex REGEX
-- try to export only the symbols matching REGEX
-- -LLIBDIR search LIBDIR for required installed libraries
-- -lNAME OUTPUT-FILE requires the installed library libNAME
-- -module build a library that can dlopened
-- -no-fast-install disable the fast-install mode
-- -no-install link a not-installable executable
-- -no-undefined declare that a library does not refer to external symbols
-- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
-- -objectlist FILE Use a list of object files found in FILE to specify objects
-- -release RELEASE specify package release information
-- -rpath LIBDIR the created library will eventually be installed in LIBDIR
-- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
-- -static do not do any dynamic linking of libtool libraries
-- -version-info CURRENT[:REVISION[:AGE]]
-- specify library version info [each variable defaults to 0]
--
--All other options (arguments beginning with \`-') are ignored.
--
--Every other argument is treated as a filename. Files ending in \`.la' are
--treated as uninstalled libtool libraries, other files are standard or library
--object files.
--
--If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
--only library objects (\`.lo' files) may be specified, and \`-rpath' is
--required, except when creating a convenience library.
--
--If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
--using \`ar' and \`ranlib', or on Windows using \`lib'.
--
--If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
--is created, otherwise an executable program is created."
-- ;;
+-\def\need{\parsearg\needx}
-
--uninstall)
-- $echo \
--"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+ % Old definition--didn't work.
+-%\def\needx #1{\par %
++%\parseargdef\need{\par %
+ %% This method tries to make TeX break the page naturally
+ %% if the depth of the box does not fit.
+ %{\baselineskip=0pt%
+@@ -598,7 +807,7 @@
+ %\prevdepth=-1000pt
+ %}}
+
+-\def\needx#1{%
++\parseargdef\need{%
+ % Ensure vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+@@ -637,37 +846,11 @@
+ \fi
+ }
+
+-% @br forces paragraph break
++% @br forces paragraph break (and is undocumented).
+
+ \let\br = \par
+
+-% @dots{} output an ellipsis using the current font.
+-% We do .5em per period so that it has the same spacing in a typewriter
+-% font as three actual period characters.
+-%
+-\def\dots{%
+- \leavevmode
+- \hbox to 1.5em{%
+- \hskip 0pt plus 0.25fil minus 0.25fil
+- .\hss.\hss.%
+- \hskip 0pt plus 0.5fil minus 0.5fil
+- }%
+-}
-
--Remove libraries from an installation directory.
+-% @enddots{} is an end-of-sentence ellipsis.
+-%
+-\def\enddots{%
+- \leavevmode
+- \hbox to 2em{%
+- \hskip 0pt plus 0.25fil minus 0.25fil
+- .\hss.\hss.\hss.%
+- \hskip 0pt plus 0.5fil minus 0.5fil
+- }%
+- \spacefactor=3000
+-}
-
--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."
-- ;;
+-% @page forces the start of a new page
++% @page forces the start of a new page.
+ %
+ \def\page{\par\vfill\supereject}
+
+@@ -679,57 +862,131 @@
+ \newskip\exdentamount
+
+ % This defn is used inside fill environments such as @defun.
+-\def\exdent{\parsearg\exdentyyy}
+-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
++\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+ % This defn is used inside nofill environments such as @example.
+-\def\nofillexdent{\parsearg\nofillexdentyyy}
+-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
+-\leftline{\hskip\leftskip{\rm#1}}}}
-
--*)
-- $echo "$modename: invalid operation mode \`$mode'" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- ;;
--esac
+-% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
++\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
++ \leftline{\hskip\leftskip{\rm#1}}}}
+
+-\def\inmargin#1{%
+-\strut\vadjust{\nobreak\kern-\strutdepth
+- \vtop to \strutdepth{\baselineskip\strutdepth\vss
+- \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
++% @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'.
++%
+ \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
++}
+
+-%\hbox{{\rm#1}}\hfil\break}}
-
--echo
--$echo "Try \`$modename --help' for more information about other modes."
-+exit $exit_status
+-% @include file insert text of that file as input.
+-% Allow normal characters that we make active in the argument (a file name).
+-\def\include{\begingroup
+- \catcode`\\=12
+- \catcode`~=12
+- \catcode`^=12
+- \catcode`_=12
+- \catcode`|=12
+- \catcode`<=12
+- \catcode`>=12
+- \catcode`+=12
+- \parsearg\includezzz}
+-% Restore active chars for included file.
+-\def\includezzz#1{\endgroup\begingroup
+- % Read the included file in a group so nested @include's work.
++% @include FILE -- \input text of FILE.
++%
++\def\include{\parseargusing\filenamecatcodes\includezzz}
++\def\includezzz#1{%
++ \pushthisfilestack
+ \def\thisfile{#1}%
+- \input\thisfile
+-\endgroup}
++ {%
++ \makevalueexpandable % we want to expand any @value in FILE.
++ \turnoffactive % and allow special characters in the expansion
++ \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
++}
--exit 0
+-\def\thisfile{}
++\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}}%
++}
- # The TAGs below are defined such that we never get into a situation
- # in which we disable both kinds of libraries. Given conflicting
-@@ -5461,16 +9619,18 @@
- # 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.
+-% @center line outputs that line, centered
++\def\popthisfilestack{\errthisfilestackempty}
++\def\errthisfilestackempty{\errmessage{Internal error:
++ the stack of filenames is empty.}}
--### BEGIN LIBTOOL TAG CONFIG: disable-shared
-+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
- build_libtool_libs=no
- build_old_libs=yes
--### END LIBTOOL TAG CONFIG: disable-shared
-+# ### END LIBTOOL TAG CONFIG: disable-shared
+-\def\center{\parsearg\centerzzz}
+-\def\centerzzz #1{{\advance\hsize by -\leftskip
+-\advance\hsize by -\rightskip
+-\centerline{#1}}}
++\def\thisfile{}
++
++% @center line
++% outputs that line, centered.
++%
++\parseargdef\center{%
++ \ifhmode
++ \let\next\centerH
++ \else
++ \let\next\centerV
++ \fi
++ \next{\hfil \ignorespaces#1\unskip \hfil}%
++}
++\def\centerH#1{%
++ {%
++ \hfil\break
++ \advance\hsize by -\leftskip
++ \advance\hsize by -\rightskip
++ \line{#1}%
++ \break
++ }%
++}
++\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
--### BEGIN LIBTOOL TAG CONFIG: disable-static
-+# ### 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
-+# ### END LIBTOOL TAG CONFIG: disable-static
+ % @sp n outputs n lines of vertical space
- # Local Variables:
- # mode:shell-script
- # sh-indentation:2
- # End:
-+# vi:sw=2
+-\def\sp{\parsearg\spxxx}
+-\def\spxxx #1{\vskip #1\baselineskip}
++\parseargdef\sp{\vskip #1\baselineskip}
+
+ % @comment ...line which is ignored...
+ % @c is the same as @comment
+@@ -744,13 +1001,13 @@
+
+ % @paragraphindent NCHARS
+ % We'll use ems for NCHARS, close enough.
+-% We cannot implement @paragraphindent asis, though.
+-%
++% 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}
+ %
+-\def\paragraphindent{\parsearg\doparagraphindent}
+-\def\doparagraphindent#1{%
++\parseargdef\paragraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+@@ -767,8 +1024,7 @@
+ % 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.
+-\def\exampleindent{\parsearg\doexampleindent}
+-\def\doexampleindent#1{%
++\parseargdef\exampleindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+@@ -780,26 +1036,159 @@
+ \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
++ }%
++}
+
---- ./install.sh.orig 1999-12-06 15:43:54.000000000 -0700
-+++ ./install.sh 2012-01-09 20:36:31.871118727 -0700
-@@ -1,19 +1,38 @@
--#! /bin/sh
--#
-+#!/bin/sh
- # install - install a program, script, or datafile
--# This comes from X11R5 (mit/util/scripts/install.sh).
++\gdef\restorefirstparagraphindent{%
++ \global \let \indent = \ptexindent
++ \global \let \noindent = \ptexnoindent
++ \global \everypar = {}%
++}
+
-+scriptversion=2009-04-28.21; # UTC
+
-+# This originates from X11R5 (mit/util/scripts/install.sh), which was
-+# later released in X11R6 (xc/config/util/install.sh) with the
-+# following copyright and license.
- #
--# Copyright 1991 by the Massachusetts Institute of Technology
-+# Copyright (C) 1994 X Consortium
- #
--# Permission to use, copy, modify, distribute, and sell this software and its
--# documentation for any purpose is hereby granted without fee, provided that
--# the above copyright notice appear in all copies and that both that
--# copyright notice and this permission notice appear in supporting
--# documentation, and that the name of M.I.T. not be used in advertising or
--# publicity pertaining to distribution of the software without specific,
--# written prior permission. M.I.T. makes no representations about the
--# suitability of this software for any purpose. It is provided "as is"
--# without express or implied warranty.
-+# 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
-@@ -21,230 +40,481 @@
- #
- # 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-}"
-+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.
+ % @asis just yields its argument. Used with @table, for example.
+ %
+ \def\asis#1{#1}
--# put in absolute paths if you don't have them in your path; or use env. 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}
+-% @math means output in math mode.
+-% We don't use $'s directly in the definition of \math because control
+-% sequences like \math are expanded when the toc file is written. Then,
+-% we read the toc file back, the $'s will be normal characters (as they
+-% should be, according to the definition of Texinfo). So we must use a
+-% control sequence to switch into and out of math mode.
++% @math outputs its argument in math mode.
+ %
+-% This isn't quite enough for @math to work properly in indices, but it
+-% seems unlikely it will ever be needed there.
++% 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 \ character.
++% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
++% this is not advertised and we don't care. Texinfo does not
++% otherwise define @\.
+ %
+-\let\implicitmath = $
+-\def\math#1{\implicitmath #1\implicitmath}
++% 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.
--mvprog="${MVPROG-mv}"
--cpprog="${CPPROG-cp}"
--chmodprog="${CHMODPROG-chmod}"
--chownprog="${CHOWNPROG-chown}"
--chgrpprog="${CHGRPPROG-chgrp}"
--stripprog="${STRIPPROG-strip}"
--rmprog="${RMPROG-rm}"
--mkdirprog="${MKDIRPROG-mkdir}"
-+posix_glob='?'
-+initialize_posix_glob='
-+ test "$posix_glob" != "?" || {
-+ if (set -f) 2>/dev/null; then
-+ posix_glob=
-+ else
-+ posix_glob=:
-+ fi
+-% @bullet and @minus need the same treatment as @math, just above.
+-\def\bullet{\implicitmath\ptexbullet\implicitmath}
+-\def\minus{\implicitmath-\implicitmath}
++% 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
++ \gdef\mathactive{%
++ \let^ = \ptexhat
++ \let< = \ptexless
++ \let> = \ptexgtr
++ \let+ = \ptexplus
+ }
-+'
++}
++
++% 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
++}
++
++% @comma{} is so commas can be inserted into text without messing up
++% Texinfo's parsing.
++%
++\let\comma = ,
+
+ % @refill is a no-op.
+ \let\refill=\relax
+@@ -815,20 +1204,20 @@
+ % 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
+- \readauxfile
++ \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
+- \fixbackslash % Turn off hack to swallow `\input texinfo'.
+- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
++ \let\setfilename=\comment % Ignore extra @setfilename cmds.
+ %
+ % If texinfo.cnf is present on the system, read it.
+ % Useful for site-wide @afourpaper, etc.
+- % Just to be on the safe side, close the input stream before the \input.
+ \openin 1 texinfo.cnf
+- \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
+- \closein1
+- \temp
++ \ifeof 1 \else \input texinfo.cnf \fi
++ \closein 1
+ %
+ \comment % Ignore the actual filename.
+ }
+@@ -864,111 +1253,294 @@
+ \newif\ifpdf
+ \newif\ifpdfmakepagedest
--transformbasename=""
--transform_arg=""
--instcmd="$mvprog"
--chmodcmd="$chmodprog 0755"
--chowncmd=""
--chgrpcmd=""
--stripcmd=""
-+posix_mkdir=
++% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
++% can be set). So we test for \relax and 0 as well as \undefined,
++% borrowed from ifpdf.sty.
+ \ifx\pdfoutput\undefined
+- \pdffalse
+- \let\pdfmkdest = \gobble
+- \let\pdfurl = \gobble
+- \let\endlink = \relax
+- \let\linkcolor = \relax
+- \let\pdfmakeoutlines = \relax
+ \else
+- \pdftrue
+- \pdfoutput = 1
+- \input pdfcolor
++ \ifx\pdfoutput\relax
++ \else
++ \ifcase\pdfoutput
++ \else
++ \pdftrue
++ \fi
++ \fi
++\fi
+
-+# Desired mode of installed file.
-+mode=0755
++% 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.
++% 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).
+
-+chgrpcmd=
-+chmodcmd=$chmodprog
-+chowncmd=
-+mvcmd=$mvprog
- rmcmd="$rmprog -f"
--mvcmd="$mvprog"
--src=""
--dst=""
--dir_arg=""
-+stripcmd=
-
--while [ x"$1" != x ]; do
-- case $1 in
-- -c) instcmd="$cpprog"
-- shift
-- continue;;
-+src=
-+dst=
-+dir_arg=
-+dst_arg=
-
-- -d) dir_arg=true
-- shift
-- continue;;
-+copy_on_change=false
-+no_target_directory=
-
-- -m) chmodcmd="$chmodprog $2"
-- shift
-- shift
-- continue;;
-+usage="\
-+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-+ or: $0 [OPTION]... SRCFILES... DIRECTORY
-+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-+ or: $0 [OPTION]... -d DIRECTORIES...
-
-- -o) chowncmd="$chownprog $2"
-- shift
-- shift
-- continue;;
-+In the 1st form, copy SRCFILE to DSTFILE.
-+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-+In the 4th, create DIRECTORIES.
-
-- -g) chgrpcmd="$chgrpprog $2"
-- shift
-- shift
-- continue;;
-+Options:
-+ --help display this help and exit.
-+ --version display version info and exit.
-
-- -s) stripcmd="$stripprog"
-- shift
-- continue;;
-+ -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.
-
-- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-- shift
-- continue;;
-+Environment variables override the default commands:
-+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-+ RMPROG STRIPPROG
-+"
++% double active backslashes.
++%
++{\catcode`\@=0 \catcode`\\=\active
++ @gdef at activebackslashdouble{%
++ @catcode`@\=@active
++ @let\=@doublebackslash}
++}
++
++% To handle parens, we must adopt a different approach, since parens are
++% not active characters. hyperref.dtx (which has the same problem as
++% us) handles it with this amazing macro to replace tokens, with minor
++% changes for Texinfo. It is included here under the GPL by permission
++% from the author, Heiko Oberdiek.
++%
++% #1 is the tokens to replace.
++% #2 is the replacement.
++% #3 is the control sequence with the string.
++%
++\def\HyPsdSubst#1#2#3{%
++ \def\HyPsdReplace##1#1##2\END{%
++ ##1%
++ \ifx\\##2\\%
++ \else
++ #2%
++ \HyReturnAfterFi{%
++ \HyPsdReplace##2\END
++ }%
++ \fi
++ }%
++ \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
++}
++\long\def\HyReturnAfterFi#1\fi{\fi#1}
++
++% #1 is a control sequence in which to do the replacements.
++\def\backslashparens#1{%
++ \xdef#1{#1}% redefine it as its expansion; the definition is simply
++ % \lastnode when called from \setref -> \pdfmkdest.
++ \HyPsdSubst{(}{\realbackslash(}{#1}%
++ \HyPsdSubst{)}{\realbackslash)}{#1}%
++}
++
++\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.
++ \def\cmykDarkRed{0.28 1 1 0.35}
++ \def\cmykBlack{0 0 0 1}
++ %
++ \def\pdfsetcolor#1{\pdfliteral{#1 k}}
++ % 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{\cmykBlack}
++ \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\imagewidth{#2}%
+- \def\imageheight{#3}%
++ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
++ \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
++ %
++ % pdftex (and the PDF format) support .png, .jpg, .pdf (among
++ % others). Let's try in that order.
++ \let\pdfimgext=\empty
++ \begingroup
++ \openin 1 #1.png \ifeof 1
++ \openin 1 #1.jpg \ifeof 1
++ \openin 1 #1.jpeg \ifeof 1
++ \openin 1 #1.JPG \ifeof 1
++ \openin 1 #1.pdf \ifeof 1
++ \openin 1 #1.PDF \ifeof 1
++ \errhelp = \nopdfimagehelp
++ \errmessage{Could not find image file #1 for pdf}%
++ \else \gdef\pdfimgext{PDF}%
++ \fi
++ \else \gdef\pdfimgext{pdf}%
++ \fi
++ \else \gdef\pdfimgext{JPG}%
++ \fi
++ \else \gdef\pdfimgext{jpeg}%
++ \fi
++ \else \gdef\pdfimgext{jpg}%
++ \fi
++ \else \gdef\pdfimgext{png}%
++ \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
+- \pdfimage
++ \immediate\pdfimage
+ \else
+- \pdfximage
++ \immediate\pdfximage
+ \fi
+- \ifx\empty\imagewidth\else width \imagewidth \fi
+- \ifx\empty\imageheight\else height \imageheight \fi
+- {#1.pdf}%
++ \ifdim \wd0 >0pt width \imagewidth \fi
++ \ifdim \wd2 >0pt height \imageheight \fi
++ \ifnum\pdftexversion<13
++ #1.\pdfimgext
++ \else
++ {#1.\pdfimgext}%
++ \fi
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+- \def\pdfmkdest#1{\pdfdest name{#1@} xyz}
+- \def\pdfmkpgn#1{#1@}
+- \let\linkcolor = \Cyan
+- \def\endlink{\Black\pdfendlink}
++ %
++ \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
++ \activebackslashdouble
++ \makevalueexpandable
++ \def\pdfdestname{#1}%
++ \backslashparens\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{\cmykDarkRed}
++ \def\linkcolor{\cmykDarkRed}
++ \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 by1
++ \advance\tempnum by 1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+- \def\pdfmakeoutlines{{%
+- \openin 1 \jobname.toc
+- \ifeof 1\else\bgroup
+- \closein 1
+- \indexnofonts
+- \def\tt{}
+- % thanh's hack / proper braces in bookmarks
+- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+- %
+- \def\chapentry ##1##2##3{}
+- \def\unnumbchapentry ##1##2{}
+- \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
+- \def\unnumbsecentry ##1##2{}
+- \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
+- \def\unnumbsubsecentry ##1##2{}
+- \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
+- \def\unnumbsubsubsecentry ##1##2{}
+- \input \jobname.toc
+- \def\chapentry ##1##2##3{%
+- \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
+- \def\unnumbchapentry ##1##2{%
+- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+- \def\secentry ##1##2##3##4{%
+- \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
+- \def\unnumbsecentry ##1##2{%
+- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+- \def\subsecentry ##1##2##3##4##5{%
+- \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
+- \def\unnumbsubsecentry ##1##2{%
+- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+- \def\subsubsecentry ##1##2##3##4##5##6{%
+- \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
+- \def\unnumbsubsubsecentry ##1##2{%
+- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+- \input \jobname.toc
+- \egroup\fi
+- }}
+- \def\makelinks #1,{%
+- \def\params{#1}\def\E{END}%
+- \ifx\params\E
+- \let\nextmakelinks=\relax
++ %
++ % #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.
++ \def\pdfoutlinedest{#3}%
++ \ifx\pdfoutlinedest\empty
++ \def\pdfoutlinedest{#4}%
+ \else
+- \let\nextmakelinks=\makelinks
+- \ifnum\lnkcount>0,\fi
+- \picknum{#1}%
+- \startlink attr{/Border [0 0 0]}
+- goto name{\pdfmkpgn{\the\pgn}}%
+- \linkcolor #1%
+- \advance\lnkcount by 1%
+- \endlink
++ % Doubled backslashes in the name.
++ {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
++ \backslashparens\pdfoutlinedest}%
+ \fi
+- \nextmakelinks
++ %
++ % Also double the backslashes in the display string.
++ {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
++ \backslashparens\pdfoutlinetext}%
++ %
++ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ }
+- \def\picknum#1{\expandafter\pn#1}
+- \def\pn#1{%
+- \def\p{#1}%
+- \ifx\p\lbrace
+- \let\nextpn=\ppn
+- \else
+- \let\nextpn=\ppnn
+- \def\first{#1}
+- \fi
+- \nextpn
++ %
++ \def\pdfmakeoutlines{%
++ \begingroup
++ % Thanh's hack / proper braces in bookmarks
++ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
++ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
++ %
++ % Read toc silently, to get counts of subentries for \pdfoutline.
++ \def\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.
++ %
++ % xx to do this right, we have to translate 8-bit characters to
++ % their "best" equivalent, based on the @documentencoding. Right
++ % now, I guess we'll just let the pdf reader have its way.
++ \indexnofonts
++ \setupdatafile
++ \catcode`\\=\active \otherbackslash
++ \input \tocreadfilename
++ \endgroup
+ }
+- \def\ppn#1{\pgn=#1\gobble}
+- \def\ppnn{\pgn=\first}
+- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
+- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
++ %
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+@@ -983,24 +1555,32 @@
+ \else
+ \let \startlink \pdfstartlink
+ \fi
++ % make a live url in pdf output.
+ \def\pdfurl#1{%
+ \begingroup
+- \normalturnoffactive\def\@{@}%
+- \leavevmode\Red
++ % 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
++ \leavevmode\setcolor{\urlcolor}%
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+- % #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|
++ \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\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+@@ -1013,33 +1593,348 @@
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+- \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}
+- \linkcolor #1\endlink}
+- \def\mkpgn#1{#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}
+-\fi % \ifx\pdfoutput
++\else
++ \let\pdfmkdest = \gobble
++ \let\pdfurl = \gobble
++ \let\endlink = \relax
++ \let\setcolor = \gobble
++ \let\pdfsetcolor = \gobble
++ \let\pdfmakeoutlines = \relax
++\fi % \ifx\pdfoutput
-- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-- shift
-- continue;;
-+while test $# -ne 0; do
-+ case $1 in
-+ -c) ;;
-- *) if [ x"$src" = x ]
-- then
-- src=$1
-- else
-- # this colon is to work around a 386BSD /bin/sh bug
-- :
-- dst=$1
-- fi
-- shift
-- continue;;
-- esac
-+ -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;;
+ \message{fonts,}
+-% Font-change commands.
+
-+ -o) chowncmd="$chownprog $2"
-+ shift;;
++% 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
++}
+
-+ -s) stripcmd=$stripprog;;
++% Select #1 fonts with the current style.
++%
++\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
-+ -t) dst_arg=$2
-+ shift;;
++\def\rm{\fam=0 \setfontstyle{rm}}
++\def\it{\fam=\itfam \setfontstyle{it}}
++\def\sl{\fam=\slfam \setfontstyle{sl}}
++\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
++\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+ % Texinfo sort of supports the sans serif font style, which plain TeX does not.
+-% So we set up a \sf analogous to plain's \rm, etc.
++% So we set up a \sf.
+ \newfam\sffam
+-\def\sf{\fam=\sffam \tensf}
++\def\sf{\fam=\sffam \setfontstyle{sf}}
+ \let\li = \sf % Sometimes we call it \li, not \sf.
+
+-% We don't need math for this one.
+-\def\ttsl{\tenttsl}
++% We don't need math for this font style.
++\def\ttsl{\setfontstyle{ttsl}}
+
-+ -T) no_target_directory=true;;
+
-+ --version) echo "$0 $scriptversion"; exit $?;;
++% Default leading.
++\newdimen\textleading \textleading = 13.2pt
+
-+ --) shift
-+ break;;
++% 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}
++%
++\def\setleading#1{%
++ \dimen0 = #1\relax
++ \normalbaselineskip = \baselinefactor\dimen0
++ \normallineskip = \lineskipfactor\normalbaselineskip
++ \normalbaselines
++ \setbox\strutbox =\hbox{%
++ \vrule width0pt height\strutheightpercent\baselineskip
++ depth \strutdepthpercent \baselineskip
++ }%
++}
+
-+ -*) echo "$0: invalid option: $1" >&2
-+ exit 1;;
++% 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
+
-+ *) break;;
-+ esac
-+ shift
- done
-
--if [ x"$src" = x ]
--then
-- echo "install: no input file specified"
-- exit 1
--else
-- true
-+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
-+ done
- fi
-
--if [ x"$dir_arg" != x ]; then
-- dst=$src
-- src=""
--
-- if [ -d $dst ]; then
-- instcmd=:
-- else
-- instcmd=mkdir
-- fi
--else
--
--# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
--# might cause directories to be created, which would be especially bad
--# if $src (and thus $dsttmp) contains '*'.
-+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 we are producing pdf, and we have \pdffontattr, then define cmaps.
++% (\pdffontattr was introduced many years ago, but people still run
++% older pdftex's; it's easy to conditionalize, so we do.)
++\ifpdf \ifx\pdffontattr\undefined \else
++ \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
-- if [ -f $src -o -d $src ]
-- then
-- true
-- else
-- echo "install: $src does not exist"
-- exit 1
-- fi
--
-- if [ x"$dst" = x ]
-- then
-- echo "install: no destination specified"
-- exit 1
-- else
-- true
-- fi
-+if test -z "$dir_arg"; then
-+ trap '(exit $?); exit' 1 2 13 15
+-% Use Computer Modern fonts at \magstephalf (11pt).
+-\newcount\mainmagstep
+-\mainmagstep=\magstephalf
--# If destination is a directory, append the input filename; if your system
--# does not like double slashes in filenames, you may need to add some logic
-+ # 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;;
+ % Set the font macro #1 to the font named #2, adding on the
+ % specified font prefix (normally `cm').
+-% #3 is the font's design size, #4 is a scale factor
+-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
++% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
++% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
++% empty to omit).
++\def\setfont#1#2#3#4#5{%
++ \font#1=\fontprefix#2#3 scaled #4
++ \csname cmap#5\endcsname#1%
++}
++% This is what gets called when #5 of \setfont is empty.
++\let\cmap\gobble
++% emacs-page end of cmaps
-- if [ -d $dst ]
-- then
-- dst="$dst"/`basename $src`
-- else
-- true
-- fi
-+ *[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
+ % Use cm as the default font prefix.
+ % To specify the font prefix, you must define \fontprefix
+@@ -1064,165 +1959,409 @@
+ \def\scshape{csc}
+ \def\scbshape{csc}
--## this sed command emulates the dirname command
--dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-+for src
-+do
-+ # Protect names starting with `-'.
-+ case $src in
-+ -*) src=./$src;;
-+ esac
+-\ifx\bigger\relax
+-\let\mainmagstep=\magstep1
+-\setfont\textrm\rmshape{12}{1000}
+-\setfont\texttt\ttshape{12}{1000}
+-\else
+-\setfont\textrm\rmshape{10}{\mainmagstep}
+-\setfont\texttt\ttshape{10}{\mainmagstep}
+-\fi
+-% Instead of cmb10, you many want to use cmbx10.
+-% cmbx10 is a prettier font on its own, but cmb10
+-% looks better when embedded in a line with cmr10.
+-\setfont\textbf\bfshape{10}{\mainmagstep}
+-\setfont\textit\itshape{10}{\mainmagstep}
+-\setfont\textsl\slshape{10}{\mainmagstep}
+-\setfont\textsf\sfshape{10}{\mainmagstep}
+-\setfont\textsc\scshape{10}{\mainmagstep}
+-\setfont\textttsl\ttslshape{10}{\mainmagstep}
++% Definitions for a main text size of 11pt. This is 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}
--# Make sure that the destination directory exists.
--# this part is taken from Noah Friedman's mkinstalldirs script
-+ if test -n "$dir_arg"; then
-+ dst=$src
-+ dstdir=$dst
-+ test -d "$dstdir"
-+ dstdir_status=$?
-+ else
+-% A few fonts for @defun, etc.
+-\setfont\defbf\bxshape{10}{\magstep1} %was 1314
+-\setfont\deftt\ttshape{10}{\magstep1}
+-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
++% 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}
--# Skip lots of stat calls in the usual case.
--if [ ! -d "$dstdir" ]; then
--defaultIFS='
--'
--IFS="${IFS-${defaultIFS}}"
-+ # 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
+ % Fonts for indices, footnotes, small examples (9pt).
+-\setfont\smallrm\rmshape{9}{1000}
+-\setfont\smalltt\ttshape{9}{1000}
+-\setfont\smallbf\bfshape{10}{900}
+-\setfont\smallit\itshape{9}{1000}
+-\setfont\smallsl\slshape{9}{1000}
+-\setfont\smallsf\sfshape{9}{1000}
+-\setfont\smallsc\scshape{10}{900}
+-\setfont\smallttsl\ttslshape{10}{900}
++\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}
--oIFS="${IFS}"
--# Some sh's can't handle IFS=/ for some reason.
--IFS='%'
--set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
--IFS="${oIFS}"
-+ if test -z "$dst_arg"; then
-+ echo "$0: no destination specified." >&2
-+ exit 1
-+ fi
+-% Fonts for title page:
+-\setfont\titlerm\rmbshape{12}{\magstep3}
+-\setfont\titleit\itbshape{10}{\magstep4}
+-\setfont\titlesl\slbshape{10}{\magstep4}
+-\setfont\titlett\ttbshape{12}{\magstep3}
+-\setfont\titlettsl\ttslshape{10}{\magstep4}
+-\setfont\titlesf\sfbshape{17}{\magstep1}
++% 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}
++\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+ \font\titlei=cmmi12 scaled \magstep3
+ \font\titlesy=cmsy10 scaled \magstep4
+ \def\authorrm{\secrm}
++\def\authortt{\sectt}
++\def\titleecsize{2074}
--pathcomp=''
-+ dst=$dst_arg
-+ # Protect names starting with `-'.
-+ case $dst in
-+ -*) dst=./$dst;;
-+ esac
+ % Chapter (and unnumbered) fonts (17.28pt).
+-\setfont\chaprm\rmbshape{12}{\magstep2}
+-\setfont\chapit\itbshape{10}{\magstep3}
+-\setfont\chapsl\slbshape{10}{\magstep3}
+-\setfont\chaptt\ttbshape{12}{\magstep2}
+-\setfont\chapttsl\ttslshape{10}{\magstep3}
+-\setfont\chapsf\sfbshape{17}{1000}
++\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}
++\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+ \font\chapi=cmmi12 scaled \magstep2
+ \font\chapsy=cmsy10 scaled \magstep3
++\def\chapecsize{1728}
--while [ $# -ne 0 ] ; do
-- pathcomp="${pathcomp}${1}"
-- shift
-+ # 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'
-+ `
+ % Section fonts (14.4pt).
+-\setfont\secrm\rmbshape{12}{\magstep1}
+-\setfont\secit\itbshape{10}{\magstep2}
+-\setfont\secsl\slbshape{10}{\magstep2}
+-\setfont\sectt\ttbshape{12}{\magstep1}
+-\setfont\secttsl\ttslshape{10}{\magstep2}
+-\setfont\secsf\sfbshape{12}{\magstep1}
++\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}
++\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+ \font\seci=cmmi12 scaled \magstep1
+ \font\secsy=cmsy10 scaled \magstep2
+-
+-% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
+-% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
+-% \setfont\ssecsl\slshape{10}{\magstep1}
+-% \setfont\ssectt\ttshape{10}{\magstep1}
+-% \setfont\ssecsf\sfshape{10}{\magstep1}
+-
+-%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
+-%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
+-%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
+-%\setfont\ssectt\ttshape{10}{1315}
+-%\setfont\ssecsf\sfshape{10}{1315}
+-
+-%\let\ssecbf=\ssecrm
++\def\sececsize{1440}
-- if [ ! -d "${pathcomp}" ] ;
-- then
-- $mkdirprog "${pathcomp}"
-+ test -d "$dstdir"
-+ dstdir_status=$?
-+ fi
-+ fi
+ % Subsection fonts (13.15pt).
+-\setfont\ssecrm\rmbshape{12}{\magstephalf}
+-\setfont\ssecit\itbshape{10}{1315}
+-\setfont\ssecsl\slbshape{10}{1315}
+-\setfont\ssectt\ttbshape{12}{\magstephalf}
+-\setfont\ssecttsl\ttslshape{10}{1315}
+-\setfont\ssecsf\sfbshape{12}{\magstephalf}
++\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}{\magstep1}
++\setfont\ssecsc\scbshape{10}{1315}{OT1}
+ \font\sseci=cmmi12 scaled \magstephalf
+ \font\ssecsy=cmsy10 scaled 1315
+-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
+-% but that is not a standard magnification.
++\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}
++
++% reset the current fonts
++\textfonts
++\rm
++} % end of 11pt text font size definitions
+
-+ 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;;
++% 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}
+
-+ *[0-7])
-+ mkdir_umask=`expr $umask + 22 \
-+ - $umask % 100 % 40 + $umask % 20 \
-+ - $umask % 10 % 4 + $umask % 2
-+ `;;
-+ *) mkdir_umask=$umask,go-w;;
-+ esac
++% 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\authorrm{\secrm}
++\def\authortt{\sectt}
++\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}
++
++% reduce space between paragraphs
++\divide\parskip by 2
++
++% reset the current fonts
++\textfonts
++\rm
++} % end of 10pt text font size definitions
++
++
++% We provide the user-level command
++% @fonttextsize 10
++% (or 11) to redefine the text font size. pt is assumed.
++%
++\def\xword{10}
++\def\xiword{11}
++%
++\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
++}
+
-+ # 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
-- true
-+ mkdir_mode=
- fi
-
-- pathcomp="${pathcomp}/"
--done
--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 [ x"$dir_arg" != x ]
--then
-- $doit $instcmd $dst &&
-+ 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-writeable 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 [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
--else
-+ if
-+ $posix_mkdir && (
-+ umask $mkdir_umask &&
-+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-+ )
-+ then :
-+ else
-
--# If we're going to rename the final executable, determine the name now.
-+ # 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.
-
-- if [ x"$transformarg" = x ]
-- then
-- dstfile=`basename $dst`
-- else
-- dstfile=`basename $dst $transformbasename |
-- sed $transformarg`$transformbasename
-- fi
-+ case $dstdir in
-+ /*) prefix='/';;
-+ -*) prefix='./';;
-+ *) prefix='';;
-+ esac
--# don't allow the sed command to completely eliminate the filename
-+ eval "$initialize_posix_glob"
+ % 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, we
+-% don't bother to reset \scriptfont and \scriptscriptfont (which would
+-% also require loading a lot more fonts).
++% 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
++ \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
++ \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
++ \textfont\ttfam=\tentt \textfont\sffam=\tensf
+ }
-- if [ x"$dstfile" = x ]
-- then
-- dstfile=`basename $dst`
-+ oIFS=$IFS
-+ IFS=/
-+ $posix_glob set -f
-+ set fnord $dstdir
-+ shift
-+ $posix_glob set +f
-+ IFS=$oIFS
-+
-+ prefixes=
+-
+ % The font-changing commands redefine the meanings of \tenSTYLE, instead
+-% of just \STYLE. We do this so that font changes will continue to work
+-% in math mode, where it is the current \fam that is relevant in most
+-% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
+-% \tenbf}, for example. By redefining \tenbf, we obviate the need to
+-% redefine \bf itself.
++% 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
+- \resetmathfonts}
++ \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{25pt}}
+ \def\titlefont#1{{\titlefonts\rm #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
++ \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
++ \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
++ \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 % Maybe make sssec fonts scaled magstephalf?
++\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
+- \resetmathfonts \setleading{11pt}}
++ \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}}
+
-+ for d
-+ do
-+ test -z "$d" && continue
++% 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
++%
++% I wish the USA used A4 paper.
++% --karl, 24jan03.
+
-+ prefix=$prefix$d
-+ if test -d "$prefix"; then
-+ prefixes=
- else
-- true
-+ 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
-
--# Make a temp file name in the proper directory.
-+ 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
-
-- dsttmp=$dstdir/#inst.$$#
-+ 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
-
--# Move or copy the file name to the temp name
-+ # Make a couple of temp file names in the proper directory.
-+ dsttmp=$dstdir/_inst.$$_
-+ rmtmp=$dstdir/_rm.$$_
-
-- $doit $instcmd $src $dsttmp &&
-+ # Trap to clean up those temp files at exit.
-+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-- trap "rm -f ${dsttmp}" 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
-+ # 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 any of these fail, we abort the whole thing. If we want to
--# ignore errors from any of these, just make sure not to ignore
--# errors from the above "$doit $instcmd $src $dsttmp" command.
-+ # If -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` &&
-
-- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-+ 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 &&
-
--# Now rename the file to the real destination.
-+ 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 ||
-
-- $doit $rmcmd -f $dstdir/$dstfile &&
-- $doit $mvcmd $dsttmp $dstdir/$dstfile
-+ # 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
-+ }
-+ } &&
--fi &&
-+ # Now rename the file to the real destination.
-+ $doit $mvcmd "$dsttmp" "$dst"
-+ }
-+ fi || exit 1
+ % Set up the default fonts, so we can use them for creating boxes.
+ %
+-\textfonts
++\definetextfontsizexi
-+ trap '' 0
-+ fi
-+done
+ % Define these so they can be easily changed for other fonts.
+ \def\angleleft{$\langle$}
+@@ -1232,28 +2371,42 @@
+ \newcount\fontdepth \fontdepth=0
--exit 0
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "scriptversion="
-+# time-stamp-format: "%:y-%02m-%02d.%02H"
-+# time-stamp-time-zone: "UTC"
-+# time-stamp-end: "; # UTC"
-+# End:
---- ./info/texinfo.tex.orig 2002-10-26 09:14:15.000000000 -0600
-+++ ./info/texinfo.tex 2012-01-09 20:36:31.879118561 -0700
-@@ -3,15 +3,16 @@
- % Load plain if necessary, i.e., if running under initex.
- \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
- %
--\def\texinfoversion{1999-09-25.10}
-+\def\texinfoversion{2008-04-18.10}
- %
--% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
--% Free Software Foundation, Inc.
-+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-+% 2007, 2008 Free Software Foundation, Inc.
- %
--% This texinfo.tex file is free software; you can redistribute it and/or
-+% 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 2, or (at
--% your option) any later version.
-+% 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
-@@ -19,25 +20,19 @@
- % General Public License for more details.
- %
- % You should have received a copy of the GNU General Public License
--% along with this texinfo.tex file; see the file COPYING. If not, write
--% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
--% Boston, MA 02111-1307, USA.
-+% along with this program. If not, see <http://www.gnu.org/licenses/>.
- %
--% In other words, you are welcome to use, share and improve this program.
--% You are forbidden to forbid anyone else to use, share and improve
--% what you give them. Help stamp out software-hoarding!
-+% As a special exception, when this file is read by TeX when processing
-+% a Texinfo source document, you may use the result without
-+% restriction. (This has been our intent since Texinfo was invented.)
- %
- % Please try the latest version of texinfo.tex before submitting bug
- % reports; you can get the latest version from:
--% ftp://ftp.gnu.org/gnu/texinfo.tex
--% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
--% ftp://texinfo.org/tex/texinfo.tex
--% ftp://us.ctan.org/macros/texinfo/texinfo.tex
--% (and all CTAN mirrors, finger ctan at us.ctan.org for a list).
--% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
--% The texinfo.tex in any given Texinfo distribution could well be out
-+% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-+% ftp://tug.org/tex/texinfo.tex
-+% (and all CTAN mirrors, see http://www.ctan.org).
-+% The texinfo.tex in any given distribution could well be out
- % of date, so if that's what you're using, please check.
--% Texinfo has a small home page at http://texinfo.org/.
- %
- % 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
-@@ -50,13 +45,17 @@
- % texindex foo.??
- % tex foo.texi
- % tex foo.texi
--% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
--% The extra runs of TeX get the cross-reference information correct.
-+% 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. You can get
--% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
-+% 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.
+ % Fonts for short table of contents.
+-\setfont\shortcontrm\rmshape{12}{1000}
+-\setfont\shortcontbf\bxshape{12}{1000}
+-\setfont\shortcontsl\slshape{12}{1000}
++\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}
+
+ %% Add scribe-like font environments, plus @l for inline lisp (usually sans
+ %% serif) and @ii for TeX italic
+
+ % \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+ % unless the following character is such as not to need one.
+-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
+-\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}
+-\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
++\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
++ \ptexslash\fi\fi\fi}
++\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
++\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
++
++% like \smartslanted except unconditionally uses \ttsl.
++% @var is set to this for defun arguments.
++\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
++% like \smartslanted except unconditionally use \sl. We never want
++% ttsl for book titles, do we?
++\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
- \message{Loading texinfo [version \texinfoversion]:}
+ \let\i=\smartitalic
++\let\slanted=\smartslanted
+ \let\var=\smartslanted
+ \let\dfn=\smartslanted
+ \let\emph=\smartitalic
+-\let\cite=\smartslanted
-@@ -66,7 +65,14 @@
- \everyjob{\message{[Texinfo version \texinfoversion]}%
- \catcode`+=\active \catcode`\_=\active}
++% @b, explicit bold.
+ \def\b#1{{\bf #1}}
+ \let\strong=\b
--% Save some parts of plain tex whose names we will redefine.
-+
-+\chardef\other=12
++% @sansserif, explicit sans.
++\def\sansserif#1{{\sf #1}}
+
-+% We never want plain's \outer definition of \+ in Texinfo.
-+% For @tex, we can use \tabalign.
-+\let\+ = \relax
+ % 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.
+@@ -1261,13 +2414,30 @@
+ \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
+
-+% Save some plain tex macros whose names we will redefine.
- \let\ptexb=\b
- \let\ptexbullet=\bullet
- \let\ptexc=\c
-@@ -76,23 +82,36 @@
- \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\ptexrbrace=\}
-+\let\ptexslash=\/
- \let\ptexstar=\*
- \let\ptext=\t
--
--% We never want plain's outer \+ definition in Texinfo.
--% For @tex, we can use \tabalign.
--\let\+ = \relax
--
--\message{Basics,}
--\chardef\other=12
-+\let\ptextop=\top
+ \def\t#1{%
+- {\tt \rawbackslash \frenchspacing #1}%
++ {\tt \rawbackslash \plainfrenchspacing #1}%
+ \null
+ }
+-\let\ttfont=\t
+ \def\samp#1{`\tclose{#1}'\null}
+-\setfont\keyrm\rmshape{8}{1000}
++\setfont\keyrm\rmshape{8}{1000}{OT1}
+ \font\keysy=cmsy9
+ \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+ \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+@@ -1275,6 +2445,7 @@
+ \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+ \kern-0.4pt\hrule}%
+ \kern-.06em\raise0.4pt\hbox{\angleright}}}}
++\def\key #1{{\nohyphenation \uppercase{#1}}\null}
+ % The old definition, with no lozenge:
+ %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+ \def\ctrl #1{{\tt \rawbackslash \hat}#1}
+@@ -1300,13 +2471,13 @@
+ \nohyphenation
+ %
+ \rawbackslash
+- \frenchspacing
++ \plainfrenchspacing
+ #1%
+ }%
+ \null
+ }
+
+-% We *must* turn on hyphenation at `-' and `_' in \code.
++% 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.
+
+@@ -1316,26 +2487,61 @@
+ % and arrange explicitly to hyphenate at a dash.
+ % -- rms.
+ {
+- \catcode`\-=\active
+- \catcode`\_=\active
++ \catcode`\-=\active \catcode`\_=\active
++ \catcode`\'=\active \catcode`\`=\active
+ %
+ \global\def\code{\begingroup
+- \catcode`\-=\active \let-\codedash
+- \catcode`\_=\active \let_\codeunder
++ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
++ \let'\codequoteright \let`\codequoteleft
++ %
++ \catcode\dashChar=\active \catcode\underChar=\active
++ \ifallowcodebreaks
++ \let-\codedash
++ \let_\codeunder
++ \else
++ \let-\realdash
++ \let_\realunder
++ \fi
+ \codex
+ }
+- %
+- % If we end up with any active - characters when handling the index,
+- % just treat them as a normal -.
+- \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
+ }
- % If this character appears in an error message or help string, it
- % starts a new line in the output.
- \newlinechar = `^^J
+ \def\realdash{-}
+ \def\codedash{-\discretionary{}{}{}}
+-\def\codeunder{\ifusingtt{\normalunderscore\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{}{}{}}%
++ {\_}%
++}
+ \def\codex #1{\tclose{#1}\endgroup}
-+% 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
-@@ -131,44 +150,119 @@
- \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
- \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
- \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
--\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
- \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
--\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
+-%\let\exp=\tclose %Was temporary
++% An additional complication: the above will allow breaks after, e.g.,
++% each of the four underscores in __typeof__. This is undesirable in
++% some manuals, especially if they don't have long identifiers in
++% general. @allowcodebreaks provides a way to control this.
++%
++\newif\ifallowcodebreaks \allowcodebreakstrue
+
-+% Since the category of space is not known, we have to be careful.
-+\chardef\spacecat = 10
-+\def\spaceisspace{\catcode`\ =\spacecat}
++\def\keywordtrue{true}
++\def\keywordfalse{false}
+
-+% sometimes characters are active, so we need control sequences.
-+\chardef\colonChar = `\:
-+\chardef\commaChar = `\,
-+\chardef\dashChar = `\-
-+\chardef\dotChar = `\.
-+\chardef\exclamChar= `\!
-+\chardef\lquoteChar= `\`
-+\chardef\questChar = `\?
-+\chardef\rquoteChar= `\'
-+\chardef\semiChar = `\;
-+\chardef\underChar = `\_
++\parseargdef\allowcodebreaks{%
++ \def\txiarg{#1}%
++ \ifx\txiarg\keywordtrue
++ \allowcodebreakstrue
++ \else\ifx\txiarg\keywordfalse
++ \allowcodebreaksfalse
++ \else
++ \errhelp = \EMsimple
++ \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
++ \fi\fi
++}
- % Ignore a token.
- %
- \def\gobble#1{}
+ % @kbd is like @code, except that if the argument is just one @key command,
+ % then @kbd has no effect.
+@@ -1343,24 +2549,25 @@
+ % @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).
+-\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
+-\def\kbdinputstylexxx#1{%
+- \def\arg{#1}%
+- \ifx\arg\worddistinct
++\parseargdef\kbdinputstyle{%
++ \def\txiarg{#1}%
++ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+- \else\ifx\arg\wordexample
++ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+- \else\ifx\arg\wordcode
++ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
++ \else
++ \errhelp = \EMsimple
++ \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+ \fi\fi\fi
+ }
+ \def\worddistinct{distinct}
+ \def\wordexample{example}
+ \def\wordcode{code}
--\hyphenation{ap-pen-dix}
--\hyphenation{mini-buf-fer mini-buf-fers}
--\hyphenation{eshell}
--\hyphenation{white-space}
-+% 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
-+}
+-% Default is kbdinputdistinct. (Too much of a hassle to call the macro,
+-% the catcodes are wrong for parsearg to work.)
+-\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}
++% Default is `distinct.'
++\kbdinputstyle distinct
- % Margin to add to right of even pages, to left of odd pages.
--\newdimen \bindingoffset
--\newdimen \normaloffset
-+\newdimen\bindingoffset
-+\newdimen\normaloffset
- \newdimen\pagewidth \newdimen\pageheight
+ \def\xkey{\key}
+ \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+@@ -1368,11 +2575,18 @@
+ \else{\tclose{\kbdfont\look}}\fi
+ \else{\tclose{\kbdfont\look}}\fi}
-+% 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}
+-% For @url, @env, @command quotes seem unnecessary, so use \code.
+-\let\url=\code
++% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
++\let\indicateurl=\code
+ \let\env=\code
+ \let\command=\code
+
++% @clicksequence{File @click{} Open ...}
++\def\clicksequence#1{\begingroup #1\endgroup}
+
-+% @| 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).
-+%
-+\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
-+ }%
-+ }%
-+}
++% @clickstyle @arrow (by default)
++\parseargdef\clickstyle{\def\click{#1}}
++\def\click{\arrow}
+
- % 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.
-+% 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}%
--\ifx\eTeXversion\undefined
--\def\loggingall{\tracingcommands2 \tracingstats2
-- \tracingpages1 \tracingoutput1 \tracinglostchars1
-- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
-- \showboxbreadth\maxdimen\showboxdepth\maxdimen
--}%
--\else
--\def\loggingall{\tracingcommands3 \tracingstats2
-- \tracingpages1 \tracingoutput1 \tracinglostchars1
-- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
-- \tracingscantokens1 \tracingassigns1 \tracingifs1
-- \tracinggroups1 \tracingnesting2
-- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-+\def\loggingall{%
-+ \tracingstats2
-+ \tracingpages1
-+ \tracinglostchars2 % 2 gives us more in etex
-+ \tracingparagraphs1
-+ \tracingoutput1
-+ \tracingmacros2
-+ \tracingrestores1
-+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
-+ \ifx\eTeXversion\undefined\else % etex gives us more logging
-+ \tracingscantokens1
-+ \tracingifs1
-+ \tracinggroups1
-+ \tracingnesting2
-+ \tracingassigns1
-+ \fi
-+ \tracingcommands3 % 3 gives us more in etex
-+ \errorcontextlines16
- }%
--\fi
+ % @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
+@@ -1401,9 +2615,13 @@
+ \endlink
+ \endgroup}
+
++% @url synonym for @uref, since that's how everyone uses it.
++%
++\let\url=\uref
+
-+% 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.
+ % rms does not like angle brackets --karl, 17may97.
+ % So now @email is just like @uref, unless we are pdf.
+-%
+%
-+\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}
+ %\def\email#1{\angleleft{\tt #1}\angleright}
+ \ifpdf
+ \def\email#1{\doemail#1,,\finish}
+@@ -1442,12 +2660,140 @@
+ \def\sc#1{{\smallcaps#1}} % smallcaps font
+ \def\ii#1{{\it #1}} % italic font
- % For @cropmarks command.
- % Do @cropmarks to get crop marks.
-@@ -184,6 +278,50 @@
- \newdimen\cornerthick \cornerthick=.3pt
- \newdimen\topandbottommargin \topandbottommargin=.75in
+-% @acronym downcases the argument and prints in smallcaps.
+-\def\acronym#1{{\smallcaps \lowercase{#1}}}
++% @acronym for "FBI", "NATO", and the like.
++% We print this one point size smaller, since it's intended for
++% all-uppercase.
++%
++\def\acronym#1{\doacronym #1,,\finish}
++\def\doacronym#1,#2,#3\finish{%
++ {\selectfonts\lsize #1}%
++ \def\temp{#2}%
++ \ifx\temp\empty \else
++ \space ({\unsepspaces \ignorespaces \temp \unskip})%
++ \fi
++}
-+% 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.
+-% @pounds{} is a sterling sign.
++% @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
++}
++
++% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
-+% A mark contains a subexpression of the \ifcase ... \fi construct.
-+% \get*marks macros below extract the needed part using \ifcase.
+ \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
++}
++
++% Hacks for glyphs from the EC fonts similar to \euro. We don't
++% use \let for the aliases, because sometimes we redefine the original
++% macro, and the alias should reflect the redefinition.
++\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}}
+%
-+% 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
-+ }%
++\def\ecfont{%
++ % We can't distinguish serif/sanserif 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}%
++ \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
++ \thisecfont
+}
-+% \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
++
++% @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}}%
++ }$%
+}
-+\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{}
++% @textdegree - the normal degrees sign.
++%
++\def\textdegree{$^\circ$}
+
- % Main output routine.
- \chardef\PAGE = 255
- \output = {\onepageout{\pagecontents\PAGE}}
-@@ -201,7 +339,9 @@
- %
- % 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}%
- %
- {%
-@@ -209,11 +349,18 @@
- % take effect in \write's, yet the group defined by the \vbox ends
- % before the \shipout runs.
- %
-- \escapechar = `\\ % use backslash in output files.
- \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.
-+ % 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
-@@ -237,14 +384,12 @@
- \pagebody{#1}%
- \ifdim\ht\footlinebox > 0pt
- % Only leave this space if the footline is nonempty.
-- % (We lessened \vsize for it in \oddfootingxxx.)
-+ % (We lessened \vsize for it in \oddfootingyyy.)
- % The \baselineskip=24pt in plain's \makefootline has no effect.
-- \vskip 2\baselineskip
-+ \vskip 24pt
- \unvbox\footlinebox
- \fi
- %
-- \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
-- %
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
-@@ -262,7 +407,7 @@
- \egroup % \vbox from first cropmarks clause
++% 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\undefined
++\def\Orb{\mathhexbox20D}
++\fi
++
++% Quotes.
++\chardef\quotedblleft="5C
++\chardef\quotedblright=`\"
++\chardef\quoteleft=`\`
++\chardef\quoteright=`\'
++
+
+ \message{page headings,}
+
+@@ -1466,86 +2812,103 @@
+ \newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
+-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
++\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
+
+-\def\titlepage{\begingroup \parindent=0pt \textfonts
+- \let\subtitlerm=\tenrm
+- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
+- %
+- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
+- %
+- % Leave some space at the very top of the page.
+- \vglue\titlepagetopglue
+- %
+- % Now you can print the title using @title.
+- \def\title{\parsearg\titlezzz}%
+- \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
+- % print a rule at the page bottom also.
+- \finishedtitlepagefalse
+- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
+- % No rule at page bottom unless we print one at the top with @title.
+- \finishedtitlepagetrue
+- %
+- % Now you can put text using @subtitle.
+- \def\subtitle{\parsearg\subtitlezzz}%
+- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
+- %
+- % @author should come last, but may come many times.
+- \def\author{\parsearg\authorzzz}%
+- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
+- {\authorfont \leftline{##1}}}%
+- %
+- % 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{%
++\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
++ \finishtitlepage
\fi
- }% end of \shipout\vbox
-- }% end of group with \turnoffactive
-+ }% end of group with \indexdummies
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi
- }
-@@ -275,7 +420,7 @@
- % 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 \unvbox#1
-+\dimen@=\dp#1\relax \unvbox#1\relax
- \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
- \ifr at ggedbottom \kern-\dimen@ \vfil \fi}
- }
-@@ -295,143 +440,161 @@
- % the input line (except we remove a trailing comment). #1 should be a
- % macro which expects an ordinary undelimited TeX argument.
- %
--\def\parsearg#1{%
-- \let\next = #1%
-+\def\parsearg{\parseargusing{}}
-+\def\parseargusing#1#2{%
-+ \def\argtorun{#2}%
- \begingroup
- \obeylines
-- \futurelet\temp\parseargx
--}
--
--% If the next token is an obeyed space (from an @example environment or
--% the like), remove it and recurse. Otherwise, we're done.
--\def\parseargx{%
-- % \obeyedspace is defined far below, after the definition of \sepspaces.
-- \ifx\obeyedspace\temp
-- \expandafter\parseargdiscardspace
-- \else
-- \expandafter\parseargline
-- \fi
-+ \spaceisspace
-+ #1%
-+ \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+- \oldpage
+ \let\page = \oldpage
+- \hbox{}}%
+-% \def\page{\oldpage \hbox{}}
++ \page
++ \null
++ }%
}
--% Remove a single space (as the delimiter token to the macro call).
--{\obeyspaces %
-- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
--
- {\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
-- %
-- % First remove any @c comment, then any @comment.
-- % Result of each macro is put in \toks0.
-- \argremovec #1\c\relax %
-- \expandafter\argremovecomment \the\toks0 \comment\relax %
-- %
-- % Call the caller's macro, saved as \next in \parsearg.
-- \expandafter\next\expandafter{\the\toks0}%
-+ \argremovecomment #1\comment\ArgTerm%
- }%
+ \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
+- %
+- % 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
+- %
+- \ifpdf \pdfmakepagedesttrue \fi
+- %
+- \HEADINGSon
++ \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
}
--% Since all \c{,omment} does is throw away the argument, we can let TeX
--% do that for us. The \relax here is matched by the \relax in the call
--% in \parseargline; it could be more or less anything, its purpose is
--% just to delimit the argument to the \c.
--\def\argremovec#1\c#2\relax{\toks0 = {#1}}
--\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-+% 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}
-
--% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
--% @end itemize @c foo
--% will have two active spaces as part of the argument with the
--% `itemize'. Here we remove all active spaces from #1, and assign the
--% result to \toks0.
-+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
- %
--% This loses if there are any *other* active characters besides spaces
--% in the argument -- _ ^ +, for example -- since they get expanded.
--% Fortunately, Texinfo does not define any such commands. (If it ever
--% does, the catcode of the characters in questionwill have to be changed
--% here.) But this means we cannot call \removeactivespaces as part of
--% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
--% that \parsearg gets might well have any character at all in it.
-+% \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\removeactivespaces#1{%
-- \begingroup
-- \ignoreactivespaces
-- \edef\temp{#1}%
-- \global\toks0 = \expandafter{\temp}%
-- \endgroup
-+\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
+ \def\finishtitlepage{%
+- \vskip4pt \hrule height 2pt width \hsize
+- \vskip\titlepagebottomglue
+- \finishedtitlepagetrue
++ \vskip4pt \hrule height 2pt width \hsize
++ \vskip\titlepagebottomglue
++ \finishedtitlepagetrue
}
--% Change the active space to expand to nothing.
-+% 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.
- %
--\begingroup
-+% But first, we have to remove the trailing space token.
-+%
-+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
++%%% Macros to be used within @titlepage:
+
-+% \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
++\let\subtitlerm=\tenrm
++\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
-+\def\parseargdef#1{%
-+ \expandafter \doparseargdef \csname\string#1\endcsname #1%
++\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
++ \let\tt=\authortt}
++
++\parseargdef\title{%
++ \checkenv\titlepage
++ \leftline{\titlefonts\rm #1}
++ % print a rule at the page bottom also.
++ \finishedtitlepagefalse
++ \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
-+\def\doparseargdef#1#2{%
-+ \def#2{\parsearg#1}%
-+ \def#1##1%
++
++\parseargdef\subtitle{%
++ \checkenv\titlepage
++ {\subtitlefont \rightline{#1}}%
+}
+
-+% Several utility definitions with active space:
-+{
- \obeyspaces
-- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
--\endgroup
-+ \gdef\obeyedspace{ }
++% @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
++ {\authorfont \leftline{#1}}%
++ \fi
++}
+
-+ % 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}
-+}
+ %%% Set up page headings and footings.
+ \let\thispage=\folio
+@@ -1555,7 +2918,7 @@
+ \newtoks\evenfootline % footline on even pages
+ \newtoks\oddfootline % footline on odd pages
- \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+-% Now make Tex use those variables
++% Now make TeX use those variables
+ \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+ \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+@@ -1569,43 +2932,64 @@
+ % @evenfooting @thisfile||
+ % @oddfooting ||@thisfile
--%% These are used to keep @begin/@end levels from running away
--%% Call \inENV within environments (after a \begingroup)
--\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
--\def\ENVcheck{%
--\ifENV\errmessage{Still within an environment; press RETURN to continue}
--\endgroup\fi} % This is not perfect, but it should reduce lossage
-+% 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.)
+-\def\evenheading{\parsearg\evenheadingxxx}
+-\def\oddheading{\parsearg\oddheadingxxx}
+-\def\everyheading{\parsearg\everyheadingxxx}
--% @begin foo is the same as @foo, for now.
--\newhelp\EMsimple{Press RETURN to continue.}
+-\def\evenfooting{\parsearg\evenfootingxxx}
+-\def\oddfooting{\parsearg\oddfootingxxx}
+-\def\everyfooting{\parsearg\everyfootingxxx}
+-
+-{\catcode`\@=0 %
+-
+-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
+-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
++\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}}}
--\outer\def\begin{\parsearg\beginxxx}
-+% At run-time, environments start with this:
-+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
-+% initialize
-+\let\thisenv\empty
+-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
+-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
++\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}}}
--\def\beginxxx #1{%
--\expandafter\ifx\csname #1\endcsname\relax
--{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
--\csname #1\endcsname\fi}
-+% ... 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}}
+-\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
++\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
--% @end foo executes the definition of \Efoo.
--%
--\def\end{\parsearg\endxxx}
--\def\endxxx #1{%
-- \removeactivespaces{#1}%
-- \edef\endthing{\the\toks0}%
-- %
-- \expandafter\ifx\csname E\endthing\endcsname\relax
-- \expandafter\ifx\csname \endthing\endcsname\relax
-- % There's no \foo, i.e., no ``environment'' foo.
-- \errhelp = \EMsimple
-- \errmessage{Undefined command `@end \endthing'}%
-- \else
-- \unmatchedenderror\endthing
-- \fi
-+% Check whether we're in the right environment:
-+\def\checkenv#1{%
-+ \def\temp{#1}%
-+ \ifx\thisenv\temp
- \else
-- % Everything's ok; the right environment has been started.
-- \csname E\endthing\endcsname
-+ \badenverr
- \fi
- }
+-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
+-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
++\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}}}
--% There is an environment #1, but it hasn't been started. Give an error.
--%
--\def\unmatchedenderror#1{%
-+% Environment mismatch, #1 expected:
-+\def\badenverr{%
- \errhelp = \EMsimple
-- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-+ \errmessage{This command can appear only \inenvironment\temp,
-+ not \inenvironment\thisenv}%
-+}
-+\def\inenvironment#1{%
-+ \ifx#1\empty
-+ out of any environment%
-+ \else
-+ in environment \expandafter\string#1%
-+ \fi
+-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
+-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
++\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 -\baselineskip
+- \global\advance\vsize by -\baselineskip
++ \global\advance\pageheight by -12pt
++ \global\advance\vsize by -12pt
}
--% Define the control sequence \E#1 to give an unmatched @end error.
-+% @end foo executes the definition of \Efoo.
-+% But first, it executes a specialized version of \checkenv
+-\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
++\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
%
--\def\defineunmatchedend#1{%
-- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-+\parseargdef\end{%
-+ \if 1\csname iscond.#1\endcsname
-+ \else
-+ % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
-+ \expandafter\checkenv\csname#1\endcsname
-+ \csname E#1\endcsname
-+ \endgroup
-+ \fi
+-}% unbind the catcode of @.
++% 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.
+@@ -1619,7 +3003,7 @@
+
+ \def\headings #1 {\csname HEADINGS#1\endcsname}
+
+-\def\HEADINGSoff{
++\def\HEADINGSoff{%
+ \global\evenheadline={\hfil} \global\evenfootline={\hfil}
+ \global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+ \HEADINGSoff
+@@ -1628,7 +3012,7 @@
+ % 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{
++\def\HEADINGSdouble{%
+ \global\pageno=1
+ \global\evenfootline={\hfil}
+ \global\oddfootline={\hfil}
+@@ -1640,7 +3024,7 @@
+
+ % For single-sided printing, chapter title goes across top left of page,
+ % page number on top right.
+-\def\HEADINGSsingle{
++\def\HEADINGSsingle{%
+ \global\pageno=1
+ \global\evenfootline={\hfil}
+ \global\oddfootline={\hfil}
+@@ -1670,7 +3054,10 @@
}
-+\newhelp\EMsimple{Press RETURN to continue.}
+ % Subroutines used in generating headings
+-% Produces Day Month Year style of output.
++% This produces Day Month Year style of output.
++% Only define if not already defined, in case a txi-??.tex file has set
++% up a different format (e.g., txi-cs.tex does this).
++\ifx\today\undefined
+ \def\today{%
+ \number\day\space
+ \ifcase\month
+@@ -1679,16 +3066,16 @@
+ \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\settitlezzz}
+-\def\settitlezzz #1{\gdef\thistitle{#1}}
++\def\settitle{\parsearg{\gdef\thistitle}}
+
--% Single-spacing is done by various environments (specifically, in
--% \nonfillstart and \quotations).
--\newskip\singlespaceskip \singlespaceskip = 12.5pt
--\def\singlespace{%
-- % Why was this kern here? It messes up equalizing space above and below
-- % environments. --karl, 6may93
-- %{\advance \baselineskip by -\singlespaceskip
-- %\kern \baselineskip}%
-- \setleading \singlespaceskip
--}
+ \message{tables,}
+-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
++% Tables -- @table, @ftable, @vtable, @item(x).
- %% Simple single-character @ commands
+ % default indentation of table text
+ \newdimen\tableindent \tableindent=.8in
+@@ -1700,7 +3087,7 @@
+ % used internally for \itemindent minus \itemmargin
+ \newdimen\itemmax
-@@ -452,16 +615,22 @@
- \let\{=\mylbrace
- \let\}=\myrbrace
- \begingroup
-- % Definitions to produce actual \{ & \} command in an index.
-- \catcode`\{ = 12 \catcode`\} = 12
-+ % 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`\\ = 12
-- @gdef at lbracecmd[\{]%
-- @gdef at rbracecmd[\}]%
-- at endgroup
-+ \catcode`\! = 0 \catcode`\\ = \other
-+ !gdef!lbracecmd[\{]%
-+ !gdef!rbracecmd[\}]%
-+ !gdef!lbraceatcmd[@{]%
-+ !gdef!rbraceatcmd[@}]%
-+!endgroup
-+
-+% @comma{} to avoid , parsing problems.
-+\let\comma = ,
+-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
++% 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).
+@@ -1712,22 +3099,10 @@
+ \def\internalBitem{\smallbreak \parsearg\itemzzz}
+ \def\internalBitemx{\itemxpar \parsearg\itemzzz}
- % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
--% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.
-+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
- \let\, = \c
- \let\dotaccent = \.
- \def\ringaccent#1{{\accent23 #1}}
-@@ -469,22 +638,43 @@
- \let\ubaraccent = \b
- \let\udotaccent = \d
+-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
+-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
+-
+-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
+-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
+-
+-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
+- \itemzzz {#1}}
+-
+-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
+- \itemzzz {#1}}
+-
+ \def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+- \setbox0=\hbox{\itemfont{#1}}%
++ \setbox0=\hbox{\itemindicate{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+@@ -1751,10 +3126,14 @@
+ % \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. Unfortunately
+- % we can't prevent a possible page break at the following
+- % \baselineskip glue.
+- \nobreak
++ % 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
+@@ -1773,97 +3152,106 @@
+ \fi
+ }
--% Other special characters: @questiondown @exclamdown
--% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.
-+% 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}}}
+-\def\item{\errmessage{@item while not in a table}}
+-\def\itemx{\errmessage{@itemx while not in a table}}
+-\def\kitem{\errmessage{@kitem while not in a table}}
+-\def\kitemx{\errmessage{@kitemx while not in a table}}
+-\def\xitem{\errmessage{@xitem while not in a table}}
+-\def\xitemx{\errmessage{@xitemx while not in a table}}
+-
+-% Contains a kludge to get @end[description] to work.
+-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
++\def\item{\errmessage{@item while not in a list environment}}
++\def\itemx{\errmessage{@itemx while not in a list environment}}
- % Dotless i and dotless j, used for accents.
- \def\imacro{i}
- \def\jmacro{j}
- \def\dotless#1{%
- \def\temp{#1}%
-- \ifx\temp\imacro \ptexi
-- \else\ifx\temp\jmacro \j
-+ \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
+ % @table, @ftable, @vtable.
+-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
+-{\obeylines\obeyspaces%
+-\gdef\tablex #1^^M{%
+-\tabley\dontindex#1 \endtabley}}
+-
+-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
+-{\obeylines\obeyspaces%
+-\gdef\ftablex #1^^M{%
+-\tabley\fnitemindex#1 \endtabley
+-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
+-\let\Etable=\relax}}
+-
+-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
+-{\obeylines\obeyspaces%
+-\gdef\vtablex #1^^M{%
+-\tabley\vritemindex#1 \endtabley
+-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
+-\let\Etable=\relax}}
+-
+-\def\dontindex #1{}
+-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
+-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
+-
+-{\obeyspaces %
+-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
+-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
+-
+-\def\tablez #1#2#3#4#5#6{%
+-\aboveenvbreak %
+-\begingroup %
+-\def\Edescription{\Etable}% Necessary kludge.
+-\let\itemindex=#1%
+-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
+-\ifnum 0#4>0 \tableindent=#4\mil \fi %
+-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
+-\def\itemfont{#2}%
+-\itemmax=\tableindent %
+-\advance \itemmax by -\itemmargin %
+-\advance \leftskip by \tableindent %
+-\exdentamount=\tableindent
+-\parindent = 0pt
+-\parskip = \smallskipamount
+-\ifdim \parskip=0pt \parskip=2pt \fi%
+-\def\Etable{\endgraf\afterenvbreak\endgroup}%
+-\let\item = \internalBitem %
+-\let\itemx = \internalBitemx %
+-\let\kitem = \internalBkitem %
+-\let\kitemx = \internalBkitemx %
+-\let\xitem = \internalBxitem %
+-\let\xitemx = \internalBxitemx %
++\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
}
-
-+% 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{\selectfonts\lllsize A}\vss}}%
-+ \kern-.15em
-+ \TeX
++\def\tabley#1{%
++ {%
++ \makevalueexpandable
++ \edef\temp{\noexpand\tablez #1\space\space\space}%
++ \expandafter
++ }\temp \endtablez
+}
-+
- % 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
-@@ -503,14 +693,32 @@
- % @* forces a line break.
- \def\*{\hfil\break\hbox{}\ignorespaces}
++\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
-+% @/ allows a line break.
-+\let\/=\allowbreak
-+
- % @. is an end-of-sentence period.
--\def\.{.\spacefactor=3000 }
-+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+ % This is the counter used by @enumerate, which is really @itemize
- % @! is an end-of-sentence bang.
--\def\!{!\spacefactor=3000 }
-+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+ \newcount \itemno
- % @? is an end-of-sentence query.
--\def\?{?\spacefactor=3000 }
-+\def\?{?\spacefactor=\endofsentencespacefactor\space}
-+
-+% @frenchspacing on|off says whether to put extra space after punctuation.
-+%
-+\def\onword{on}
-+\def\offword{off}
+-\def\itemize{\parsearg\itemizezzz}
++\envdef\itemize{\parsearg\doitemize}
+
+-\def\itemizezzz #1{%
+- \begingroup % ended by the @end itemize
+- \itemizey {#1}{\Eitemize}
++\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
++ \def\itemcontents{#1}%
++ % @itemize with no arg is equivalent to @itemize @bullet.
++ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
++ \let\item=\itemizeitem
+ }
+
+-\def\itemizey #1#2{%
+-\aboveenvbreak %
+-\itemmax=\itemindent %
+-\advance \itemmax by -\itemmargin %
+-\advance \leftskip by \itemindent %
+-\exdentamount=\itemindent
+-\parindent = 0pt %
+-\parskip = \smallskipamount %
+-\ifdim \parskip=0pt \parskip=2pt \fi%
+-\def#2{\endgraf\afterenvbreak\endgroup}%
+-\def\itemcontents{#1}%
+-\let\item=\itemizeitem}
+-
+-% Set sfcode to normal for the chars that usually have another value.
+-% These are `.?!:;,'
+-\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
+- \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
++% Definition of @item while inside @itemize and @enumerate.
+%
-+\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
++\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
+}
- % @w prevents a word break. Without the \leavevmode, @w at the
- % beginning of a paragraph, when TeX is still in vertical mode, would
-@@ -525,47 +733,24 @@
- % therefore, no glue is inserted, and the space between the headline and
- % the text is small, which looks bad.
+ % \splitoff TOKENS\endmark defines \first to be the first token in
+ % TOKENS, and \rest to be the remainder.
+@@ -1874,11 +3262,8 @@
+ % or number, to specify the first label in the enumerated list. No
+ % argument is the same as `1'.
%
--\def\group{\begingroup
-- \ifnum\catcode13=\active \else
-+% 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
- %
-- % The \vtop we start below 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. (See p.82 of
-- % the TeXbook.) Thus, space below is not quite equal to space
-- % above. But it's pretty close.
-- \def\Egroup{%
-- \egroup % End the \vtop.
-- \endgroup % End the \group.
-- }%
+-\def\enumerate{\parsearg\enumeratezzz}
+-\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
++\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
+ \def\enumeratey #1 #2\endenumeratey{%
+- \begingroup % ended by the @end enumerate
- %
-- \vtop\bgroup
-- % We have to put a strut on the last line in case the @group is in
-- % the midst of an example, rather than completely enclosing it.
-- % Otherwise, the interline space between the last line of the group
-- % and the first line afterwards is too small. But we can't put the
-- % strut in \Egroup, since there it would be on a line by itself.
-- % Hence this just inserts a strut at the beginning of each line.
-- \everypar = {\strut}%
-- %
-- % Since we have a strut on every line, we don't need any of TeX's
-- % normal interline spacing.
-- \offinterlineskip
-- %
-- % OK, but now we have to do something about blank
-- % lines in the input in @example-like environments, which normally
-- % just turn into \lisppar, which will insert no space now that we've
-- % turned off the interline space. Simplest is to make them be an
-- % empty paragraph.
-- \ifx\par\lisppar
-- \edef\par{\leavevmode \par}%
-- %
-- % Reset ^^M's definition to new definition of \par.
-- \obeylines
-- \fi
-- %
-+ \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
-@@ -575,6 +760,32 @@
- \comment
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+@@ -1949,13 +3334,13 @@
+ }%
}
+
+-% Call itemizey, adding a period to the first argument and supplying the
++% 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.
%
-+% 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 ...'.
- %
-@@ -587,10 +798,8 @@
+ \def\startenumeration#1{%
+ \advance\itemno by -1
+- \itemizey{#1.}\Eenumerate\flushcr
++ \doitemize{#1.}\flushcr
+ }
- \newdimen\mil \mil=0.001in
+ % @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+@@ -1966,16 +3351,6 @@
+ \def\Ealphaenumerate{\Eenumerate}
+ \def\Ecapsenumerate{\Eenumerate}
--\def\need{\parsearg\needx}
+-% Definition of @item while inside @itemize.
-
- % Old definition--didn't work.
--%\def\needx #1{\par %
-+%\parseargdef\need{\par %
- %% This method tries to make TeX break the page naturally
- %% if the depth of the box does not fit.
- %{\baselineskip=0pt%
-@@ -598,7 +807,7 @@
- %\prevdepth=-1000pt
- %}}
+-\def\itemizeitem{%
+-\advance\itemno by 1
+-{\let\par=\endgraf \smallbreak}%
+-\ifhmode \errmessage{In hmode at itemizeitem}\fi
+-{\parskip=0in \hskip 0pt
+-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
+-\vadjust{\penalty 1200}}%
+-\flushcr}
--\def\needx#1{%
-+\parseargdef\need{%
- % Ensure vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
-@@ -637,37 +846,11 @@
- \fi
- }
+ % @multitable macros
+ % Amy Hendrickson, 8/18/94, 3/6/96
+@@ -2002,24 +3377,14 @@
+ % @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+ % @item ...
+ % using the widest term desired in each column.
+-%
+-% For those who want to use more than one line's worth of words in
+-% the preamble, break the line within one argument and it
+-% will parse correctly, i.e.,
+-%
+-% @multitable {Column 1 template} {Column 2 template} {Column 3
+-% template}
+-% Not:
+-% @multitable {Column 1 template} {Column 2 template}
+-% {Column 3 template}
--% @br forces paragraph break
-+% @br forces paragraph break (and is undocumented).
+ % 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.
- \let\br = \par
+-% @item, @tab, @multitable or @end multitable do not need to be on their
+-% own lines, but it will not hurt if they are.
++% @item, @tab do not need to be on their own lines, but it will not hurt
++% if they are.
--% @dots{} output an ellipsis using the current font.
--% We do .5em per period so that it has the same spacing in a typewriter
--% font as three actual period characters.
--%
--\def\dots{%
-- \leavevmode
-- \hbox to 1.5em{%
-- \hskip 0pt plus 0.25fil minus 0.25fil
-- .\hss.\hss.%
-- \hskip 0pt plus 0.5fil minus 0.5fil
-- }%
--}
--
--% @enddots{} is an end-of-sentence ellipsis.
--%
--\def\enddots{%
-- \leavevmode
-- \hbox to 2em{%
-- \hskip 0pt plus 0.25fil minus 0.25fil
-- .\hss.\hss.\hss.%
-- \hskip 0pt plus 0.5fil minus 0.5fil
-- }%
-- \spacefactor=3000
--}
--
--
--% @page forces the start of a new page
-+% @page forces the start of a new page.
- %
- \def\page{\par\vfill\supereject}
+ % Sample multitable:
-@@ -679,57 +862,131 @@
- \newskip\exdentamount
+@@ -2063,13 +3428,12 @@
+ \def\xcolumnfractions{\columnfractions}
+ \newif\ifsetpercent
- % This defn is used inside fill environments such as @defun.
--\def\exdent{\parsearg\exdentyyy}
--\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+-% #1 is the part of the @columnfraction before the decimal point, which
+-% is presumably either 0 or the empty string (but we don't check, we
+-% just throw it away). #2 is the decimal part, which we use as the
+-% percent of \hsize for this column.
+-\def\pickupwholefraction#1.#2 {%
++% #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{.#2\hsize}%
++ \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+ \setuptable
+ }
- % This defn is used inside nofill environments such as @example.
--\def\nofillexdent{\parsearg\nofillexdentyyy}
--\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
--\leftline{\hskip\leftskip{\rm#1}}}}
--
--% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
-+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
-+ \leftline{\hskip\leftskip{\rm#1}}}}
+@@ -2086,8 +3450,8 @@
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+- \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator;
+- % typically that is always in the input, anyway.
++ \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
+@@ -2102,18 +3466,33 @@
+ \go
+ }
--\def\inmargin#1{%
--\strut\vadjust{\nobreak\kern-\strutdepth
-- \vtop to \strutdepth{\baselineskip\strutdepth\vss
-- \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
-+% @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'.
-+%
- \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}
+-% This used to have \hskip1sp. But then the space in a template line is
+-% not enough. That is bad. So let's go back to just & until we
+-% encounter the problem it was intended to solve again.
+-% --karl, nathan at acm.org, 20apr99.
+-\def\tab{&}
++% multitable-only commands.
+%
-+% @inmargin{TEXT [, RIGHT-TEXT]}
-+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-+% else use TEXT for both).
++% @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. Note that \everycr resets \everytab.
++\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
-+\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
-+}
++% 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 encounter the problem it was intended to solve again.
++% --karl, nathan at acm.org, 20apr99.
++\def\tab{\checkenv\multitable &\the\everytab}%
--%\hbox{{\rm#1}}\hfil\break}}
--
--% @include file insert text of that file as input.
--% Allow normal characters that we make active in the argument (a file name).
--\def\include{\begingroup
-- \catcode`\\=12
-- \catcode`~=12
-- \catcode`^=12
-- \catcode`_=12
-- \catcode`|=12
-- \catcode`<=12
-- \catcode`>=12
-- \catcode`+=12
-- \parsearg\includezzz}
--% Restore active chars for included file.
--\def\includezzz#1{\endgroup\begingroup
-- % Read the included file in a group so nested @include's work.
-+% @include FILE -- \input text of FILE.
+ % @multitable ... @end multitable definitions:
+ %
+-\def\multitable{\parsearg\dotable}
+-\def\dotable#1{\bgroup
++\newtoks\everytab % insert after every tab.
+%
-+\def\include{\parseargusing\filenamecatcodes\includezzz}
-+\def\includezzz#1{%
-+ \pushthisfilestack
- \def\thisfile{#1}%
-- \input\thisfile
--\endgroup}
-+ {%
-+ \makevalueexpandable % we want to expand any @value in FILE.
-+ \turnoffactive % and allow special characters in the expansion
-+ \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
-+}
-
--\def\thisfile{}
-+\def\pushthisfilestack{%
-+ \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
-+}
-+\def\pushthisfilestackX{%
-+ \expandafter\pushthisfilestackY\thisfile\StackTerm
++\envdef\multitable{%
+ \vskip\parskip
+- \let\item\crcr
++ \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
+@@ -2121,81 +3500,93 @@
+ \parindent=\multitableparindent
+ \overfullrule=0pt
+ \global\colcount=0
+- \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}%
+ %
++ \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\pushthisfilestackY #1\StackTerm #2\StackTerm {%
-+ \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
++\def\domultitable#1{%
+ % To parse everything between @multitable and @item:
+ \setuptable#1 \endsetuptable
+ %
+- % \everycr will reset column counter, \colcount, at the end of
+- % each line. Every column entry will cause \colcount to advance by one.
+- % The table preamble
+- % looks at the current \colcount to find the correct column width.
+- \everycr{\noalign{%
+- %
+- % \filbreak%% keeps underfull box messages off when table breaks over pages.
+- % 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.
+- \global\colcount=0\relax}}%
+- %
+ % 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\relax
+- \multistrut\vtop{\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
++ \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
+ }
--% @center line outputs that line, centered
-+\def\popthisfilestack{\errthisfilestackempty}
-+\def\errthisfilestackempty{\errmessage{Internal error:
-+ the stack of filenames is empty.}}
+-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
+-% If so, do nothing. If not, give it an appropriate dimension based on
+-% current baselineskip.
++\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
+-%% strut to put in table in case some entry doesn't have descenders,
+-%% to keep lines equally spaced
+-\let\multistrut = \strut
+-\else
+-%% FIXME: what is \box0 supposed to be?
+-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
+-width0pt\relax} \fi
++\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.
+@@ -2212,282 +3603,178 @@
--\def\center{\parsearg\centerzzz}
--\def\centerzzz #1{{\advance\hsize by -\leftskip
--\advance\hsize by -\rightskip
--\centerline{#1}}}
-+\def\thisfile{}
-+
-+% @center line
-+% outputs that line, centered.
-+%
-+\parseargdef\center{%
-+ \ifhmode
-+ \let\next\centerH
-+ \else
-+ \let\next\centerV
-+ \fi
-+ \next{\hfil \ignorespaces#1\unskip \hfil}%
-+}
-+\def\centerH#1{%
-+ {%
-+ \hfil\break
-+ \advance\hsize by -\leftskip
-+ \advance\hsize by -\rightskip
-+ \line{#1}%
-+ \break
-+ }%
-+}
-+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
- % @sp n outputs n lines of vertical space
+ \message{conditionals,}
+-% Prevent errors for section commands.
+-% Used in @ignore and in failing conditionals.
+-\def\ignoresections{%
+- \let\chapter=\relax
+- \let\unnumbered=\relax
+- \let\top=\relax
+- \let\unnumberedsec=\relax
+- \let\unnumberedsection=\relax
+- \let\unnumberedsubsec=\relax
+- \let\unnumberedsubsection=\relax
+- \let\unnumberedsubsubsec=\relax
+- \let\unnumberedsubsubsection=\relax
+- \let\section=\relax
+- \let\subsec=\relax
+- \let\subsubsec=\relax
+- \let\subsection=\relax
+- \let\subsubsection=\relax
+- \let\appendix=\relax
+- \let\appendixsec=\relax
+- \let\appendixsection=\relax
+- \let\appendixsubsec=\relax
+- \let\appendixsubsection=\relax
+- \let\appendixsubsubsec=\relax
+- \let\appendixsubsubsection=\relax
+- \let\contents=\relax
+- \let\smallbook=\relax
+- \let\titlepage=\relax
+-}
--\def\sp{\parsearg\spxxx}
--\def\spxxx #1{\vskip #1\baselineskip}
-+\parseargdef\sp{\vskip #1\baselineskip}
+-% Used in nested conditionals, where we have to parse the Texinfo source
+-% and so want to turn off most commands, in case they are used
+-% incorrectly.
++% @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\ignoremorecommands{%
+- \let\defcodeindex = \relax
+- \let\defcv = \relax
+- \let\deffn = \relax
+- \let\deffnx = \relax
+- \let\defindex = \relax
+- \let\defivar = \relax
+- \let\defmac = \relax
+- \let\defmethod = \relax
+- \let\defop = \relax
+- \let\defopt = \relax
+- \let\defspec = \relax
+- \let\deftp = \relax
+- \let\deftypefn = \relax
+- \let\deftypefun = \relax
+- \let\deftypeivar = \relax
+- \let\deftypeop = \relax
+- \let\deftypevar = \relax
+- \let\deftypevr = \relax
+- \let\defun = \relax
+- \let\defvar = \relax
+- \let\defvr = \relax
+- \let\ref = \relax
+- \let\xref = \relax
+- \let\printindex = \relax
+- \let\pxref = \relax
+- \let\settitle = \relax
+- \let\setchapternewpage = \relax
+- \let\setchapterstyle = \relax
+- \let\everyheading = \relax
+- \let\evenheading = \relax
+- \let\oddheading = \relax
+- \let\everyfooting = \relax
+- \let\evenfooting = \relax
+- \let\oddfooting = \relax
+- \let\headings = \relax
+- \let\include = \relax
+- \let\lowersections = \relax
+- \let\down = \relax
+- \let\raisesections = \relax
+- \let\up = \relax
+- \let\set = \relax
+- \let\clear = \relax
+- \let\item = \relax
++\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}
- % @comment ...line which is ignored...
- % @c is the same as @comment
-@@ -744,13 +1001,13 @@
+-% Ignore @ignore ... @end ignore.
+-%
+-\def\ignore{\doignore{ignore}}
+-
+-% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
++% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+ %
+-\def\ifinfo{\doignore{ifinfo}}
++\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\html{\doignore{html}}
++\def\ifplaintext{\doignore{ifplaintext}}
++\def\ifxml{\doignore{ifxml}}
++\def\ignore{\doignore{ignore}}
+ \def\menu{\doignore{menu}}
+-\def\direntry{\doignore{direntry}}
+-
+-% @dircategory CATEGORY -- specify a category of the dir file
+-% which this file should belong to. Ignore this in TeX.
+-\let\dircategory = \comment
++\def\xml{\doignore{xml}}
- % @paragraphindent NCHARS
- % We'll use ems for NCHARS, close enough.
--% We cannot implement @paragraphindent asis, though.
--%
-+% 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}
+-% Ignore text until a line `@end #1'.
++% Ignore text until a line `@end #1', keeping track of nested conditionals.
%
--\def\paragraphindent{\parsearg\doparagraphindent}
--\def\doparagraphindent#1{%
-+\parseargdef\paragraphindent{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
-@@ -767,8 +1024,7 @@
- % 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.
--\def\exampleindent{\parsearg\doexampleindent}
--\def\doexampleindent#1{%
-+\parseargdef\exampleindent{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
-@@ -780,26 +1036,159 @@
- \fi
++% A count to remember the depth of nesting.
++\newcount\doignorecount
++
+ \def\doignore#1{\begingroup
+- % Don't complain about control sequences we have declared \outer.
+- \ignoresections
+- %
+- % Define a command to swallow text until we reach `@end #1'.
+- % This @ is a catcode 12 token (that is the normal catcode of @ in
+- % this texinfo.tex file). We change the catcode of @ below to match.
+- \long\def\doignoretext##1 at end #1{\enddoignore}%
++ % Scan in ``verbatim'' mode:
++ \obeylines
++ \catcode`\@ = \other
++ \catcode`\{ = \other
++ \catcode`\} = \other
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+- \catcode32 = 10
+- %
+- % Ignore braces, too, so mismatched braces don't cause trouble.
+- \catcode`\{ = 9
+- \catcode`\} = 9
+- %
+- % We must not have @c interpreted as a control sequence.
+- \catcode`\@ = 12
++ \spaceisspace
+ %
+- % Make the letter c a comment character so that the rest of the line
+- % will be ignored. This way, the document can have (for example)
+- % @c @end ifinfo
+- % and the @end ifinfo will be properly ignored.
+- % (We've just changed @ to catcode 12.)
+- \catcode`\c = 14
++ % Count number of #1's that we've seen.
++ \doignorecount = 0
+ %
+- % And now expand that command.
+- \doignoretext
+-}
+-
+-% What we do to finish off ignored text.
+-%
+-\def\enddoignore{\endgroup\ignorespaces}%
+-
+-\newif\ifwarnedobs\warnedobsfalse
+-\def\obstexwarn{%
+- \ifwarnedobs\relax\else
+- % We need to warn folks that they may have trouble with TeX 3.0.
+- % This uses \immediate\write16 rather than \message to get newlines.
+- \immediate\write16{}
+- \immediate\write16{WARNING: for users of Unix TeX 3.0!}
+- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
+- \immediate\write16{If you are running another version of TeX, relax.}
+- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
+- \immediate\write16{ Then upgrade your TeX installation if you can.}
+- \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
+- \immediate\write16{If you are stuck with version 3.0, run the}
+- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
+- \immediate\write16{ to use a workaround.}
+- \immediate\write16{}
+- \global\warnedobstrue
+- \fi
++ % Swallow text until we reach the matching `@end #1'.
++ \dodoignore{#1}%
}
-+% @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
+-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
+-% workaround (which requires the file ``dummy.tfm'' to be installed),
+-% uncomment the following line:
+-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
+-
+-% Ignore text, except that we keep track of conditional commands for
+-% purposes of nesting, up to an `@end #1' command.
+-%
+-\def\nestedignore#1{%
+- \obstexwarn
+- % We must actually expand the ignored text to look for the @end
+- % command, so that nested ignore constructs work. Thus, we put the
+- % text into a \vbox and then do nothing with the result. To minimize
+- % the change of memory overflow, we follow the approach outlined on
+- % page 401 of the TeXbook: make the current font be a dummy font.
++{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
++ \obeylines %
+ %
+- \setbox0 = \vbox\bgroup
+- % Don't complain about control sequences we have declared \outer.
+- \ignoresections
+- %
+- % Define `@end #1' to end the box, which will in turn undefine the
+- % @end command again.
+- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
+- %
+- % We are going to be parsing Texinfo commands. Most cause no
+- % trouble when they are used incorrectly, but some commands do
+- % complicated argument parsing or otherwise get confused, so we
+- % undefine them.
+- %
+- % We can't do anything about stray @-signs, unfortunately;
+- % they'll produce `undefined control sequence' errors.
+- \ignoremorecommands
+- %
+- % Set the current font to be \nullfont, a TeX primitive, and define
+- % all the font commands to also use \nullfont. We don't use
+- % dummy.tfm, as suggested in the TeXbook, because not all sites
+- % might have that installed. Therefore, math mode will still
+- % produce output, but that should be an extremely small amount of
+- % stuff compared to the main input.
+- %
+- \nullfont
+- \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
+- \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
+- \let\tensf=\nullfont
+- % Similarly for index fonts (mostly for their use in smallexample).
+- \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
+- \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
+- \let\smallsf=\nullfont
+- %
+- % Don't complain when characters are missing from the fonts.
+- \tracinglostchars = 0
+- %
+- % Don't bother to do space factor calculations.
+- \frenchspacing
++ \gdef\dodoignore#1{%
++ % #1 contains the command name as a string, e.g., `ifinfo'.
+ %
+- % Don't report underfull hboxes.
+- \hbadness = 10000
++ % Define a command to find the next `@end #1'.
++ \long\def\doignoretext##1^^M at end #1{%
++ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
+- % Do minimal line-breaking.
+- \pretolerance = 10000
++ % 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_}%
+ %
+- % Do not execute instructions in @tex
+- \def\tex{\doignore{tex}}%
+- % Do not execute macro definitions.
+- % `c' is a comment character, so the word `macro' will get cut off.
+- \def\macro{\doignore{ma}}%
++ % And now expand that command.
++ \doignoretext ^^M%
++ }%
+}
+
-+% 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
-+ }%
++\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.
+}
+
-+\gdef\restorefirstparagraphindent{%
-+ \global \let \indent = \ptexindent
-+ \global \let \noindent = \ptexnoindent
-+ \global \everypar = {}%
++% 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}%
+}
+
+
- % @asis just yields its argument. Used with @table, for example.
+ % @set VAR sets the variable VAR to an empty value.
+ % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
%
- \def\asis#1{#1}
+ % 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. Make sure the catcode of space is correct to avoid
+-% losing inside @example, for instance.
++% didn't need it.
++% We rely on the fact that \parsearg sets \catcode`\ =10.
+ %
+-\def\set{\begingroup\catcode` =10
+- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
+- \parsearg\setxxx}
+-\def\setxxx#1{\setyyy#1 \endsetyyy}
++\parseargdef\set{\setyyy#1 \endsetyyy}
+ \def\setyyy#1 #2\endsetyyy{%
+- \def\temp{#2}%
+- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
+- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
+- \fi
+- \endgroup
++ {%
++ \makevalueexpandable
++ \def\temp{#2}%
++ \edef\next{\gdef\makecsname{SET#1}}%
++ \ifx\temp\empty
++ \next{}%
++ \else
++ \setzzz#2\endsetzzz
++ \fi
++ }%
+ }
+-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
+-% \next or other control sequences that we've defined might get us into
+-% an infinite loop. Consider `@set foo @cite{bar}'.
+-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
++% Remove the trailing space \setxxx inserted.
++\def\setzzz#1 \endsetzzz{\next{#1}}
--% @math means output in math mode.
--% We don't use $'s directly in the definition of \math because control
--% sequences like \math are expanded when the toc file is written. Then,
--% we read the toc file back, the $'s will be normal characters (as they
--% should be, according to the definition of Texinfo). So we must use a
--% control sequence to switch into and out of math mode.
-+% @math outputs its argument in math mode.
+ % @clear VAR clears (i.e., unsets) the variable VAR.
%
--% This isn't quite enough for @math to work properly in indices, but it
--% seems unlikely it will ever be needed there.
-+% 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}%
-+ }
+-\def\clear{\parsearg\clearxxx}
+-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
++\parseargdef\clear{%
++ {%
++ \makevalueexpandable
++ \global\expandafter\let\csname SET#1\endcsname=\relax
++ }%
+}
-+% Another complication: we want \\ (and @\) to output a \ character.
-+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-+% this is not advertised and we don't care. Texinfo does not
-+% otherwise define @\.
+
+ % @value{foo} gets the text saved in variable foo.
++\def\value{\begingroup\makevalueexpandable\valuexxx}
++\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+ {
+- \catcode`\_ = \active
++ \catcode`\- = \active \catcode`\_ = \active
+ %
+- % We might end up with active _ or - characters in the argument if
+- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
+- % such active characters to their normal equivalents.
+- \gdef\value{\begingroup
+- \catcode`\-=12 \catcode`\_=12
+- \indexbreaks \let_\normalunderscore
+- \valuexxx}
++ \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-\realdash \let_\normalunderscore
++ }
+ }
+-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+
+ % We have this subroutine so that we can handle at least some @value's
+-% properly in indexes (we \let\value to this in \indexdummies). Ones
+-% whose names contain - or _ still won't work, but we can't do anything
+-% about that. The command has to be fully expandable, 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).
++% 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).
%
--\let\implicitmath = $
--\def\math#1{\implicitmath #1\implicitmath}
-+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+ \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
+@@ -2496,66 +3783,36 @@
+ % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+ % with @set.
+ %
+-\def\ifset{\parsearg\ifsetxxx}
+-\def\ifsetxxx #1{%
+- \expandafter\ifx\csname SET#1\endcsname\relax
+- \expandafter\ifsetfail
+- \else
+- \expandafter\ifsetsucceed
+- \fi
++% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
-+\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.
++\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\ifsetsucceed{\conditionalsucceed{ifset}}
+-\def\ifsetfail{\nestedignore{ifset}}
+-\defineunmatchedend{ifset}
++\def\ifsetfail{\doignore{ifset}}
+
+ % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+ % defined with @set, or has been undefined with @clear.
+ %
+-\def\ifclear{\parsearg\ifclearxxx}
+-\def\ifclearxxx #1{%
+- \expandafter\ifx\csname SET#1\endcsname\relax
+- \expandafter\ifclearsucceed
+- \else
+- \expandafter\ifclearfail
+- \fi
+-}
+-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
+-\def\ifclearfail{\nestedignore{ifclear}}
+-\defineunmatchedend{ifclear}
+-
+-% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
+-% following, through the first @end iftex (etc.). Make `@end iftex'
+-% (etc.) valid only after an @iftex.
+-%
+-\def\iftex{\conditionalsucceed{iftex}}
+-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
+-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
+-\defineunmatchedend{iftex}
+-\defineunmatchedend{ifnothtml}
+-\defineunmatchedend{ifnotinfo}
+-
+-% We can't just want to start a group at @iftex (for example) and end it
+-% at @end iftex, since then @set commands inside the conditional have no
+-% effect (they'd get reverted at the end of the group). So we must
+-% define \Eiftex to redefine itself to be its previous value. (We can't
+-% just define it to fail again with an ``unmatched end'' error, since
+-% the @ifset might be nested.)
++% 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.
+ %
+-\def\conditionalsucceed#1{%
+- \edef\temp{%
+- % Remember the current value of \E#1.
+- \let\nece{prevE#1} = \nece{E#1}%
+- %
+- % At the `@end #1', redefine \E#1 to be its previous value.
+- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
+- }%
+- \temp
+-}
++\makecond{ifclear}
++\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
++\def\ifclearfail{\doignore{ifclear}}
+
+-% We need to expand lots of \csname's, but we don't want to expand the
+-% control sequences after we've constructed them.
+-%
+-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
++% @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
+@@ -2565,9 +3822,8 @@
+ % Index generation facilities
+
+ % Define \newwrite to be identical to plain tex's \newwrite
+-% except not \outer, so it can be used within \newindex.
+-{\catcode`\@=11
+-\gdef\newwrite{\alloc at 7\write\chardef\sixt@@n}}
++% except not \outer, so it can be used within macros and \if's.
++\edef\newwrite{\makecsname{ptexnewwrite}}
--% @bullet and @minus need the same treatment as @math, just above.
--\def\bullet{\implicitmath\ptexbullet\implicitmath}
--\def\minus{\implicitmath-\implicitmath}
-+% 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
-+ \gdef\mathactive{%
-+ \let^ = \ptexhat
-+ \let< = \ptexless
-+ \let> = \ptexgtr
-+ \let+ = \ptexplus
-+ }
-+}
-+
-+% 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.
+ % \newindex {foo} defines an index named foo.
+ % It automatically defines \fooindex such that
+@@ -2587,42 +3843,48 @@
+ }
+
+ % @defindex foo == \newindex{foo}
+-
+%
-+\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\defindex{\parsearg\newindex}
+
+ % Define @defcodeindex, like @defindex except put all entries in @code.
+-
+%
-+\def\enddots{%
-+ \dots
-+ \spacefactor=\endofsentencespacefactor
-+}
-+
-+% @comma{} is so commas can be inserted into text without messing up
-+% Texinfo's parsing.
++\def\defcodeindex{\parsearg\newcodeindex}
+%
-+\let\comma = ,
-
- % @refill is a no-op.
- \let\refill=\relax
-@@ -815,20 +1204,20 @@
- % 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
-- \readauxfile
-+ \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
-- \fixbackslash % Turn off hack to swallow `\input texinfo'.
-- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
-+ \let\setfilename=\comment % Ignore extra @setfilename cmds.
- %
- % If texinfo.cnf is present on the system, read it.
- % Useful for site-wide @afourpaper, etc.
-- % Just to be on the safe side, close the input stream before the \input.
- \openin 1 texinfo.cnf
-- \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
-- \closein1
-- \temp
-+ \ifeof 1 \else \input texinfo.cnf \fi
-+ \closein 1
- %
- \comment % Ignore the actual filename.
+ \def\newcodeindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{%
+- \noexpand\docodeindex{#1}}
++ \noexpand\docodeindex{#1}}%
}
-@@ -864,111 +1253,294 @@
- \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 \undefined,
-+% borrowed from ifpdf.sty.
- \ifx\pdfoutput\undefined
-- \pdffalse
-- \let\pdfmkdest = \gobble
-- \let\pdfurl = \gobble
-- \let\endlink = \relax
-- \let\linkcolor = \relax
-- \let\pdfmakeoutlines = \relax
- \else
-- \pdftrue
-- \pdfoutput = 1
-- \input pdfcolor
-+ \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.
-+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-+% (and related messages, the final outcome is that it is up to the TeX
-+% user to double the backslashes and otherwise make the string valid, so
-+% that's what we do).
-+
-+% double active backslashes.
-+%
-+{\catcode`\@=0 \catcode`\\=\active
-+ @gdef at activebackslashdouble{%
-+ @catcode`@\=@active
-+ @let\=@doublebackslash}
-+}
-+
-+% To handle parens, we must adopt a different approach, since parens are
-+% not active characters. hyperref.dtx (which has the same problem as
-+% us) handles it with this amazing macro to replace tokens, with minor
-+% changes for Texinfo. It is included here under the GPL by permission
-+% from the author, Heiko Oberdiek.
-+%
-+% #1 is the tokens to replace.
-+% #2 is the replacement.
-+% #3 is the control sequence with the string.
-+%
-+\def\HyPsdSubst#1#2#3{%
-+ \def\HyPsdReplace##1#1##2\END{%
-+ ##1%
-+ \ifx\\##2\\%
-+ \else
-+ #2%
-+ \HyReturnAfterFi{%
-+ \HyPsdReplace##2\END
-+ }%
-+ \fi
-+ }%
-+ \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-+}
-+\long\def\HyReturnAfterFi#1\fi{\fi#1}
-+
-+% #1 is a control sequence in which to do the replacements.
-+\def\backslashparens#1{%
-+ \xdef#1{#1}% redefine it as its expansion; the definition is simply
-+ % \lastnode when called from \setref -> \pdfmkdest.
-+ \HyPsdSubst{(}{\realbackslash(}{#1}%
-+ \HyPsdSubst{)}{\realbackslash)}{#1}%
-+}
-+
-+\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.)}
+-\def\defcodeindex{\parsearg\newcodeindex}
+
+ % @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.
+-% The \closeout helps reduce unnecessary open files; the limit on the
+-% Acorn RISC OS is a mere 16 files.
+-\def\synindex#1 #2 {%
+- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+- \expandafter\closeout\csname#1indfile\endcsname
+- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
+- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
+- \noexpand\doindex{#2}}%
+-}
+-
++%
+ % @syncodeindex foo bar similar, but put all entries made for index foo
+ % inside @code.
+-\def\syncodeindex#1 #2 {%
+- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+- \expandafter\closeout\csname#1indfile\endcsname
+- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
+- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
+- \noexpand\docodeindex{#2}}%
++%
++\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
++\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
-+\ifpdf
-+ %
-+ % Color manipulation macros based on pdfcolor.tex.
-+ \def\cmykDarkRed{0.28 1 1 0.35}
-+ \def\cmykBlack{0 0 0 1}
-+ %
-+ \def\pdfsetcolor#1{\pdfliteral{#1 k}}
-+ % 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{\cmykBlack}
-+ \pdfsetcolor{\maincolor}
-+ \edef\thiscolor{\maincolor}
-+ \def\lastcolordefs{}
-+ %
-+ \def\makefootline{%
-+ \baselineskip24pt
-+ \line{\pdfsetcolor{\maincolor}\the\footline}%
-+ }
++% #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 \undefined
++ % 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.
+@@ -2642,265 +3904,445 @@
+ \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+ \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+-\def\indexdummies{%
+-\def\ { }%
+-% Take care of the plain tex accent commands.
+-\def\"{\realbackslash "}%
+-\def\`{\realbackslash `}%
+-\def\'{\realbackslash '}%
+-\def\^{\realbackslash ^}%
+-\def\~{\realbackslash ~}%
+-\def\={\realbackslash =}%
+-\def\b{\realbackslash b}%
+-\def\c{\realbackslash c}%
+-\def\d{\realbackslash d}%
+-\def\u{\realbackslash u}%
+-\def\v{\realbackslash v}%
+-\def\H{\realbackslash H}%
+-% Take care of the plain tex special European modified letters.
+-\def\oe{\realbackslash oe}%
+-\def\ae{\realbackslash ae}%
+-\def\aa{\realbackslash aa}%
+-\def\OE{\realbackslash OE}%
+-\def\AE{\realbackslash AE}%
+-\def\AA{\realbackslash AA}%
+-\def\o{\realbackslash o}%
+-\def\O{\realbackslash O}%
+-\def\l{\realbackslash l}%
+-\def\L{\realbackslash L}%
+-\def\ss{\realbackslash ss}%
+-% Take care of texinfo commands likely to appear in an index entry.
+-% (Must be a way to avoid doing expansion at all, and thus not have to
+-% laboriously list every single command here.)
+-\def\@{@}% will be @@ when we switch to @ as escape char.
+-% Need these in case \tex is in effect and \{ is a \delimiter again.
+-% But can't use \lbracecmd and \rbracecmd because texindex assumes
+-% braces and backslashes are used only as delimiters.
+-\let\{ = \mylbrace
+-\let\} = \myrbrace
+-\def\_{{\realbackslash _}}%
+-\def\w{\realbackslash w }%
+-\def\bf{\realbackslash bf }%
+-%\def\rm{\realbackslash rm }%
+-\def\sl{\realbackslash sl }%
+-\def\sf{\realbackslash sf}%
+-\def\tt{\realbackslash tt}%
+-\def\gtr{\realbackslash gtr}%
+-\def\less{\realbackslash less}%
+-\def\hat{\realbackslash hat}%
+-\def\TeX{\realbackslash TeX}%
+-\def\dots{\realbackslash dots }%
+-\def\result{\realbackslash result}%
+-\def\equiv{\realbackslash equiv}%
+-\def\expansion{\realbackslash expansion}%
+-\def\print{\realbackslash print}%
+-\def\error{\realbackslash error}%
+-\def\point{\realbackslash point}%
+-\def\copyright{\realbackslash copyright}%
+-\def\tclose##1{\realbackslash tclose {##1}}%
+-\def\code##1{\realbackslash code {##1}}%
+-\def\uref##1{\realbackslash uref {##1}}%
+-\def\url##1{\realbackslash url {##1}}%
+-\def\env##1{\realbackslash env {##1}}%
+-\def\command##1{\realbackslash command {##1}}%
+-\def\option##1{\realbackslash option {##1}}%
+-\def\dotless##1{\realbackslash dotless {##1}}%
+-\def\samp##1{\realbackslash samp {##1}}%
+-\def\,##1{\realbackslash ,{##1}}%
+-\def\t##1{\realbackslash t {##1}}%
+-\def\r##1{\realbackslash r {##1}}%
+-\def\i##1{\realbackslash i {##1}}%
+-\def\b##1{\realbackslash b {##1}}%
+-\def\sc##1{\realbackslash sc {##1}}%
+-\def\cite##1{\realbackslash cite {##1}}%
+-\def\key##1{\realbackslash key {##1}}%
+-\def\file##1{\realbackslash file {##1}}%
+-\def\var##1{\realbackslash var {##1}}%
+-\def\kbd##1{\realbackslash kbd {##1}}%
+-\def\dfn##1{\realbackslash dfn {##1}}%
+-\def\emph##1{\realbackslash emph {##1}}%
+-\def\acronym##1{\realbackslash acronym {##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.
+ %
+-% Handle some cases of @value -- where the variable name does not
+-% contain - or _, and the value does not contain any
+-% (non-fully-expandable) commands.
+-\let\value = \expandablevalue
++\def\indexdummies{%
++ \escapechar = `\\ % use backslash in output files.
++ \def\@{@}% change to @@ when we switch to @ as escape char in index files.
++ \def\ {\realbackslash\space }%
+ %
-+ \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
-+ }
++ % Need these in case \tex is in effect and \{ is a \delimiter again.
++ % But can't use \lbracecmd and \rbracecmd because texindex assumes
++ % braces and backslashes are used only as delimiters.
++ \let\{ = \mylbrace
++ \let\} = \myrbrace
+ %
++ % 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
+ %
-+ \pdfcatalog{/PageMode /UseOutlines}
++ % 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.
+ %
+-\unsepspaces
+-% Turn off macro expansion
+-\turnoffmacros
++\def\atdummies{%
++ \def\@{@@}%
++ \def\ {@ }%
++ \let\{ = \lbraceatcmd
++ \let\} = \rbraceatcmd
+ %
-+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
- \def\dopdfimage#1#2#3{%
-- \def\imagewidth{#2}%
-- \def\imageheight{#3}%
-+ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
-+ \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
-+ %
-+ % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-+ % others). Let's try in that order.
-+ \let\pdfimgext=\empty
-+ \begingroup
-+ \openin 1 #1.png \ifeof 1
-+ \openin 1 #1.jpg \ifeof 1
-+ \openin 1 #1.jpeg \ifeof 1
-+ \openin 1 #1.JPG \ifeof 1
-+ \openin 1 #1.pdf \ifeof 1
-+ \openin 1 #1.PDF \ifeof 1
-+ \errhelp = \nopdfimagehelp
-+ \errmessage{Could not find image file #1 for pdf}%
-+ \else \gdef\pdfimgext{PDF}%
-+ \fi
-+ \else \gdef\pdfimgext{pdf}%
-+ \fi
-+ \else \gdef\pdfimgext{JPG}%
-+ \fi
-+ \else \gdef\pdfimgext{jpeg}%
-+ \fi
-+ \else \gdef\pdfimgext{jpg}%
-+ \fi
-+ \else \gdef\pdfimgext{png}%
-+ \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
-- \pdfimage
-+ \immediate\pdfimage
- \else
-- \pdfximage
-+ \immediate\pdfximage
- \fi
-- \ifx\empty\imagewidth\else width \imagewidth \fi
-- \ifx\empty\imageheight\else height \imageheight \fi
-- {#1.pdf}%
-+ \ifdim \wd0 >0pt width \imagewidth \fi
-+ \ifdim \wd2 >0pt height \imageheight \fi
-+ \ifnum\pdftexversion<13
-+ #1.\pdfimgext
-+ \else
-+ {#1.\pdfimgext}%
-+ \fi
- \ifnum\pdftexversion < 14 \else
- \pdfrefximage \pdflastximage
- \fi}
-- \def\pdfmkdest#1{\pdfdest name{#1@} xyz}
-- \def\pdfmkpgn#1{#1@}
-- \let\linkcolor = \Cyan
-- \def\endlink{\Black\pdfendlink}
++ % Do the redefinitions.
++ \commondummies
++ \otherbackslash
+ }
+
+-% 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 \ ).
+-{\obeyspaces
+- \gdef\unsepspaces{\obeyspaces\let =\space}}
++% Called from \indexdummies and \atdummies.
++%
++\def\commondummies{%
+ %
-+ \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
-+ \activebackslashdouble
-+ \makevalueexpandable
-+ \def\pdfdestname{#1}%
-+ \backslashparens\pdfdestname
-+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
-+ }}
++ % \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.
+ %
-+ % used to mark target names; must be expandable.
-+ \def\pdfmkpgn#1{#1}
++ % For control letters, we have \definedummyletter, which omits the
++ % space.
+ %
-+ % by default, use a color that is dark enough to print on paper as
-+ % nearly black, but still distinguishable for online viewing.
-+ \def\urlcolor{\cmykDarkRed}
-+ \def\linkcolor{\cmykDarkRed}
-+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
++ % 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).
+ %
- % 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 by1
-+ \advance\tempnum by 1
- \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-- \def\pdfmakeoutlines{{%
-- \openin 1 \jobname.toc
-- \ifeof 1\else\bgroup
-- \closein 1
-- \indexnofonts
-- \def\tt{}
-- % thanh's hack / proper braces in bookmarks
-- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
-- %
-- \def\chapentry ##1##2##3{}
-- \def\unnumbchapentry ##1##2{}
-- \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
-- \def\unnumbsecentry ##1##2{}
-- \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
-- \def\unnumbsubsecentry ##1##2{}
-- \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
-- \def\unnumbsubsubsecentry ##1##2{}
-- \input \jobname.toc
-- \def\chapentry ##1##2##3{%
-- \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
-- \def\unnumbchapentry ##1##2{%
-- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
-- \def\secentry ##1##2##3##4{%
-- \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
-- \def\unnumbsecentry ##1##2{%
-- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
-- \def\subsecentry ##1##2##3##4##5{%
-- \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
-- \def\unnumbsubsecentry ##1##2{%
-- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
-- \def\subsubsecentry ##1##2##3##4##5##6{%
-- \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
-- \def\unnumbsubsubsecentry ##1##2{%
-- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
-- \input \jobname.toc
-- \egroup\fi
-- }}
-- \def\makelinks #1,{%
-- \def\params{#1}\def\E{END}%
-- \ifx\params\E
-- \let\nextmakelinks=\relax
++ \def\definedummyword ##1{\def##1{\string##1\space}}%
++ \def\definedummyletter##1{\def##1{\string##1}}%
++ \let\definedummyaccent\definedummyletter
+ %
-+ % #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
++ \commondummiesnofonts
+ %
-+ \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.
-+ \def\pdfoutlinedest{#3}%
-+ \ifx\pdfoutlinedest\empty
-+ \def\pdfoutlinedest{#4}%
- \else
-- \let\nextmakelinks=\makelinks
-- \ifnum\lnkcount>0,\fi
-- \picknum{#1}%
-- \startlink attr{/Border [0 0 0]}
-- goto name{\pdfmkpgn{\the\pgn}}%
-- \linkcolor #1%
-- \advance\lnkcount by 1%
-- \endlink
-+ % Doubled backslashes in the name.
-+ {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
-+ \backslashparens\pdfoutlinedest}%
- \fi
-- \nextmakelinks
-+ %
-+ % Also double the backslashes in the display string.
-+ {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
-+ \backslashparens\pdfoutlinetext}%
-+ %
-+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
- }
-- \def\picknum#1{\expandafter\pn#1}
-- \def\pn#1{%
-- \def\p{#1}%
-- \ifx\p\lbrace
-- \let\nextpn=\ppn
-- \else
-- \let\nextpn=\ppnn
-- \def\first{#1}
-- \fi
-- \nextpn
++ \definedummyletter\_%
+ %
-+ \def\pdfmakeoutlines{%
-+ \begingroup
-+ % Thanh's hack / proper braces in bookmarks
-+ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-+ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
-+ %
-+ % Read toc silently, to get counts of subentries for \pdfoutline.
-+ \def\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.
-+ %
-+ % xx to do this right, we have to translate 8-bit characters to
-+ % their "best" equivalent, based on the @documentencoding. Right
-+ % now, I guess we'll just let the pdf reader have its way.
-+ \indexnofonts
-+ \setupdatafile
-+ \catcode`\\=\active \otherbackslash
-+ \input \tocreadfilename
-+ \endgroup
- }
-- \def\ppn#1{\pgn=#1\gobble}
-- \def\ppnn{\pgn=\first}
-- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
-- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
++ % Non-English letters.
++ \definedummyword\AA
++ \definedummyword\AE
++ \definedummyword\L
++ \definedummyword\OE
++ \definedummyword\O
++ \definedummyword\aa
++ \definedummyword\ae
++ \definedummyword\l
++ \definedummyword\oe
++ \definedummyword\o
++ \definedummyword\ss
++ \definedummyword\exclamdown
++ \definedummyword\questiondown
++ \definedummyword\ordf
++ \definedummyword\ordm
+ %
- \def\skipspaces#1{\def\PP{#1}\def\D{|}%
- \ifx\PP\D\let\nextsp\relax
- \else\let\nextsp\skipspaces
-@@ -983,24 +1555,32 @@
- \else
- \let \startlink \pdfstartlink
- \fi
-+ % make a live url in pdf output.
- \def\pdfurl#1{%
- \begingroup
-- \normalturnoffactive\def\@{@}%
-- \leavevmode\Red
-+ % 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
-+ \leavevmode\setcolor{\urlcolor}%
- \startlink attr{/Border [0 0 0]}%
- user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-- % #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|
-+ \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\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
- \else
- \ifnum0=\countA\else\makelink\fi
- \ifx\first.\let\next=\done\else
-@@ -1013,33 +1593,348 @@
- \def\makelink{\addtokens{\toksB}%
- {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
-- \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}
-- \linkcolor #1\endlink}
-- \def\mkpgn#1{#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}
--\fi % \ifx\pdfoutput
-+\else
-+ \let\pdfmkdest = \gobble
-+ \let\pdfurl = \gobble
-+ \let\endlink = \relax
-+ \let\setcolor = \gobble
-+ \let\pdfsetcolor = \gobble
-+ \let\pdfmakeoutlines = \relax
-+\fi % \ifx\pdfoutput
-
++ % 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\bullet
++ \definedummyword\comma
++ \definedummyword\copyright
++ \definedummyword\registeredsymbol
++ \definedummyword\dots
++ \definedummyword\enddots
++ \definedummyword\equiv
++ \definedummyword\error
++ \definedummyword\euro
++ \definedummyword\guillemetleft
++ \definedummyword\guillemetright
++ \definedummyword\guilsinglleft
++ \definedummyword\guilsinglright
++ \definedummyword\expansion
++ \definedummyword\minus
++ \definedummyword\pounds
++ \definedummyword\point
++ \definedummyword\print
++ \definedummyword\quotedblbase
++ \definedummyword\quotedblleft
++ \definedummyword\quotedblright
++ \definedummyword\quoteleft
++ \definedummyword\quoteright
++ \definedummyword\quotesinglbase
++ \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
++}
- \message{fonts,}
--% Font-change commands.
-+
-+% 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.
+-% \indexnofonts no-ops all font-change commands.
+-% This is used when outputting the strings to sort the index by.
+-\def\indexdummyfont#1{#1}
+-\def\indexdummytex{TeX}
+-\def\indexdummydots{...}
++% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
-+\def\setfontstyle#1{%
-+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
-+ \csname ten#1\endcsname % change the current font
++\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\ringaccent
++ \definedummyword\tieaccent
++ \definedummyword\ubaraccent
++ \definedummyword\udotaccent
++ \definedummyword\dotless
++ %
++ % Texinfo font commands.
++ \definedummyword\b
++ \definedummyword\i
++ \definedummyword\r
++ \definedummyword\sc
++ \definedummyword\t
++ %
++ % Commands that take arguments.
++ \definedummyword\acronym
++ \definedummyword\cite
++ \definedummyword\code
++ \definedummyword\command
++ \definedummyword\dfn
++ \definedummyword\emph
++ \definedummyword\env
++ \definedummyword\file
++ \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
+}
-+
-+% Select #1 fonts with the current style.
+
++% \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\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}}
+ \def\indexnofonts{%
+-% Just ignore accents.
+-\let\,=\indexdummyfont
+-\let\"=\indexdummyfont
+-\let\`=\indexdummyfont
+-\let\'=\indexdummyfont
+-\let\^=\indexdummyfont
+-\let\~=\indexdummyfont
+-\let\==\indexdummyfont
+-\let\b=\indexdummyfont
+-\let\c=\indexdummyfont
+-\let\d=\indexdummyfont
+-\let\u=\indexdummyfont
+-\let\v=\indexdummyfont
+-\let\H=\indexdummyfont
+-\let\dotless=\indexdummyfont
+-% Take care of the plain tex special European modified letters.
+-\def\oe{oe}%
+-\def\ae{ae}%
+-\def\aa{aa}%
+-\def\OE{OE}%
+-\def\AE{AE}%
+-\def\AA{AA}%
+-\def\o{o}%
+-\def\O{O}%
+-\def\l{l}%
+-\def\L{L}%
+-\def\ss{ss}%
+-\let\w=\indexdummyfont
+-\let\t=\indexdummyfont
+-\let\r=\indexdummyfont
+-\let\i=\indexdummyfont
+-\let\b=\indexdummyfont
+-\let\emph=\indexdummyfont
+-\let\strong=\indexdummyfont
+-\let\cite=\indexdummyfont
+-\let\sc=\indexdummyfont
+-%Don't no-op \tt, since it isn't a user-level command
+-% and is used in the definitions of the active chars like <, >, |...
+-%\let\tt=\indexdummyfont
+-\let\tclose=\indexdummyfont
+-\let\code=\indexdummyfont
+-\let\url=\indexdummyfont
+-\let\uref=\indexdummyfont
+-\let\env=\indexdummyfont
+-\let\acronym=\indexdummyfont
+-\let\command=\indexdummyfont
+-\let\option=\indexdummyfont
+-\let\file=\indexdummyfont
+-\let\samp=\indexdummyfont
+-\let\kbd=\indexdummyfont
+-\let\key=\indexdummyfont
+-\let\var=\indexdummyfont
+-\let\TeX=\indexdummytex
+-\let\dots=\indexdummydots
+-\def\@{@}%
++ % Accent commands should become @asis.
++ \def\definedummyaccent##1{\let##1\asis}%
++ % We can just ignore other control letters.
++ \def\definedummyletter##1{\let##1\empty}%
++ % Hopefully, all control words can become @asis.
++ \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\@{@}%
++ % how to handle braces?
++ \def\_{\normalunderscore}%
++ %
++ % Non-English letters.
++ \def\AA{AA}%
++ \def\AE{AE}%
++ \def\L{L}%
++ \def\OE{OE}%
++ \def\O{O}%
++ \def\aa{aa}%
++ \def\ae{ae}%
++ \def\l{l}%
++ \def\oe{oe}%
++ \def\o{o}%
++ \def\ss{ss}%
++ \def\exclamdown{!}%
++ \def\questiondown{?}%
++ \def\ordf{a}%
++ \def\ordm{o}%
++ %
++ \def\LaTeX{LaTeX}%
++ \def\TeX{TeX}%
++ %
++ % Assorted special characters.
++ % (The following {} will end up in the sort string, but that's ok.)
++ \def\bullet{bullet}%
++ \def\comma{,}%
++ \def\copyright{copyright}%
++ \def\registeredsymbol{R}%
++ \def\dots{...}%
++ \def\enddots{...}%
++ \def\equiv{==}%
++ \def\error{error}%
++ \def\euro{euro}%
++ \def\guillemetleft{<<}%
++ \def\guillemetright{>>}%
++ \def\guilsinglleft{<}%
++ \def\guilsinglright{>}%
++ \def\expansion{==>}%
++ \def\minus{-}%
++ \def\pounds{pounds}%
++ \def\point{.}%
++ \def\print{-|}%
++ \def\quotedblbase{"}%
++ \def\quotedblleft{"}%
++ \def\quotedblright{"}%
++ \def\quoteleft{`}%
++ \def\quoteright{'}%
++ \def\quotesinglbase{,}%
++ \def\result{=>}%
++ \def\textdegree{degrees}%
++ %
++ % 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
+ }
- % Texinfo sort of supports the sans serif font style, which plain TeX does not.
--% So we set up a \sf analogous to plain's \rm, etc.
-+% So we set up a \sf.
- \newfam\sffam
--\def\sf{\fam=\sffam \tensf}
-+\def\sf{\fam=\sffam \setfontstyle{sf}}
- \let\li = \sf % Sometimes we call it \li, not \sf.
+-% To define \realbackslash, we must make \ not be an escape.
+-% We must first make another character (@) an escape
+-% so we do not become unable to do a definition.
+-
+-{\catcode`\@=0 \catcode`\\=\other
+- @gdef at realbackslash{\}}
+-
+ \let\indexbackslash=0 %overridden during \printindex.
+ \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
--% We don't need math for this one.
--\def\ttsl{\tenttsl}
-+% We don't need math for this font style.
-+\def\ttsl{\setfontstyle{ttsl}}
-+
-+
-+% Default leading.
-+\newdimen\textleading \textleading = 13.2pt
-+
-+% Set the baselineskip to #1, and the lineskip and strut size
-+% correspondingly. There is no deep meaning behind these magic numbers
-+% used as factors; they just match (closely enough) what Knuth defined.
-+%
-+\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}
-+%
-+\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\undefined \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}%
+-% For \ifx comparisons.
+-\def\emptymacro{\empty}
+-
+ % Most index entries go through here, but \dosubind is the general case.
+-%
+-\def\doind#1#2{\dosubind{#1}{#2}\empty}
++% #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 defuns, which call us directly.
++% 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:
+%
-+% \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}%
++\def\dosubindwrite{%
+ % Put the index entry in the margin if desired.
+ \ifx\SETmarginindex\relax\else
+- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
++ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+ \fi
+- {%
+- \count255=\lastpenalty
+- {%
+- \indexdummies % Must do this here, since \bf, etc expand at this stage
+- \escapechar=`\\
+- {%
+- \let\folio = 0% We will expand all macros now EXCEPT \folio.
+- \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
+- % so it will be output as is; and it will print as backslash.
+- %
+- \def\thirdarg{#3}%
+- %
+- % If third arg is present, precede it with space in sort key.
+- \ifx\thirdarg\emptymacro
+- \let\subentry = \empty
+- \else
+- \def\subentry{ #3}%
+- \fi
+- %
+- % First process the index entry with all font commands turned
+- % off to get the string to sort by.
+- {\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
+- %
+- % Now the real index entry with the fonts.
+- \toks0 = {#2}%
+- %
+- % If third (subentry) arg is present, add it to the index
+- % string. And include a space.
+- \ifx\thirdarg\emptymacro \else
+- \toks0 = \expandafter{\the\toks0 \space #3}%
+- \fi
+- %
+- % 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, texindex reduces to
+- % two when writing the .??s sorted result.
+- \edef\temp{%
+- \write\csname#1indfile\endcsname{%
+- \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
+- }%
+- %
+- % 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 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.
+- %
+- \iflinks
+- \ifvmode
+- \skip0 = \lastskip
+- \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi
+- \fi
+- %
+- \temp % do the write
+- %
+- %
+- \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
+- \fi
+- }%
+- }%
+- \penalty\count255
++ %
++ % 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}}%
+ }%
-+\fi\fi
++ \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
+ }
--% Use Computer Modern fonts at \magstephalf (11pt).
--\newcount\mainmagstep
--\mainmagstep=\magstephalf
+ % The index entry written in the file actually looks like
+@@ -2938,13 +4380,13 @@
+ % @printindex causes a particular index (the ??s file) to get printed.
+ % It does not print any chapter heading (usually an @unnumbered).
+ %
+-\def\printindex{\parsearg\doprintindex}
+-\def\doprintindex#1{\begingroup
++\parseargdef\printindex{\begingroup
+ \dobreak \chapheadingskip{10000}%
+ %
+ \smallfonts \rm
+ \tolerance = 9500
+- \indexbreaks
++ \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
+@@ -2971,7 +4413,7 @@
+ % 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{\rawbackslashxx}%
++ \def\indexbackslash{\backslashcurfont}%
+ \catcode`\\ = 0
+ \escapechar = `\\
+ \begindoublecolumns
+@@ -2993,7 +4435,10 @@
+ \removelastskip
+ %
+ % We like breaks before the index initials, so insert a bonus.
+- \penalty -300
++ \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
+@@ -3003,93 +4448,117 @@
+ % No shrink because it confuses \balancecolumns.
+ \vskip 1.67\baselineskip plus .5\baselineskip
+ \leftline{\secbf #1}%
+- \vskip .33\baselineskip plus .1\baselineskip
+- %
+ % Do our best not to break after the initial.
+ \nobreak
++ \vskip .33\baselineskip plus .1\baselineskip
+ }}
- % Set the font macro #1 to the font named #2, adding on the
- % specified font prefix (normally `cm').
--% #3 is the font's design size, #4 is a scale factor
--\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
-+% empty to omit).
-+\def\setfont#1#2#3#4#5{%
-+ \font#1=\fontprefix#2#3 scaled #4
-+ \csname cmap#5\endcsname#1%
+-% This typesets a paragraph consisting of #1, dot leaders, and then #2
+-% flush to the right margin. It is used for index and table of contents
+-% entries. The paragraph is indented by \leftskip.
++% \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.
+ %
+-\def\entry#1#2{\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
+- %
+- % Start a ``paragraph'' for the index entry so the line breaking
+- % parameters we've set above will have an effect.
+- \noindent
+- %
+- % Insert the text of the index entry. TeX will do line-breaking on it.
+- #1%
+- % 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.
+- \def\tempa{{\rm }}%
+- \def\tempb{#2}%
+- \edef\tempc{\tempa}%
+- \edef\tempd{\tempb}%
+- \ifx\tempc\tempd\ \else%
++% 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
+ %
+- % 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.
++ % Start a new paragraph if necessary, so our assignments below can't
++ % affect previous text.
++ \par
+ %
+- % 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#2.\ \the\toksA % The page number ends the paragraph.
++ % 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
++ %
++ % Swallow the left brace of the text (first parameter):
++ \afterassignment\doentry
++ \let\temp =
++}
++\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
+- \ #2% The page number ends the paragraph.
++ %
++ % 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
+- \fi%
+- \par
+-\endgroup}
++ \par
++ \endgroup
+}
-+% This is what gets called when #5 of \setfont is empty.
-+\let\cmap\gobble
-+% emacs-page end of cmaps
-
- % Use cm as the default font prefix.
- % To specify the font prefix, you must define \fontprefix
-@@ -1064,165 +1959,409 @@
- \def\scshape{csc}
- \def\scbshape{csc}
-
--\ifx\bigger\relax
--\let\mainmagstep=\magstep1
--\setfont\textrm\rmshape{12}{1000}
--\setfont\texttt\ttshape{12}{1000}
--\else
--\setfont\textrm\rmshape{10}{\mainmagstep}
--\setfont\texttt\ttshape{10}{\mainmagstep}
--\fi
--% Instead of cmb10, you many want to use cmbx10.
--% cmbx10 is a prettier font on its own, but cmb10
--% looks better when embedded in a line with cmr10.
--\setfont\textbf\bfshape{10}{\mainmagstep}
--\setfont\textit\itshape{10}{\mainmagstep}
--\setfont\textsl\slshape{10}{\mainmagstep}
--\setfont\textsf\sfshape{10}{\mainmagstep}
--\setfont\textsc\scshape{10}{\mainmagstep}
--\setfont\textttsl\ttslshape{10}{\mainmagstep}
-+% Definitions for a main text size of 11pt. This is 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, etc.
--\setfont\defbf\bxshape{10}{\magstep1} %was 1314
--\setfont\deftt\ttshape{10}{\magstep1}
--\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-+% 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}
+-% Like \dotfill except takes at least 1 em.
++% Like plain.tex's \dotfill, except uses up at least 1 em.
+ \def\indexdotfill{\cleaders
+- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
++ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
- % Fonts for indices, footnotes, small examples (9pt).
--\setfont\smallrm\rmshape{9}{1000}
--\setfont\smalltt\ttshape{9}{1000}
--\setfont\smallbf\bfshape{10}{900}
--\setfont\smallit\itshape{9}{1000}
--\setfont\smallsl\slshape{9}{1000}
--\setfont\smallsf\sfshape{9}{1000}
--\setfont\smallsc\scshape{10}{900}
--\setfont\smallttsl\ttslshape{10}{900}
-+\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}
+ \def\primary #1{\line{#1\hfil}}
--% Fonts for title page:
--\setfont\titlerm\rmbshape{12}{\magstep3}
--\setfont\titleit\itbshape{10}{\magstep4}
--\setfont\titlesl\slbshape{10}{\magstep4}
--\setfont\titlett\ttbshape{12}{\magstep3}
--\setfont\titlettsl\ttslshape{10}{\magstep4}
--\setfont\titlesf\sfbshape{17}{\magstep1}
-+% 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}
-+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
- \font\titlei=cmmi12 scaled \magstep3
- \font\titlesy=cmsy10 scaled \magstep4
- \def\authorrm{\secrm}
-+\def\authortt{\sectt}
-+\def\titleecsize{2074}
+ \newskip\secondaryindent \secondaryindent=0.5cm
+-
+-\def\secondary #1#2{
+-{\parfillskip=0in \parskip=0in
+-\hangindent =1in \hangafter=1
+-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
++\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
+ }}
- % Chapter (and unnumbered) fonts (17.28pt).
--\setfont\chaprm\rmbshape{12}{\magstep2}
--\setfont\chapit\itbshape{10}{\magstep3}
--\setfont\chapsl\slbshape{10}{\magstep3}
--\setfont\chaptt\ttbshape{12}{\magstep2}
--\setfont\chapttsl\ttslshape{10}{\magstep3}
--\setfont\chapsf\sfbshape{17}{1000}
-+\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}
-+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
- \font\chapi=cmmi12 scaled \magstep2
- \font\chapsy=cmsy10 scaled \magstep3
-+\def\chapecsize{1728}
+ % Define two-column mode, which we use to typeset indexes.
+@@ -3149,7 +4618,6 @@
+ %
+ % Double the \vsize as well. (We don't need a separate register here,
+ % since nobody clobbers \vsize.)
+- \advance\vsize by -\ht\partialpage
+ \vsize = 2\vsize
+ }
- % Section fonts (14.4pt).
--\setfont\secrm\rmbshape{12}{\magstep1}
--\setfont\secit\itbshape{10}{\magstep2}
--\setfont\secsl\slbshape{10}{\magstep2}
--\setfont\sectt\ttbshape{12}{\magstep1}
--\setfont\secttsl\ttslshape{10}{\magstep2}
--\setfont\secsf\sfbshape{12}{\magstep1}
-+\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}
-+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
- \font\seci=cmmi12 scaled \magstep1
- \font\secsy=cmsy10 scaled \magstep2
--
--% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
--% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
--% \setfont\ssecsl\slshape{10}{\magstep1}
--% \setfont\ssectt\ttshape{10}{\magstep1}
--% \setfont\ssecsf\sfshape{10}{\magstep1}
--
--%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
--%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
--%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
--%\setfont\ssectt\ttshape{10}{1315}
--%\setfont\ssecsf\sfshape{10}{1315}
--
--%\let\ssecbf=\ssecrm
-+\def\sececsize{1440}
+@@ -3163,6 +4631,7 @@
+ % 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@
+@@ -3170,16 +4639,47 @@
+ \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{%
+- % Re-output the contents of the output page -- any previous material,
+- % followed by the two boxes we just split, in box0 and box2.
+ \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.
+@@ -3203,8 +4703,9 @@
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
+ }
++%
++% Called at the end of the double column material.
+ \def\balancecolumns{%
+- % Called at the end of the double column material.
+ \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+ \dimen@ = \ht0
+ \advance\dimen@ by \topskip
+@@ -3234,6 +4735,12 @@
+ \message{sectioning,}
+ % Chapters, sections, etc.
+
++% \unnumberedno is an oxymoron, of course. 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
+@@ -3241,9 +4748,12 @@
+
+ % 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 for the sake of pdftex, which needs the actual
++% 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%
+@@ -3279,13 +4789,18 @@
+ \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}
- % Subsection fonts (13.15pt).
--\setfont\ssecrm\rmbshape{12}{\magstephalf}
--\setfont\ssecit\itbshape{10}{1315}
--\setfont\ssecsl\slbshape{10}{1315}
--\setfont\ssectt\ttbshape{12}{\magstephalf}
--\setfont\ssecttsl\ttslshape{10}{1315}
--\setfont\ssecsf\sfbshape{12}{\magstephalf}
-+\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}{\magstep1}
-+\setfont\ssecsc\scbshape{10}{1315}{OT1}
- \font\sseci=cmmi12 scaled \magstephalf
- \font\ssecsy=cmsy10 scaled 1315
--% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
--% but that is not a standard magnification.
-+\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}
-+
-+% reset the current fonts
-+\textfonts
-+\rm
-+} % end of 11pt text font size definitions
-+
-+
-+% 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\authorrm{\secrm}
-+\def\authortt{\sectt}
-+\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}
-+
-+% reduce space between paragraphs
-+\divide\parskip by 2
-+
-+% reset the current fonts
-+\textfonts
-+\rm
-+} % end of 10pt text font size definitions
+-% Each @chapter defines this as the name of the chapter.
+-% page headings and footings can use it. @section does likewise.
++% 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 % @raise/lowersections modify this count
++\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}
+@@ -3295,287 +4810,246 @@
+ \def\lowersections{\global\advance\secbase by 1}
+ \let\down=\lowersections % original BFox name
+
+-% Choose a numbered-heading macro
+-% #1 is heading level if unmodified by @raisesections or @lowersections
+-% #2 is text for heading
+-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
+-\ifcase\absseclevel
+- \chapterzzz{#2}
+-\or
+- \seczzz{#2}
+-\or
+- \numberedsubseczzz{#2}
+-\or
+- \numberedsubsubseczzz{#2}
+-\else
+- \ifnum \absseclevel<0
+- \chapterzzz{#2}
++% we only have subsub.
++\chardef\maxseclevel = 3
++%
++% A numbered section within an unnumbered changes to unnumbered too.
++% To achive this, remember the "biggest" unnum. sec. we are currently in:
++\chardef\unmlevel = \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
+- \numberedsubsubseczzz{#2}
++ \ifnum \absseclevel > 3
++ \absseclevel = 3
++ \fi
+ \fi
+-\fi
+-}
+-
+-% like \numhead, but chooses appendix heading levels
+-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
+-\ifcase\absseclevel
+- \appendixzzz{#2}
+-\or
+- \appendixsectionzzz{#2}
+-\or
+- \appendixsubseczzz{#2}
+-\or
+- \appendixsubsubseczzz{#2}
+-\else
+- \ifnum \absseclevel<0
+- \appendixzzz{#2}
++ % The heading type:
++ \def\headtype{#1}%
++ \if \headtype U%
++ \ifnum \absseclevel < \unmlevel
++ \chardef\unmlevel = \absseclevel
++ \fi
+ \else
+- \appendixsubsubseczzz{#2}
++ % 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 > \unmlevel
++ \def\headtype{U}%
++ \else
++ \chardef\unmlevel = 3
++ \fi
+ \fi
+-\fi
+-}
+-
+-% like \numhead, but chooses numberless heading levels
+-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
+-\ifcase\absseclevel
+- \unnumberedzzz{#2}
+-\or
+- \unnumberedseczzz{#2}
+-\or
+- \unnumberedsubseczzz{#2}
+-\or
+- \unnumberedsubsubseczzz{#2}
+-\else
+- \ifnum \absseclevel<0
+- \unnumberedzzz{#2}
++ % Now print the heading:
++ \if \headtype U%
++ \ifcase\absseclevel
++ \unnumberedzzz{#3}%
++ \or \unnumberedseczzz{#3}%
++ \or \unnumberedsubseczzz{#3}%
++ \or \unnumberedsubsubseczzz{#3}%
++ \fi
+ \else
+- \unnumberedsubsubseczzz{#2}
++ \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
+-\fi
++ \suppressfirstparagraphindent
+ }
+
+-% @chapter, @appendix, @unnumbered.
+-\def\thischaptername{No Chapter Title}
+-\outer\def\chapter{\parsearg\chapteryyy}
+-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
+-\def\chapterzzz #1{%
+-\secno=0 \subsecno=0 \subsubsecno=0
+-\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
+-\chapmacro {#1}{\the\chapno}%
+-\gdef\thissection{#1}%
+-\gdef\thischaptername{#1}%
+-% We don't substitute the actual chapter name into \thischapter
+-% because we don't want its macros evaluated now.
+-\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
+- {\the\chapno}}}%
+-\temp
+-\donoderef
+-\global\let\section = \numberedsec
+-\global\let\subsection = \numberedsubsec
+-\global\let\subsubsection = \numberedsubsubsec
++% an interface:
++\def\numhead{\genhead N}
++\def\apphead{\genhead A}
++\def\unnmhead{\genhead U}
+
-+% We provide the user-level command
-+% @fonttextsize 10
-+% (or 11) to redefine the text font size. pt is assumed.
-+%
-+\def\xword{10}
-+\def\xiword{11}
++% @chapter, @appendix, @unnumbered. Increment top-level counter, reset
++% all lower-level sectioning counters to zero.
+%
-+\parseargdef\fonttextsize{%
-+ \def\textsizearg{#1}%
-+ \wlog{doing @fonttextsize \textsizearg}%
++% 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
+ %
-+ % 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
++ % Used for \float.
++ \gdef\chaplevelprefix{\the\chapno.}%
++ \resetallfloatnos
++ %
++ \message{\putwordChapter\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\def\appendix{\parsearg\appendixyyy}
+-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
+-\def\appendixzzz #1{%
+-\secno=0 \subsecno=0 \subsubsecno=0
+-\global\advance \appendixno by 1
+-\message{\putwordAppendix\space \appendixletter}%
+-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
+-\gdef\thissection{#1}%
+-\gdef\thischaptername{#1}%
+-\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
+- {\putwordAppendix{} \appendixletter}}}%
+-\temp
+-\appendixnoderef
+-\global\let\section = \appendixsec
+-\global\let\subsection = \appendixsubsec
+-\global\let\subsubsection = \appendixsubsubsec
++\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
++\def\appendixzzz#1{%
++ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
++ \global\advance\appendixno by 1
++ \gdef\chaplevelprefix{\appendixletter.}%
++ \resetallfloatnos
++ %
++ \def\appendixnum{\putwordAppendix\space \appendixletter}%
++ \message{\appendixnum}%
++ %
++ \chapmacro{#1}{Yappendix}{\appendixletter}%
++ %
++ \global\let\section = \appendixsec
++ \global\let\subsection = \appendixsubsec
++ \global\let\subsubsection = \appendixsubsubsec
+}
+
++\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
++\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\def\centerchap{\parsearg\centerchapyyy}
+-\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
++\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.
+-\outer\def\top{\parsearg\unnumberedyyy}
+-
+-\outer\def\unnumbered{\parsearg\unnumberedyyy}
+-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+-\def\unnumberedzzz #1{%
+-\secno=0 \subsecno=0 \subsubsecno=0
+-%
+-% 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)}%
+-%
+-\unnumbchapmacro {#1}%
+-\gdef\thischapter{#1}\gdef\thissection{#1}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}%
+-\temp
+-\unnumbnoderef
+-\global\let\section = \unnumberedsec
+-\global\let\subsection = \unnumberedsubsec
+-\global\let\subsubsection = \unnumberedsubsubsec
+-}
++\let\top\unnumbered
- % 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, we
--% don't bother to reset \scriptfont and \scriptscriptfont (which would
--% also require loading a lot more fonts).
-+% 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
-+ \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
-+ \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
-+ \textfont\ttfam=\tentt \textfont\sffam=\tensf
+ % Sections.
+-\outer\def\numberedsec{\parsearg\secyyy}
+-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
+-\def\seczzz #1{%
+-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+-\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
+- {\the\chapno}{\the\secno}}}%
+-\temp
+-\donoderef
+-\nobreak
++\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}%
}
--
- % The font-changing commands redefine the meanings of \tenSTYLE, instead
--% of just \STYLE. We do this so that font changes will continue to work
--% in math mode, where it is the current \fam that is relevant in most
--% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
--% \tenbf}, for example. By redefining \tenbf, we obviate the need to
--% redefine \bf itself.
-+% 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
-- \resetmathfonts}
-+ \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{25pt}}
- \def\titlefont#1{{\titlefonts\rm #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
-+ \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
-+ \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
-+ \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 % Maybe make sssec fonts scaled magstephalf?
-+\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
-- \resetmathfonts \setleading{11pt}}
-+ \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}}
-+
-+% 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
-+%
-+% I wish the USA used A4 paper.
-+% --karl, 24jan03.
-+
+-\outer\def\appendixsection{\parsearg\appendixsecyyy}
+-\outer\def\appendixsec{\parsearg\appendixsecyyy}
+-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
+-\def\appendixsectionzzz #1{%
+-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+-\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
+- {\appendixletter}{\the\secno}}}%
+-\temp
+-\appendixnoderef
+-\nobreak
++\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
++\def\appendixsectionzzz#1{%
++ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
++ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+ }
++\let\appendixsec\appendixsection
+
+-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
+-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
+-\def\unnumberedseczzz #1{%
+-\plainsecheading {#1}\gdef\thissection{#1}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
+-\temp
+-\unnumbnoderef
+-\nobreak
++\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
++\def\unnumberedseczzz#1{%
++ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
++ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+ }
+
+ % Subsections.
+-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
+-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
+-\def\numberedsubseczzz #1{%
+-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+-\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
+- {\the\chapno}{\the\secno}{\the\subsecno}}}%
+-\temp
+-\donoderef
+-\nobreak
++\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
++\def\numberedsubseczzz#1{%
++ \global\subsubsecno=0 \global\advance\subsecno by 1
++ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+ }
+
+-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
+-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
+-\def\appendixsubseczzz #1{%
+-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+-\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
+- {\appendixletter}{\the\secno}{\the\subsecno}}}%
+-\temp
+-\appendixnoderef
+-\nobreak
++\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
++\def\appendixsubseczzz#1{%
++ \global\subsubsecno=0 \global\advance\subsecno by 1
++ \sectionheading{#1}{subsec}{Yappendix}%
++ {\appendixletter.\the\secno.\the\subsecno}%
+ }
+
+-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
+-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+-\def\unnumberedsubseczzz #1{%
+-\plainsubsecheading {#1}\gdef\thissection{#1}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
+- {\the\toks0}}}%
+-\temp
+-\unnumbnoderef
+-\nobreak
++\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
++\def\unnumberedsubseczzz#1{%
++ \global\subsubsecno=0 \global\advance\subsecno by 1
++ \sectionheading{#1}{subsec}{Ynothing}%
++ {\the\unnumberedno.\the\secno.\the\subsecno}%
+ }
+
+ % Subsubsections.
+-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
+-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
+-\def\numberedsubsubseczzz #1{%
+-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+-\subsubsecheading {#1}
+- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
+- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
+-\temp
+-\donoderef
+-\nobreak
++\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
++\def\numberedsubsubseczzz#1{%
++ \global\advance\subsubsecno by 1
++ \sectionheading{#1}{subsubsec}{Ynumbered}%
++ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+ }
+
+-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
+-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
+-\def\appendixsubsubseczzz #1{%
+-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+-\subsubsecheading {#1}
+- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
+- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
+-\temp
+-\appendixnoderef
+-\nobreak
++\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
++\def\appendixsubsubseczzz#1{%
++ \global\advance\subsubsecno by 1
++ \sectionheading{#1}{subsubsec}{Yappendix}%
++ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+ }
- % Set up the default fonts, so we can use them for creating boxes.
- %
--\textfonts
-+\definetextfontsizexi
+-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
+-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+-\def\unnumberedsubsubseczzz #1{%
+-\plainsubsubsecheading {#1}\gdef\thissection{#1}%
+-\toks0 = {#1}%
+-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
+- {\the\toks0}}}%
+-\temp
+-\unnumbnoderef
+-\nobreak
++\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
++\def\unnumberedsubsubseczzz#1{%
++ \global\advance\subsubsecno by 1
++ \sectionheading{#1}{subsubsec}{Ynothing}%
++ {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+ }
- % Define these so they can be easily changed for other fonts.
- \def\angleleft{$\langle$}
-@@ -1232,28 +2371,42 @@
- \newcount\fontdepth \fontdepth=0
+-% These are variants which are not "outer", so they can appear in @ifinfo.
+-% Actually, they should now be obsolete; ordinary section commands should work.
+-\def\infotop{\parsearg\unnumberedzzz}
+-\def\infounnumbered{\parsearg\unnumberedzzz}
+-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
+-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
+-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
+-
+-\def\infoappendix{\parsearg\appendixzzz}
+-\def\infoappendixsec{\parsearg\appendixseczzz}
+-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
+-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
+-
+-\def\infochapter{\parsearg\chapterzzz}
+-\def\infosection{\parsearg\sectionzzz}
+-\def\infosubsection{\parsearg\subsectionzzz}
+-\def\infosubsubsection{\parsearg\subsubsectionzzz}
+-
+ % 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.
+-\global\let\section = \numberedsec
+-\global\let\subsection = \numberedsubsec
+-\global\let\subsubsection = \numberedsubsubsec
++\let\section = \numberedsec
++\let\subsection = \numberedsubsec
++\let\subsubsection = \numberedsubsubsec
- % Fonts for short table of contents.
--\setfont\shortcontrm\rmshape{12}{1000}
--\setfont\shortcontbf\bxshape{12}{1000}
--\setfont\shortcontsl\slshape{12}{1000}
-+\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 @majorheading, @heading and @subheading
- %% Add scribe-like font environments, plus @l for inline lisp (usually sans
- %% serif) and @ii for TeX italic
+@@ -3588,23 +5062,27 @@
+ % if justification is not attempted. Hence \raggedright.
- % \smartitalic{ARG} outputs arg in italics, followed by an italic correction
- % unless the following character is such as not to need one.
--\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
--\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}
--\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
-+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
-+ \ptexslash\fi\fi\fi}
-+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-+
-+% like \smartslanted except unconditionally uses \ttsl.
-+% @var is set to this for defun arguments.
-+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
-+
-+% like \smartslanted except unconditionally use \sl. We never want
-+% ttsl for book titles, do we?
-+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
- \let\i=\smartitalic
-+\let\slanted=\smartslanted
- \let\var=\smartslanted
- \let\dfn=\smartslanted
- \let\emph=\smartitalic
--\let\cite=\smartslanted
+-\def\majorheading{\parsearg\majorheadingzzz}
+-\def\majorheadingzzz #1{%
+-{\advance\chapheadingskip by 10pt \chapbreak }%
+-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+- \parindent=0pt\raggedright
+- \rm #1\hfill}}\bigskip \par\penalty 200}
++\def\majorheading{%
++ {\advance\chapheadingskip by 10pt \chapbreak }%
++ \parsearg\chapheadingzzz
++}
-+% @b, explicit bold.
- \def\b#1{{\bf #1}}
- \let\strong=\b
+-\def\chapheading{\parsearg\chapheadingzzz}
+-\def\chapheadingzzz #1{\chapbreak %
+-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+- \parindent=0pt\raggedright
+- \rm #1\hfill}}\bigskip \par\penalty 200}
++\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
++\def\chapheadingzzz#1{%
++ {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
++ \parindent=0pt\raggedright
++ \rm #1\hfill}}%
++ \bigskip \par\penalty 200\relax
++ \suppressfirstparagraphindent
++}
-+% @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.
-@@ -1261,13 +2414,30 @@
- \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
- \def\restorehyphenation{\hyphenchar\font = `- }
+ % @heading, @subheading, @subsubheading.
+-\def\heading{\parsearg\plainsecheading}
+-\def\subheading{\parsearg\plainsubsecheading}
+-\def\subsubheading{\parsearg\plainsubsubsecheading}
++\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
++ \suppressfirstparagraphindent}
++\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
++ \suppressfirstparagraphindent}
++\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
++ \suppressfirstparagraphindent}
-+% 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
-+
- \def\t#1{%
-- {\tt \rawbackslash \frenchspacing #1}%
-+ {\tt \rawbackslash \plainfrenchspacing #1}%
- \null
- }
--\let\ttfont=\t
- \def\samp#1{`\tclose{#1}'\null}
--\setfont\keyrm\rmshape{8}{1000}
-+\setfont\keyrm\rmshape{8}{1000}{OT1}
- \font\keysy=cmsy9
- \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
- \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-@@ -1275,6 +2445,7 @@
- \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
- \kern-0.4pt\hrule}%
- \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
- % The old definition, with no lozenge:
- %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
- \def\ctrl #1{{\tt \rawbackslash \hat}#1}
-@@ -1300,13 +2471,13 @@
- \nohyphenation
- %
- \rawbackslash
-- \frenchspacing
-+ \plainfrenchspacing
- #1%
- }%
- \null
- }
+ % These macros generate a chapter, section, etc. heading only
+ % (including whitespace, linebreaking, etc. around it),
+@@ -3613,8 +5091,6 @@
+ %%% Args are the skip and penalty (usually negative)
+ \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
--% We *must* turn on hyphenation at `-' and `_' in \code.
-+% 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.
+-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+-
+ %%% Define plain chapter starts, and page on/off switching for it
+ % Parameter controlling skip before chapter headings (if needed)
-@@ -1316,26 +2487,61 @@
- % and arrange explicitly to hyphenate at a dash.
- % -- rms.
- {
-- \catcode`\-=\active
-- \catcode`\_=\active
-+ \catcode`\-=\active \catcode`\_=\active
-+ \catcode`\'=\active \catcode`\`=\active
- %
- \global\def\code{\begingroup
-- \catcode`\-=\active \let-\codedash
-- \catcode`\_=\active \let_\codeunder
-+ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
-+ \let'\codequoteright \let`\codequoteleft
-+ %
-+ \catcode\dashChar=\active \catcode\underChar=\active
-+ \ifallowcodebreaks
-+ \let-\codedash
-+ \let_\codeunder
-+ \else
-+ \let-\realdash
-+ \let_\realunder
-+ \fi
- \codex
- }
-- %
-- % If we end up with any active - characters when handling the index,
-- % just treat them as a normal -.
-- \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
- }
+@@ -3622,7 +5098,20 @@
- \def\realdash{-}
- \def\codedash{-\discretionary{}{}{}}
--\def\codeunder{\ifusingtt{\normalunderscore\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{}{}{}}%
-+ {\_}%
+ \def\chapbreak{\dobreak \chapheadingskip {-4000}}
+ \def\chappager{\par\vfill\supereject}
+-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
++% 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
++ \evenheadline={\hfil}\evenfootline={\hfil}%
++ \oddheadline={\hfil}\oddfootline={\hfil}%
++ \hbox to 0pt{}%
++ \chappager
++ \endgroup
++ \fi
+}
- \def\codex #1{\tclose{#1}\endgroup}
--%\let\exp=\tclose %Was temporary
-+% An additional complication: the above will allow breaks after, e.g.,
-+% each of the four underscores in __typeof__. This is undesirable in
-+% some manuals, especially if they don't have long identifiers in
-+% general. @allowcodebreaks provides a way to control this.
-+%
-+\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'}%
-+ \fi\fi
-+}
+ \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
- % @kbd is like @code, except that if the argument is just one @key command,
- % then @kbd has no effect.
-@@ -1343,24 +2549,25 @@
- % @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).
--\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
--\def\kbdinputstylexxx#1{%
-- \def\arg{#1}%
-- \ifx\arg\worddistinct
-+\parseargdef\kbdinputstyle{%
-+ \def\txiarg{#1}%
-+ \ifx\txiarg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-- \else\ifx\arg\wordexample
-+ \else\ifx\txiarg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-- \else\ifx\arg\wordcode
-+ \else\ifx\txiarg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+@@ -3637,7 +5126,7 @@
+ \global\let\pagealignmacro=\chappager
+ \global\def\HEADINGSon{\HEADINGSsingle}}
+
+-\def\CHAPPAGodd{
++\def\CHAPPAGodd{%
+ \global\let\contentsalignmacro = \chapoddpage
+ \global\let\pchapsepmacro=\chapoddpage
+ \global\let\pagealignmacro=\chapoddpage
+@@ -3645,107 +5134,275 @@
+
+ \CHAPPAGon
+
+-\def\CHAPFplain{
+-\global\let\chapmacro=\chfplain
+-\global\let\unnumbchapmacro=\unnchfplain
+-\global\let\centerchapmacro=\centerchfplain}
+-
+-% Plain chapter opening.
+-% #1 is the text, #2 the chapter number or empty if unnumbered.
+-\def\chfplain#1#2{%
++% 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}%
++ \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
++ \noexpand\thischaptername}%
++ }%
+ \else
-+ \errhelp = \EMsimple
-+ \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
- \fi\fi\fi
++ \toks0={#1}%
++ \xdef\lastchapterdefs{%
++ \gdef\noexpand\thischaptername{\the\toks0}%
++ \gdef\noexpand\thischapternum{\the\chapno}%
++ \gdef\noexpand\thischapter{\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 \rm
+- \def\chapnum{#2}%
+- \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
++ %
++ % 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{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+- \hangindent = \wd0 \centerparametersmaybe
++ \hangindent=\wd0 \centerparametersmaybe
+ \unhbox0 #1\par}%
+ }%
+ \nobreak\bigskip % no page break after a chapter title
+ \nobreak
}
- \def\worddistinct{distinct}
- \def\wordexample{example}
- \def\wordcode{code}
--% Default is kbdinputdistinct. (Too much of a hassle to call the macro,
--% the catcodes are wrong for parsearg to work.)
--\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}
-+% Default is `distinct.'
-+\kbdinputstyle distinct
+-% Plain opening for unnumbered.
+-\def\unnchfplain#1{\chfplain{#1}{}}
+-
+ % @centerchap -- centered and unnumbered.
+ \let\centerparametersmaybe = \relax
+-\def\centerchfplain#1{{%
+- \def\centerparametersmaybe{%
+- \advance\rightskip by 3\rightskip
+- \leftskip = \rightskip
+- \parfillskip = 0pt
+- }%
+- \chfplain{#1}{}%
+-}}
++\def\centerparameters{%
++ \advance\rightskip by 3\rightskip
++ \leftskip = \rightskip
++ \parfillskip = 0pt
++}
- \def\xkey{\key}
- \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-@@ -1368,11 +2575,18 @@
- \else{\tclose{\kbdfont\look}}\fi
- \else{\tclose{\kbdfont\look}}\fi}
+-\CHAPFplain % The default
--% For @url, @env, @command quotes seem unnecessary, so use \code.
--\let\url=\code
-+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-+\let\indicateurl=\code
- \let\env=\code
- \let\command=\code
++% 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 {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\nobreak
+ }
+-
+ \def\chfopen #1#2{\chapoddpage {\chapfonts
+ \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+ \par\penalty 5000 %
+ }
+-
+ \def\centerchfopen #1{%
+ \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt
+ \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+ }
+-
+-\def\CHAPFopen{
+-\global\let\chapmacro=\chfopen
+-\global\let\unnumbchapmacro=\unnchfopen
+-\global\let\centerchapmacro=\centerchfopen}
++\def\CHAPFopen{%
++ \global\let\chapmacro=\chfopen
++ \global\let\centerchapmacro=\centerchfopen}
-+% @clicksequence{File @click{} Open ...}
-+\def\clicksequence#1{\begingroup #1\endgroup}
-+
-+% @clickstyle @arrow (by default)
-+\parseargdef\clickstyle{\def\click{#1}}
-+\def\click{\arrow}
-+
- % @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
-@@ -1401,9 +2615,13 @@
- \endlink
- \endgroup}
-+% @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.
--%
+-% Section titles.
++% Section titles. These macros combine the section number parts and
++% call the generic \sectionheading to do the printing.
+%
- %\def\email#1{\angleleft{\tt #1}\angleright}
- \ifpdf
- \def\email#1{\doemail#1,,\finish}
-@@ -1442,12 +2660,140 @@
- \def\sc#1{{\smallcaps#1}} % smallcaps font
- \def\ii#1{{\it #1}} % italic font
+ \newskip\secheadingskip
+-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+-\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
+-\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
++\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
--% @acronym downcases the argument and prints in smallcaps.
--\def\acronym#1{{\smallcaps \lowercase{#1}}}
-+% @acronym for "FBI", "NATO", and the like.
-+% We print this one point size smaller, since it's intended for
-+% all-uppercase.
-+%
-+\def\acronym#1{\doacronym #1,,\finish}
-+\def\doacronym#1,#2,#3\finish{%
-+ {\selectfonts\lsize #1}%
-+ \def\temp{#2}%
-+ \ifx\temp\empty \else
-+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
-+ \fi
-+}
+ % Subsection titles.
+-\newskip \subsecheadingskip
+-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
+-\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
+-\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
++\newskip\subsecheadingskip
++\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
--% @pounds{} is a sterling sign.
-+% @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
-+}
-+
-+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
-+%
- \def\pounds{{\it\$}}
+ % Subsubsection titles.
+-\let\subsubsecheadingskip = \subsecheadingskip
+-\let\subsubsecheadingbreak = \subsecheadingbreak
+-\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
+-\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
++\def\subsubsecheadingskip{\subsecheadingskip}
++\def\subsubsecheadingbreak{\subsecheadingbreak}
-+% @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.
+
+-% Print any size section title.
++% Print any size, any type, section title.
+ %
+-% #1 is the section type (sec/subsec/subsubsec), #2 is the section
+-% number (maybe empty), #3 the text.
+-\def\sectionheading#1#2#3{%
+- {%
+- \expandafter\advance\csname #1headingskip\endcsname by \parskip
+- \csname #1headingbreak\endcsname
+- }%
++% #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{%
+ {%
+ % Switch to the right set of fonts.
+- \csname #1fonts\endcsname \rm
++ \csname #2fonts\endcsname \rm
+ %
+- % Only insert the separating space if we have a section number.
+- \def\secnum{#2}%
+- \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
++ \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}%
++ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
++ \noexpand\thissectionname}%
++ }%
++ \fi
++ \else
++ \ifx\sectionlevel\seckeyword
++ \toks0={#1}%
++ \xdef\lastsectiondefs{%
++ \gdef\noexpand\thissectionname{\the\toks0}%
++ \gdef\noexpand\thissectionnum{#4}%
++ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
++ \noexpand\thissectionname}%
++ }%
++ \fi
++ \fi\fi\fi
++ %
++ % 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 \raggedright
+- \hangindent = \wd0 % zero if no section number
+- \unhbox0 #3}%
++ \hangindent=\wd0 % zero if no section number
++ \unhbox0 #1}%
+ }%
+- \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
++ % 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.)
++ \vskip-\parskip
+ %
-+ % By the way, simply using "at 1em" works for cmr10 and the like, but
-+ % does not work for cmbx10 and other extended/shrunken fonts.
++ % This is purely so the last item on the list is a known \penalty >
++ % 10000. This is so \startdefun can avoid allowing breakpoints after
++ % section headings. Otherwise, it would insert a valid breakpoint between:
+ %
-+ \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
-+}
-+
-+% Hacks for glyphs from the EC fonts similar to \euro. We don't
-+% use \let for the aliases, because sometimes we redefine the original
-+% macro, and the alias should reflect the redefinition.
-+\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}}
++ % @section sec-whatever
++ % @deffn def-whatever
++ \penalty 10001
+ }
+
+
+@@ -3754,161 +5411,224 @@
+ \newwrite\tocfile
+
+ % Write an entry to the toc file, opening it if necessary.
+-% Called from @chapter, etc. We supply {\folio} at the end of the
+-% argument, which will end up as the last argument to the \...entry macro.
++% Called from @chapter, etc.
+ %
+-% We open the .toc file here instead of at @setfilename or any other
+-% given time so that @contents can be put in the document anywhere.
++% 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.
+%
-+\def\ecfont{%
-+ % We can't distinguish serif/sanserif 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}%
-+ \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
-+ \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.
++% 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\writetocentry#1{%
+- \iftocfileopened\else
+- \immediate\openout\tocfile = \jobname.toc
+- \global\tocfileopenedtrue
++\def\omitkeyword{omit}%
+%
-+\def\registeredsymbol{%
-+ $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
-+ \hfil\crcr\Orb}}%
-+ }$%
++\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
+- \iflinks \write\tocfile{#1{\folio}}\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
+}
+
-+% @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.
++% 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.
+%
-+\ifx\Orb\undefined
-+\def\Orb{\mathhexbox20D}
-+\fi
++\def\activecatcodes{%
++ \catcode`\"=\active
++ \catcode`\$=\active
++ \catcode`\<=\active
++ \catcode`\>=\active
++ \catcode`\\=\active
++ \catcode`\^=\active
++ \catcode`\_=\active
++ \catcode`\|=\active
++ \catcode`\~=\active
++}
+
-+% Quotes.
-+\chardef\quotedblleft="5C
-+\chardef\quotedblright=`\"
-+\chardef\quoteleft=`\`
-+\chardef\quoteright=`\'
+
++% Read the toc file, which is essentially Texinfo input.
++\def\readtocfile{%
++ \setupdatafile
++ \activecatcodes
++ \input \tocreadfilename
+ }
- \message{page headings,}
-
-@@ -1466,86 +2812,103 @@
- \newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
--\def\shorttitlepage{\parsearg\shorttitlepagezzz}
--\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+ \newskip\contentsrightmargin \contentsrightmargin=1in
+ \newcount\savepageno
+ \newcount\lastnegativepageno \lastnegativepageno = -1
--\def\titlepage{\begingroup \parindent=0pt \textfonts
-- \let\subtitlerm=\tenrm
-- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
-- %
-- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
-- %
-- % Leave some space at the very top of the page.
-- \vglue\titlepagetopglue
-- %
-- % Now you can print the title using @title.
-- \def\title{\parsearg\titlezzz}%
-- \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
-- % print a rule at the page bottom also.
-- \finishedtitlepagefalse
-- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
-- % No rule at page bottom unless we print one at the top with @title.
-- \finishedtitlepagetrue
-- %
-- % Now you can put text using @subtitle.
-- \def\subtitle{\parsearg\subtitlezzz}%
-- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
-- %
-- % @author should come last, but may come many times.
-- \def\author{\parsearg\authorzzz}%
-- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
-- {\authorfont \leftline{##1}}}%
+-% Finish up the main text and prepare to read what we've written
+-% to \tocfile.
++% 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
- %
-- % 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{%
-+\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
+- % Don't need to put `Contents' or `Short Contents' in the headline.
+- % It is abundantly clear what they are.
+- \unnumbchapmacro{#1}\def\thischapter{}%
+- \savepageno = \pageno
+- \begingroup % Set up to handle contents files properly.
+- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
+- % We can't do this, because then an actual ^ in a section
+- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
+- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha at piuha.ydi.vtt.fi
+- \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 \pageno = \lastnegativepageno \fi
++ % 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.
+ %
-+ % 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
-+ \finishtitlepage
- \fi
-- \oldpage
- \let\page = \oldpage
-- \hbox{}}%
--% \def\page{\oldpage \hbox{}}
-+ \page
-+ \null
-+ }%
++ % Roman numerals for page numbers.
++ \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
}
- \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
-- %
-- % 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
-- %
-- \ifpdf \pdfmakepagedesttrue \fi
-- %
-- \HEADINGSon
-+ \iffinishedtitlepage\else
-+ \finishtitlepage
++% 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 \jobname.toc
+- \ifeof 1 \else
+- \closein 1
+- \input \jobname.toc
+- \fi
+- \vfill \eject
+- \contentsalignmacro % in case @setchapternewpage odd is in effect
+- \pdfmakeoutlines
+- \endgroup
+- \lastnegativepageno = \pageno
+- \pageno = \savepageno
++ \startcontents{\putwordTOC}%
++ \openin 1 \tocreadfilename\space
++ \ifeof 1 \else
++ \readtocfile
+ \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
++ \vfill \eject
++ \contentsalignmacro % in case @setchapternewpage odd is in effect
++ \ifeof 1 \else
++ \pdfmakeoutlines
++ \fi
++ \closein 1
+ \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
++ \lastnegativepageno = \pageno
++ \global\pageno = \savepageno
}
- \def\finishtitlepage{%
-- \vskip4pt \hrule height 2pt width \hsize
-- \vskip\titlepagebottomglue
-- \finishedtitlepagetrue
-+ \vskip4pt \hrule height 2pt width \hsize
-+ \vskip\titlepagebottomglue
-+ \finishedtitlepagetrue
+ % And just the chapters.
+ \def\summarycontents{%
+- \startcontents{\putwordShortTOC}%
+- %
+- \let\chapentry = \shortchapentry
+- \let\unnumbchapentry = \shortunnumberedentry
+- % We want a true roman here for the page numbers.
+- \secfonts
+- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
+- \rm
+- \hyphenpenalty = 10000
+- \advance\baselineskip by 1pt % Open it up a little.
+- \def\secentry ##1##2##3##4{}
+- \def\unnumbsecentry ##1##2{}
+- \def\subsecentry ##1##2##3##4##5{}
+- \def\unnumbsubsecentry ##1##2{}
+- \def\subsubsecentry ##1##2##3##4##5##6{}
+- \def\unnumbsubsubsecentry ##1##2{}
+- \openin 1 \jobname.toc
+- \ifeof 1 \else
+- \closein 1
+- \input \jobname.toc
+- \fi
+- \vfill \eject
+- \contentsalignmacro % in case @setchapternewpage odd is in effect
+- \endgroup
+- \lastnegativepageno = \pageno
+- \pageno = \savepageno
++ \startcontents{\putwordShortTOC}%
++ %
++ \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
-+%%% Macros to be used within @titlepage:
-+
-+\let\subtitlerm=\tenrm
-+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-+
-+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
-+ \let\tt=\authortt}
-+
-+\parseargdef\title{%
-+ \checkenv\titlepage
-+ \leftline{\titlefonts\rm #1}
-+ % 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.
+-\ifpdf
+- \pdfcatalog{/PageMode /UseOutlines}%
+-\fi
++% 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.
+%
-+\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
-+ {\authorfont \leftline{#1}}%
-+ \fi
++\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}%
+}
-+
-+
- %%% Set up page headings and footings.
- \let\thispage=\folio
-@@ -1555,7 +2918,7 @@
- \newtoks\evenfootline % footline on even pages
- \newtoks\oddfootline % footline on odd pages
+ % 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, ...
--% Now make Tex use those variables
-+% Now make TeX use those variables
- \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
- \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
-@@ -1569,43 +2932,64 @@
- % @evenfooting @thisfile||
- % @oddfooting ||@thisfile
+-% Chapter-level things, for both the long and short contents.
+-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
+-
+-% See comments in \dochapentry re vbox and related settings
+-\def\shortchapentry#1#2#3{%
+- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
++% 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}%
+ }
--\def\evenheading{\parsearg\evenheadingxxx}
--\def\oddheading{\parsearg\oddheadingxxx}
--\def\everyheading{\parsearg\everyheadingxxx}
+-% Typeset the label for a chapter or appendix for the short contents.
+-% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
+-% We could simplify the code here by writing out an \appendixentry
+-% command in the toc file for appendices, instead of using \chapentry
+-% for both, but it doesn't seem worth it.
++% Appendices, in the main contents.
++% Need the word Appendix, and a fixed-size box.
+ %
+-\newdimen\shortappendixwidth
++\def\appendixbox#1{%
++ % We use M since it's probably the widest letter.
++ \setbox0 = \hbox{\putwordAppendix{} M}%
++ \hbox to \wd0{\putwordAppendix{} #1\hss}}
+ %
+-\def\shortchaplabel#1{%
+- % Compute width of word "Appendix", may change with language.
+- \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
+- \shortappendixwidth = \wd0
+- %
+- % We typeset #1 in a box of constant width, regardless of the text of
+- % #1, so the chapter titles will come out aligned.
+- \setbox0 = \hbox{#1}%
+- \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
+- %
+- % This space should be plenty, since a single number is .5em, and the
+- % widest letter (M) is 1em, at least in the Computer Modern fonts.
+- % (This space doesn't include the extra space that gets added after
+- % the label; that gets put in by \shortchapentry above.)
+- \advance\dimen0 by 1.1em
+- \hbox to \dimen0{#1\hfil}%
+-}
++\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
--\def\evenfooting{\parsearg\evenfootingxxx}
--\def\oddfooting{\parsearg\oddfootingxxx}
--\def\everyfooting{\parsearg\everyfootingxxx}
--
--{\catcode`\@=0 %
--
--\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
--\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-+\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\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
+-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
++% 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\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
+-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
++\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
++\let\appsecentry=\numsecentry
++\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
--\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
--\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-+\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}}}
+ % Subsections.
+-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
+-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
++\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
++\let\appsubsecentry=\numsubsecentry
++\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
--\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+ % And subsubsections.
+-\def\subsubsecentry#1#2#3#4#5#6{%
+- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
+-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
++\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
++\let\appsubsubsecentry=\numsubsubsecentry
++\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
--\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
--\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-+\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}}}
+ % This parameter controls the indentation of the various levels.
+-\newdimen\tocindent \tocindent = 3pc
++% Same as \defaultparindent.
++\newdimen\tocindent \tocindent = 15pt
--\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
--\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
-+\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 -\baselineskip
-- \global\advance\vsize by -\baselineskip
-+ \global\advance\pageheight by -12pt
-+ \global\advance\vsize by -12pt
- }
+ % Now for the actual typesetting. In all these, #1 is the text and #2 is the
+ % page number.
+@@ -3939,17 +5659,8 @@
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \endgroup}
--\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-+\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
- %
--}% unbind the catcode of @.
-+% 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
+-% Final typesetting of a toc entry; we use the same \entry macro as for
+-% the index entries, but we want to suppress hyphenation here. (We
+-% can't do that in the \entry macro, since index entries might consist
+-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
+-\def\tocentry#1#2{\begingroup
+- \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
+- % Do not use \turnoffactive in these arguments. Since the toc is
+- % typeset in cmr, so characters such as _ would come out wrong; we
+- % have to do the usual translation tricks.
+- \entry{#1}{#2}%
+-\endgroup}
++% We use the same \entry macro as for the index entries.
++\let\tocentry = \entry
- % @headings double turns headings on for double-sided printing.
- % @headings single turns headings on for single-sided printing.
-@@ -1619,7 +3003,7 @@
+ % Space between chapter (or whatever) number and the title.
+ \def\labelspace{\hskip1em \relax}
+@@ -3959,72 +5670,62 @@
- \def\headings #1 {\csname HEADINGS#1\endcsname}
+ \def\chapentryfonts{\secfonts \rm}
+ \def\secentryfonts{\textfonts}
+-\let\subsecentryfonts = \textfonts
+-\let\subsubsecentryfonts = \textfonts
++\def\subsecentryfonts{\textfonts}
++\def\subsubsecentryfonts{\textfonts}
--\def\HEADINGSoff{
-+\def\HEADINGSoff{%
- \global\evenheadline={\hfil} \global\evenfootline={\hfil}
- \global\oddheadline={\hfil} \global\oddfootline={\hfil}}
- \HEADINGSoff
-@@ -1628,7 +3012,7 @@
- % 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{
-+\def\HEADINGSdouble{%
- \global\pageno=1
- \global\evenfootline={\hfil}
- \global\oddfootline={\hfil}
-@@ -1640,7 +3024,7 @@
- % For single-sided printing, chapter title goes across top left of page,
- % page number on top right.
--\def\HEADINGSsingle{
-+\def\HEADINGSsingle{%
- \global\pageno=1
- \global\evenfootline={\hfil}
- \global\oddfootline={\hfil}
-@@ -1670,7 +3054,10 @@
- }
+ \message{environments,}
+ % @foo ... @end foo.
- % Subroutines used in generating headings
--% Produces Day Month Year style of output.
-+% This produces Day Month Year style of output.
-+% Only define if not already defined, in case a txi-??.tex file has set
-+% up a different format (e.g., txi-cs.tex does this).
-+\ifx\today\undefined
- \def\today{%
- \number\day\space
- \ifcase\month
-@@ -1679,16 +3066,16 @@
- \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
- \fi
- \space\number\year}
-+\fi
+-% Since these characters are used in examples, it should be an even number of
+-% \tt widths. Each \tt character is 1en, so two makes it 1em.
+-% Furthermore, these definitions must come after we define our fonts.
+-\newbox\dblarrowbox \newbox\longdblarrowbox
+-\newbox\pushcharbox \newbox\bullbox
+-\newbox\equivbox \newbox\errorbox
+-
+-%{\tentt
+-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
+-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
+-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
+-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
+-% Adapted from the manmac format (p.420 of TeXbook)
+-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
+-% depth .1ex\hfil}
+-%}
+-
+ % @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\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
++\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\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
++\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
- % @settitle line... specifies the title of the document, for headings.
- % It generates no output of its own.
- \def\thistitle{\putwordNoTitle}
--\def\settitle{\parsearg\settitlezzz}
--\def\settitlezzz #1{\gdef\thistitle{#1}}
-+\def\settitle{\parsearg{\gdef\thistitle}}
++% 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 \tensf error\kern-1.5pt}
+-
+-\global\setbox\errorbox=\hbox to \dimen0{\hfil
++\setbox0 = \hbox{\kern-.75pt \reducedsf error\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{
++ \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}
+-
+-% The @error{} command.
++%
+ \def\error{\leavevmode\lower.7ex\copy\errorbox}
+ % @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 tex @ character.
- \message{tables,}
--% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
-+% Tables -- @table, @ftable, @vtable, @item(x).
+-\def\tex{\begingroup
++\envdef\tex{%
+ \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+ \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+- \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
++ \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+ \catcode `\%=14
+- \catcode 43=12 % plus
+- \catcode`\"=12
+- \catcode`\==12
+- \catcode`\|=12
+- \catcode`\<=12
+- \catcode`\>=12
++ \catcode `\+=\other
++ \catcode `\"=\other
++ \catcode `\|=\other
++ \catcode `\<=\other
++ \catcode `\>=\other
+ \escapechar=`\\
+ %
+ \let\b=\ptexb
+@@ -4036,20 +5737,26 @@
+ \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\@{@}%
+-\let\Etex=\endgroup}
++}
++% There is no need to define \Etex.
- % default indentation of table text
- \newdimen\tableindent \tableindent=.8in
-@@ -1700,7 +3087,7 @@
- % used internally for \itemindent minus \itemmargin
- \newdimen\itemmax
+-% Define @lisp ... @endlisp.
+-% @lisp does a \begingroup so it can rebind things,
+-% including the definition of @endlisp (which normally is erroneous).
++% Define @lisp ... @end lisp.
++% @lisp environment forms a group so it can rebind things,
++% including the definition of @end lisp (which normally is erroneous).
--% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
-+% 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).
-@@ -1712,22 +3099,10 @@
- \def\internalBitem{\smallbreak \parsearg\itemzzz}
- \def\internalBitemx{\itemxpar \parsearg\itemzzz}
+ % Amount to narrow the margins by for @lisp.
+ \newskip\lispnarrowing \lispnarrowing=0.4in
+@@ -4059,34 +5766,34 @@
+ % have any width.
+ \def\lisppar{\null\endgraf}
--\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
--\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
--
--\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
--\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
--
--\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
-- \itemzzz {#1}}
+-% 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.
+-%
+-{\obeyspaces %
+-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
--\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
-- \itemzzz {#1}}
+-% Define \obeyedspace to be our active space, whatever it is. This is
+-% for use in \parsearg.
+-{\sepspaces%
+-\global\let\obeyedspace= }
-
- \def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
-- \setbox0=\hbox{\itemfont{#1}}%
-+ \setbox0=\hbox{\itemindicate{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
-@@ -1751,10 +3126,14 @@
- % \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. Unfortunately
-- % we can't prevent a possible page break at the following
-- % \baselineskip glue.
-- \nobreak
-+ % 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
-@@ -1773,97 +3152,106 @@
- \fi
- }
+ % This space is always present above and below environments.
+ \newskip\envskipamount \envskipamount = 0pt
--\def\item{\errmessage{@item while not in a table}}
--\def\itemx{\errmessage{@itemx while not in a table}}
--\def\kitem{\errmessage{@kitem while not in a table}}
--\def\kitemx{\errmessage{@kitemx while not in a table}}
--\def\xitem{\errmessage{@xitem while not in a table}}
--\def\xitemx{\errmessage{@xitemx while not in a table}}
--
--% Contains a kludge to get @end[description] to work.
--\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-+\def\item{\errmessage{@item while not in a list environment}}
-+\def\itemx{\errmessage{@itemx while not in a list environment}}
+ % 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
++% start of the next paragraph will insert \parskip.
+ %
+-\def\aboveenvbreak{{\advance\envskipamount by \parskip
+-\endgraf \ifdim\lastskip<\envskipamount
+-\removelastskip \penalty-50 \vskip\envskipamount \fi}}
++\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
++}}
- % @table, @ftable, @vtable.
--\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
--{\obeylines\obeyspaces%
--\gdef\tablex #1^^M{%
--\tabley\dontindex#1 \endtabley}}
--
--\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
--{\obeylines\obeyspaces%
--\gdef\ftablex #1^^M{%
--\tabley\fnitemindex#1 \endtabley
--\def\Eftable{\endgraf\afterenvbreak\endgroup}%
--\let\Etable=\relax}}
--
--\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
--{\obeylines\obeyspaces%
--\gdef\vtablex #1^^M{%
--\tabley\vritemindex#1 \endtabley
--\def\Evtable{\endgraf\afterenvbreak\endgroup}%
--\let\Etable=\relax}}
--
--\def\dontindex #1{}
--\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
--\def\vritemindex #1{\doind {vr}{\code{#1}}}%
--
--{\obeyspaces %
--\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
--\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
--
--\def\tablez #1#2#3#4#5#6{%
--\aboveenvbreak %
--\begingroup %
--\def\Edescription{\Etable}% Necessary kludge.
--\let\itemindex=#1%
--\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
--\ifnum 0#4>0 \tableindent=#4\mil \fi %
--\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
--\def\itemfont{#2}%
--\itemmax=\tableindent %
--\advance \itemmax by -\itemmargin %
--\advance \leftskip by \tableindent %
--\exdentamount=\tableindent
--\parindent = 0pt
--\parskip = \smallskipamount
--\ifdim \parskip=0pt \parskip=2pt \fi%
--\def\Etable{\endgraf\afterenvbreak\endgroup}%
--\let\item = \internalBitem %
--\let\itemx = \internalBitemx %
--\let\kitem = \internalBkitem %
--\let\kitemx = \internalBkitemx %
--\let\xitem = \internalBxitem %
--\let\xitemx = \internalBxitemx %
-+\envdef\table{%
-+ \let\itemindex\gobble
-+ \tablecheck{table}%
-+}
-+\envdef\ftable{%
-+ \def\itemindex ##1{\doind {fn}{\code{##1}}}%
-+ \tablecheck{ftable}%
+ \let\afterenvbreak = \aboveenvbreak
+
+-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
++% \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
+@@ -4110,738 +5817,733 @@
+ %
+ \newskip\lskip\newskip\rskip
+
+-\long\def\cartouche{%
+-\begingroup
+- \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=\comment
+- \vbox\bgroup
+- \baselineskip=0pt\parskip=0pt\lineskip=0pt
+- \carttop
+- \hbox\bgroup
+- \hskip\lskip
+- \vrule\kern3pt
+- \vbox\bgroup
+- \hsize=\cartinner
+- \kern3pt
+- \begingroup
+- \baselineskip=\normbskip
+- \lineskip=\normlskip
+- \parskip=\normpskip
+- \vskip -\parskip
++\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%
++ \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.
+}
-+\envdef\vtable{%
-+ \def\itemindex ##1{\doind {vr}{\code{##1}}}%
-+ \tablecheck{vtable}%
+ \def\Ecartouche{%
+- \endgroup
+- \kern3pt
+- \egroup
+- \kern3pt\vrule
+- \hskip\rskip
+- \egroup
+- \cartbot
+- \egroup
+-\endgroup
+-}}
++ \ifhmode\par\fi
++ \kern3pt
++ \egroup
++ \kern3pt\vrule
++ \hskip\rskip
++ \egroup
++ \cartbot
++ \egroup
++ \checkinserts
+}
-+\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}}%
+
+
+ % This macro is called at the beginning of all the @example variants,
+ % inside a group.
+ \def\nonfillstart{%
+ \aboveenvbreak
+- \inENV % This group ends at the end of the body
+ \hfuzz = 12pt % Don't be fussy
+ \sepspaces % Make spaces be word-separators rather than space tokens.
+- \singlespace
+ \let\par = \lisppar % don't ignore blank lines
+ \obeylines % each line of input is a line of output
+ \parskip = 0pt
+ \parindent = 0pt
+ \emergencystretch = 0pt % don't try to avoid overfull boxes
+- % @cartouche defines \nonarrowing to inhibit narrowing
+- % at next level down.
+ \ifx\nonarrowing\relax
+ \advance \leftskip by \lispnarrowing
+ \exdentamount=\lispnarrowing
+- \let\exdent=\nofillexdent
+- \let\nonarrowing=\relax
+ \else
-+ \let\next\tablex
-+ \fi
-+ \next
-+}
-+\def\tablex#1{%
-+ \def\itemindicate{#1}%
-+ \parsearg\tabley
++ \let\nonarrowing = \relax
+ \fi
++ \let\exdent=\nofillexdent
}
-+\def\tabley#1{%
-+ {%
-+ \makevalueexpandable
-+ \edef\temp{\noexpand\tablez #1\space\space\space}%
-+ \expandafter
-+ }\temp \endtablez
+
+-% Define the \E... control sequence only if we are inside the particular
+-% environment, so the error checking in \end will work.
+-%
+-% To end an @example-like environment, we first end the paragraph (via
+-% \afterenvbreak's vertical glue), and then the group. That way we keep
+-% the zero \parskip that the environments set -- \parskip glue will be
+-% inserted at the beginning of the next paragraph in the document, after
+-% the environment.
++% 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\nonfillfinish{\afterenvbreak\endgroup}
++\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\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\setsmalldispenv{%
++ \ifx\SETdispenvsize\nosmallword
++ \else
++ \ifnum \lastpenalty=10000 \else \endgraf \fi
++ \smallexamplefonts \rm
++ \fi
+}
-+\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
+-% @lisp: indented, narrowed, typewriter font.
+-\def\lisp{\begingroup
+- \nonfillstart
+- \let\Elisp = \nonfillfinish
+- \tt
+- \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+- \gobble % eat return
++% We often define two environments, @foo and @smallfoo.
++% Let's do it by one command:
++\def\makedispenv #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
+ }
- \newcount \itemno
+-% @example: Same as @lisp.
+-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
++% Define two synonyms:
++\def\maketwodispenvs #1#2#3{
++ \makedispenv{#1}{#3}
++ \makedispenv{#2}{#3}
++}
--\def\itemize{\parsearg\itemizezzz}
-+\envdef\itemize{\parsearg\doitemize}
+-% @small... is usually equivalent to the non-small (@smallbook
+-% redefines). We must call \example (or whatever) last in the
+-% definition, since it reads the return following the @example (or
+-% whatever) command.
+-%
+-% This actually allows (for example) @end display inside an
+-% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
++% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+ %
+-\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display}
+-\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp}
+-\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format}
+-\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
+-
+-% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts.
++% @smallexample and @smalllisp: use smaller fonts.
+ % Originally contributed by Pavel at xerox.
+-\def\smalllispx{\begingroup
+- \def\Esmalllisp{\nonfillfinish\endgroup}%
+- \def\Esmallexample{\nonfillfinish\endgroup}%
+- \smallfonts
+- \lisp
+-}
+-
+-% @display: same as @lisp except keep current font.
+ %
+-\def\display{\begingroup
++\maketwodispenvs {lisp}{example}{%
+ \nonfillstart
+- \let\Edisplay = \nonfillfinish
+- \gobble
++ \tt\quoteexpand
++ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
++ \gobble % eat return
+ }
+-
+-% @smalldisplay (when @smallbook): @display plus smaller fonts.
++% @display/@smalldisplay: same as @lisp except keep current font.
+ %
+-\def\smalldisplayx{\begingroup
+- \def\Esmalldisplay{\nonfillfinish\endgroup}%
+- \smallfonts \rm
+- \display
++\makedispenv {display}{%
++ \nonfillstart
++ \gobble
+ }
--\def\itemizezzz #1{%
-- \begingroup % ended by the @end itemize
-- \itemizey {#1}{\Eitemize}
-+\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
-+ \def\itemcontents{#1}%
-+ % @itemize with no arg is equivalent to @itemize @bullet.
-+ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
-+ \let\item=\itemizeitem
+-% @format: same as @display except don't narrow margins.
++% @format/@smallformat: same as @display except don't narrow margins.
+ %
+-\def\format{\begingroup
+- \let\nonarrowing = t
++\makedispenv{format}{%
++ \let\nonarrowing = t%
+ \nonfillstart
+- \let\Eformat = \nonfillfinish
+ \gobble
}
--\def\itemizey #1#2{%
--\aboveenvbreak %
--\itemmax=\itemindent %
--\advance \itemmax by -\itemmargin %
--\advance \leftskip by \itemindent %
--\exdentamount=\itemindent
--\parindent = 0pt %
--\parskip = \smallskipamount %
--\ifdim \parskip=0pt \parskip=2pt \fi%
--\def#2{\endgraf\afterenvbreak\endgroup}%
--\def\itemcontents{#1}%
--\let\item=\itemizeitem}
+-% @smallformat (when @smallbook): @format plus smaller fonts.
+-%
+-\def\smallformatx{\begingroup
+- \def\Esmallformat{\nonfillfinish\endgroup}%
+- \smallfonts \rm
+- \format
++% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
++\envdef\flushleft{%
++ \let\nonarrowing = t%
++ \nonfillstart
++ \gobble
+ }
-
--% Set sfcode to normal for the chars that usually have another value.
--% These are `.?!:;,'
--\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
-- \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-+% 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
-+}
+-% @flushleft (same as @format).
+-%
+-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
++\let\Eflushleft = \afterenvbreak
- % \splitoff TOKENS\endmark defines \first to be the first token in
- % TOKENS, and \rest to be the remainder.
-@@ -1874,11 +3262,8 @@
- % or number, to specify the first label in the enumerated list. No
- % argument is the same as `1'.
+ % @flushright.
%
--\def\enumerate{\parsearg\enumeratezzz}
--\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-+\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
- \def\enumeratey #1 #2\endenumeratey{%
-- \begingroup % ended by the @end enumerate
-- %
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
-@@ -1949,13 +3334,13 @@
- }%
+-\def\flushright{\begingroup
+- \let\nonarrowing = t
++\envdef\flushright{%
++ \let\nonarrowing = t%
+ \nonfillstart
+- \let\Eflushright = \nonfillfinish
+ \advance\leftskip by 0pt plus 1fill
+ \gobble
}
++\let\Eflushright = \afterenvbreak
++
--% Call itemizey, adding a period to the first argument and supplying the
-+% 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.
+ % @quotation does normal linebreaking (hence we can't use \nonfillstart)
+-% and narrows the margins.
++% 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.
%
- \def\startenumeration#1{%
- \advance\itemno by -1
-- \itemizey{#1.}\Eenumerate\flushcr
-+ \doitemize{#1.}\flushcr
+-\def\quotation{%
+- \begingroup\inENV %This group ends at the end of the @quotation body
++\envdef\quotation{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+- \singlespace
+ \parindent=0pt
+- % We have retained a nonzero parskip for the environment, since we're
+- % doing normal filling. So to avoid extra space below the environment...
+- \def\Equotation{\parskip = 0pt \nonfillfinish}%
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \advance\rightskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
++ \else
+ \let\nonarrowing = \relax
+ \fi
++ \parsearg\quotationlabel
}
- % @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-@@ -1966,16 +3351,6 @@
- \def\Ealphaenumerate{\Eenumerate}
- \def\Ecapsenumerate{\Eenumerate}
++% We have retained a nonzero parskip for the environment, since we're
++% doing normal filling.
++%
++\def\Equotation{%
++ \par
++ \ifx\quotationauthor\undefined\else
++ % indent a bit.
++ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
++ \fi
++ {\parskip=0pt \afterenvbreak}%
++}
--% Definition of @item while inside @itemize.
+-\message{defuns,}
+-% @defun etc.
-
--\def\itemizeitem{%
--\advance\itemno by 1
--{\let\par=\endgraf \smallbreak}%
--\ifhmode \errmessage{In hmode at itemizeitem}\fi
--{\parskip=0in \hskip 0pt
--\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
--\vadjust{\penalty 1200}}%
--\flushcr}
-
- % @multitable macros
- % Amy Hendrickson, 8/18/94, 3/6/96
-@@ -2002,24 +3377,14 @@
- % @multitable {Column 1 template} {Column 2 template} {Column 3 template}
- % @item ...
- % using the widest term desired in each column.
--%
--% For those who want to use more than one line's worth of words in
--% the preamble, break the line within one argument and it
--% will parse correctly, i.e.,
--%
--% @multitable {Column 1 template} {Column 2 template} {Column 3
--% template}
--% Not:
--% @multitable {Column 1 template} {Column 2 template}
--% {Column 3 template}
-
- % 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, @multitable or @end multitable do not need to be on their
--% own lines, but it will not hurt if they are.
-+% @item, @tab do not need to be on their own lines, but it will not hurt
-+% if they are.
-
- % Sample multitable:
+-% Allow user to change definition object font (\df) internally
+-\def\setdeffont #1 {\csname DEF#1\endcsname}
+-
+-\newskip\defbodyindent \defbodyindent=.4in
+-\newskip\defargsindent \defargsindent=50pt
+-\newskip\deftypemargin \deftypemargin=12pt
+-\newskip\deflastargmargin \deflastargmargin=18pt
+-
+-\newcount\parencount
+-% define \functionparens, which makes ( and ) and & do special things.
+-% \functionparens affects the group it is contained in.
+-\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 = )
+-
+-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
+-
+-% 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.
+-\global\let(=\lparen \global\let)=\rparen
+-\global\let[=\lbrack \global\let]=\rbrack
++% 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
++}
-@@ -2063,13 +3428,12 @@
- \def\xcolumnfractions{\columnfractions}
- \newif\ifsetpercent
+-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
+-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+-% This is used to turn on special parens
+-% but make & act ordinary (given that it's active).
+-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
--% #1 is the part of the @columnfraction before the decimal point, which
--% is presumably either 0 or the empty string (but we don't check, we
--% just throw it away). #2 is the decimal part, which we use as the
--% percent of \hsize for this column.
--\def\pickupwholefraction#1.#2 {%
-+% #1 is the @columnfraction, usually a decimal number like .5, but might
-+% be just 1. We just use it, whatever it is.
+-% Definitions of (, ) and & used in args for functions.
+-% This is the definition of ( outside of all parentheses.
+-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
+- \global\advance\parencount by 1
++% 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
+%
-+\def\pickupwholefraction#1 {%
- \global\advance\colcount by 1
-- \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
-+ \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
- \setuptable
++% [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\"%
}
-
-@@ -2086,8 +3450,8 @@
- \let\go\pickupwholefraction
- \else
- \global\advance\colcount by 1
-- \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator;
-- % typically that is always in the input, anyway.
-+ \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
-@@ -2102,18 +3466,33 @@
- \go
+ %
+-% This is the definition of ( when already inside a level of parens.
+-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
++% [Knuth] p. 380
++\def\uncatcodespecials{%
++ \def\do##1{\catcode`##1=\other}\dospecials}
+ %
+-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
+- % also in that case restore the outer-level definition of (.
+- \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
+- \global\advance \parencount by -1 }
+-% If we encounter &foo, then turn on ()-hacking afterwards
+-\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }
++% [Knuth] pp. 380,381,391
++% Disable Spanish ligatures ?` and !` of \tt font
++\begingroup
++ \catcode`\`=\active\gdef`{\relax\lq}
++\endgroup
+ %
+-\gdef\normalparens{\boldbrax\let&=\ampnr}
+-} % End of definition inside \activeparens
+-%% These parens (in \boldbrax) actually are a little bolder than the
+-%% contained text. This is especially needed for [ and ]
+-\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
+-\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
+-\let\ampnr = \&
+-\def\lbrb{{\bf\char`\[}}
+-\def\rbrb{{\bf\char`\]}}
+-
+-% Active &'s sneak into the index arguments, so make sure it's defined.
+-{
+- \catcode`& = 13
+- \global\let& = \ampnr
++% 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}%
++ \catcode`\`=\active
++ \tabeightspaces
++ % Respect line breaks,
++ % print special symbols as themselves, and
++ % make each space count
++ % must do in this order:
++ \obeylines \uncatcodespecials \sepspaces
}
--% This used to have \hskip1sp. But then the space in a template line is
--% not enough. That is bad. So let's go back to just & until we
--% encounter the problem it was intended to solve again.
--% --karl, nathan at acm.org, 20apr99.
--\def\tab{&}
-+% multitable-only commands.
+-% First, defname, which formats the header line itself.
+-% #1 should be the function name.
+-% #2 should be the type of definition, such as "Function".
++% Setup for the @verbatim environment
+%
-+% @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. Note that \everycr resets \everytab.
-+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
++% Real tab expansion
++\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
-+% 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 encounter the problem it was intended to solve again.
-+% --karl, nathan at acm.org, 20apr99.
-+\def\tab{\checkenv\multitable &\the\everytab}%
++\def\starttabbox{\setbox0=\hbox\bgroup}
- % @multitable ... @end multitable definitions:
- %
--\def\multitable{\parsearg\dotable}
--\def\dotable#1{\bgroup
-+\newtoks\everytab % insert after every tab.
+-\def\defname #1#2{%
+-% Get the values of \leftskip and \rightskip as they were
+-% outside the @def...
+-\dimen2=\leftskip
+-\advance\dimen2 by -\defbodyindent
+-\noindent
+-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
+-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
+-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
+-\parshape 2 0in \dimen0 \defargsindent \dimen1
+-% Now output arg 2 ("Function" or some such)
+-% ending at \deftypemargin from the right margin,
+-% but stuck inside a box of width 0 so it does not interfere with linebreaking
+-{% Adjust \hsize to exclude the ambient margins,
+-% so that \rightline will obey them.
+-\advance \hsize by -\dimen2
+-\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
+-% Make all lines underfull and no complaints:
+-\tolerance=10000 \hbadness=10000
+-\advance\leftskip by -\defbodyindent
+-\exdentamount=\defbodyindent
+-{\df #1}\enskip % Generate function name
++% Allow an option to not replace quotes with a regular directed right
++% quote/apostrophe (char 0x27), but instead use the undirected quote
++% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
++% the default, but it works for pasting with more pdf viewers (at least
++% evince), the lilypond developers report. xpdf does work with the
++% regular 0x27.
++%
++\def\codequoteright{%
++ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
++ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
++ '%
++ \else \char'15 \fi
++ \else \char'15 \fi
+ }
+%
-+\envdef\multitable{%
- \vskip\parskip
-- \let\item\crcr
-+ \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
-@@ -2121,81 +3500,93 @@
- \parindent=\multitableparindent
- \overfullrule=0pt
- \global\colcount=0
-- \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}%
- %
-+ \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.
++% 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
++ `%
++ \else \char'22 \fi
++ \else \char'22 \fi
++}
++%
++\begingroup
++ \catcode`\^^I=\active
++ \gdef\tabexpand{%
++ \catcode`\^^I=\active
++ \def^^I{\leavevmode\egroup
++ \dimen0=\wd0 % the width so far, or since the previous tab
++ \divide\dimen0 by\tabw
++ \multiply\dimen0 by\tabw % compute previous multiple of \tabw
++ \advance\dimen0 by\tabw % advance to next multiple of \tabw
++ \wd0=\dimen0 \box0 \starttabbox
+ }%
-+ }%
++ }
++ \catcode`\'=\active
++ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+ %
-+ \parsearg\domultitable
-+}
-+\def\domultitable#1{%
- % To parse everything between @multitable and @item:
- \setuptable#1 \endsetuptable
- %
-- % \everycr will reset column counter, \colcount, at the end of
-- % each line. Every column entry will cause \colcount to advance by one.
-- % The table preamble
-- % looks at the current \colcount to find the correct column width.
-- \everycr{\noalign{%
-- %
-- % \filbreak%% keeps underfull box messages off when table breaks over pages.
-- % 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.
-- \global\colcount=0\relax}}%
-- %
- % 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\relax
-- \multistrut\vtop{\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
-+ \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
++ \catcode`\`=\active
++ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
++ %
++ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
++\endgroup
+
+-% Actually process the body of a definition
+-% #1 should be the terminating control sequence, such as \Edefun.
+-% #2 should be the "another name" control sequence, such as \defunx.
+-% #3 should be the control sequence that actually processes the header,
+-% such as \defunheader.
+-
+-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+-\medbreak %
+-% Define the end token that this defining construct specifies
+-% so that it will exit this group.
+-\def#1{\endgraf\endgroup\medbreak}%
+-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
+-\parindent=0in
+-\advance\leftskip by \defbodyindent
+-\exdentamount=\defbodyindent
+-\begingroup %
+-\catcode 61=\active % 61 is `='
+-\obeylines\activeparens\spacesplit#3}
++% start the verbatim environment.
++\def\setupverbatim{%
++ \let\nonarrowing = t%
++ \nonfillstart
++ % Easiest (and conventionally used) font for verbatim
++ \tt
++ \def\par{\leavevmode\egroup\box0\endgraf}%
++ \catcode`\`=\active
++ \tabexpand
++ \quoteexpand
++ % Respect line breaks,
++ % print special symbols as themselves, and
++ % make each space count
++ % must do in this order:
++ \obeylines \uncatcodespecials \sepspaces
++ \everypar{\starttabbox}%
+}
-+\def\Emultitable{%
-+ \crcr
-+ \egroup % end the \halign
-+ \global\setpercentfalse
- }
--\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
--% If so, do nothing. If not, give it an appropriate dimension based on
--% current baselineskip.
-+\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
--%% strut to put in table in case some entry doesn't have descenders,
--%% to keep lines equally spaced
--\let\multistrut = \strut
--\else
--%% FIXME: what is \box0 supposed to be?
--\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
--width0pt\relax} \fi
-+\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.
-@@ -2212,282 +3603,178 @@
+-% #1 is the \E... control sequence to end the definition (which we define).
+-% #2 is the \...x control sequence for consecutive fns (which we define).
+-% #3 is the control sequence to call to resume processing.
+-% #4, delimited by the space, is the class name.
++% 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\defmethparsebody#1#2#3#4 {\begingroup\inENV %
+-\medbreak %
+-% Define the end token that this defining construct specifies
+-% so that it will exit this group.
+-\def#1{\endgraf\endgroup\medbreak}%
+-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
+-\parindent=0in
+-\advance\leftskip by \defbodyindent
+-\exdentamount=\defbodyindent
+-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
++% \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
+-% Used for @deftypemethod and @deftypeivar.
+-% #1 is the \E... control sequence to end the definition (which we define).
+-% #2 is the \...x control sequence for consecutive fns (which we define).
+-% #3 is the control sequence to call to resume processing.
+-% #4, delimited by a space, is the class name.
+-% #5 is the method's return type.
++
++% @verbatiminclude FILE - insert text of file in verbatim environment.
+ %
+-\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
+- \medbreak
+- \def#1{\endgraf\endgroup\medbreak}%
+- \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
+- \parindent=0in
+- \advance\leftskip by \defbodyindent
+- \exdentamount=\defbodyindent
+- \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
++\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
++%
++\def\doverbatiminclude#1{%
++ {%
++ \makevalueexpandable
++ \setupverbatim
++ \input #1
++ \afterenvbreak
++ }%
++}
- \message{conditionals,}
--% Prevent errors for section commands.
--% Used in @ignore and in failing conditionals.
--\def\ignoresections{%
-- \let\chapter=\relax
-- \let\unnumbered=\relax
-- \let\top=\relax
-- \let\unnumberedsec=\relax
-- \let\unnumberedsection=\relax
-- \let\unnumberedsubsec=\relax
-- \let\unnumberedsubsection=\relax
-- \let\unnumberedsubsubsec=\relax
-- \let\unnumberedsubsubsection=\relax
-- \let\section=\relax
-- \let\subsec=\relax
-- \let\subsubsec=\relax
-- \let\subsection=\relax
-- \let\subsubsection=\relax
-- \let\appendix=\relax
-- \let\appendixsec=\relax
-- \let\appendixsection=\relax
-- \let\appendixsubsec=\relax
-- \let\appendixsubsection=\relax
-- \let\appendixsubsubsec=\relax
-- \let\appendixsubsubsection=\relax
-- \let\contents=\relax
-- \let\smallbook=\relax
-- \let\titlepage=\relax
--}
+-% Used for @deftypeop. The change from \deftypemethparsebody is an
+-% extra argument at the beginning which is the `category', instead of it
+-% being the hardwired string `Method' or `Instance Variable'. We have
+-% to account for this both in the \...x definition and in parsing the
+-% input at hand. Thus also need a control sequence (passed as #5) for
+-% the \E... definition to assign the category name to.
+-%
+-\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
+- \medbreak
+- \def#1{\endgraf\endgroup\medbreak}%
+- \def#2##1 ##2 ##3 {%
+- \def#4{##1}%
+- \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
+- \parindent=0in
+- \advance\leftskip by \defbodyindent
+- \exdentamount=\defbodyindent
+- \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
++% @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
++}
+
+-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
+-\medbreak %
+-% Define the end token that this defining construct specifies
+-% so that it will exit this group.
+-\def#1{\endgraf\endgroup\medbreak}%
+-\def#2##1 ##2 {\def#4{##1}%
+-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
+-\parindent=0in
+-\advance\leftskip by \defbodyindent
+-\exdentamount=\defbodyindent
+-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
+
+-% These parsing functions are similar to the preceding ones
+-% except that they do not make parens into active characters.
+-% These are used for "variables" since they have no arguments.
++\message{defuns,}
++% @defun etc.
+
+-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+-\medbreak %
+-% Define the end token that this defining construct specifies
+-% so that it will exit this group.
+-\def#1{\endgraf\endgroup\medbreak}%
+-\def#2{\begingroup\obeylines\spacesplit#3}%
+-\parindent=0in
+-\advance\leftskip by \defbodyindent
+-\exdentamount=\defbodyindent
+-\begingroup %
+-\catcode 61=\active %
+-\obeylines\spacesplit#3}
++\newskip\defbodyindent \defbodyindent=.4in
++\newskip\defargsindent \defargsindent=50pt
++\newskip\deflastargmargin \deflastargmargin=18pt
++\newcount\defunpenalty
+
+-% This is used for \def{tp,vr}parsebody. It could probably be used for
+-% some of the others, too, with some judicious conditionals.
+-%
+-\def\parsebodycommon#1#2#3{%
+- \begingroup\inENV %
+- \medbreak %
+- % Define the end token that this defining construct specifies
+- % so that it will exit this group.
+- \def#1{\endgraf\endgroup\medbreak}%
+- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
++% 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 minor 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
+- \begingroup\obeylines
+ }
--% Used in nested conditionals, where we have to parse the Texinfo source
--% and so want to turn off most commands, in case they are used
--% incorrectly.
-+% @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\defvrparsebody#1#2#3#4 {%
+- \parsebodycommon{#1}{#2}{#3}%
+- \spacesplit{#3{#4}}%
++\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{}
+
+-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
+-% type is just `struct', because we lose the braces in `{struct
+-% termios}' when \spacesplit reads its undelimited argument. Sigh.
+-% \let\deftpparsebody=\defvrparsebody
+-%
+-% So, to get around this, we put \empty in with the type name. That
+-% way, TeX won't find exactly `{...}' as an undelimited argument, and
+-% won't strip off the braces.
++% \printdefunline \deffnheader{text}
%
--\def\ignoremorecommands{%
-- \let\defcodeindex = \relax
-- \let\defcv = \relax
-- \let\deffn = \relax
-- \let\deffnx = \relax
-- \let\defindex = \relax
-- \let\defivar = \relax
-- \let\defmac = \relax
-- \let\defmethod = \relax
-- \let\defop = \relax
-- \let\defopt = \relax
-- \let\defspec = \relax
-- \let\deftp = \relax
-- \let\deftypefn = \relax
-- \let\deftypefun = \relax
-- \let\deftypeivar = \relax
-- \let\deftypeop = \relax
-- \let\deftypevar = \relax
-- \let\deftypevr = \relax
-- \let\defun = \relax
-- \let\defvar = \relax
-- \let\defvr = \relax
-- \let\ref = \relax
-- \let\xref = \relax
-- \let\printindex = \relax
-- \let\pxref = \relax
-- \let\settitle = \relax
-- \let\setchapternewpage = \relax
-- \let\setchapterstyle = \relax
-- \let\everyheading = \relax
-- \let\evenheading = \relax
-- \let\oddheading = \relax
-- \let\everyfooting = \relax
-- \let\evenfooting = \relax
-- \let\oddfooting = \relax
-- \let\headings = \relax
-- \let\include = \relax
-- \let\lowersections = \relax
-- \let\down = \relax
-- \let\raisesections = \relax
-- \let\up = \relax
-- \let\set = \relax
-- \let\clear = \relax
-- \let\item = \relax
-+\def\makecond#1{%
-+ \expandafter\let\csname #1\endcsname = \relax
-+ \expandafter\let\csname iscond.#1\endcsname = 1
+-\def\deftpparsebody #1#2#3#4 {%
+- \parsebodycommon{#1}{#2}{#3}%
+- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
++\def\printdefunline#1#2{%
++ \begingroup
++ % call \deffnheader:
++ #1#2 \endheader
++ % common ending:
++ \interlinepenalty = 10000
++ \advance\rightskip by 0pt plus 1fil
++ \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
}
-+\makecond{iftex}
-+\makecond{ifnotdocbook}
-+\makecond{ifnothtml}
-+\makecond{ifnotinfo}
-+\makecond{ifnotplaintext}
-+\makecond{ifnotxml}
--% Ignore @ignore ... @end ignore.
+-% Fine, but then we have to eventually remove the \empty *and* the
+-% braces (if any). That's what this does.
-%
--\def\ignore{\doignore{ignore}}
--
--% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
-+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+-\def\removeemptybraces\empty#1\relax{#1}
++\def\Edefun{\endgraf\medbreak}
+
+-% After \spacesplit has done its work, this is called -- #1 is the final
+-% thing to call, #2 the type name (which starts with \empty), and #3
+-% (which might be empty) the arguments.
++% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
++% the only thing remaining is to define \deffnheader.
%
--\def\ifinfo{\doignore{ifinfo}}
-+\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\html{\doignore{html}}
-+\def\ifplaintext{\doignore{ifplaintext}}
-+\def\ifxml{\doignore{ifxml}}
-+\def\ignore{\doignore{ignore}}
- \def\menu{\doignore{menu}}
--\def\direntry{\doignore{direntry}}
+-\def\parsetpheaderline#1#2#3{%
+- #1{\removeemptybraces#2\relax}{#3}%
+-}%
-
--% @dircategory CATEGORY -- specify a category of the dir file
--% which this file should belong to. Ignore this in TeX.
--\let\dircategory = \comment
-+\def\xml{\doignore{xml}}
+-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
+-\medbreak %
+-% Define the end token that this defining construct specifies
+-% so that it will exit this group.
+-\def#1{\endgraf\endgroup\medbreak}%
+-\def#2##1 ##2 {\def#4{##1}%
+-\begingroup\obeylines\spacesplit{#3{##2}}}%
+-\parindent=0in
+-\advance\leftskip by \defbodyindent
+-\exdentamount=\defbodyindent
+-\begingroup\obeylines\spacesplit{#3{#5}}}
++\def\makedefun#1{%
++ \expandafter\let\csname E#1\endcsname = \Edefun
++ \edef\temp{\noexpand\domakedefun
++ \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
++ \temp
++}
--% Ignore text until a line `@end #1'.
-+% 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
-- % Don't complain about control sequences we have declared \outer.
-- \ignoresections
-- %
-- % Define a command to swallow text until we reach `@end #1'.
-- % This @ is a catcode 12 token (that is the normal catcode of @ in
-- % this texinfo.tex file). We change the catcode of @ below to match.
-- \long\def\doignoretext##1 at end #1{\enddoignore}%
-+ % Scan in ``verbatim'' mode:
-+ \obeylines
-+ \catcode`\@ = \other
-+ \catcode`\{ = \other
-+ \catcode`\} = \other
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
-- \catcode32 = 10
-- %
-- % Ignore braces, too, so mismatched braces don't cause trouble.
-- \catcode`\{ = 9
-- \catcode`\} = 9
-- %
-- % We must not have @c interpreted as a control sequence.
-- \catcode`\@ = 12
-+ \spaceisspace
- %
-- % Make the letter c a comment character so that the rest of the line
-- % will be ignored. This way, the document can have (for example)
-- % @c @end ifinfo
-- % and the @end ifinfo will be properly ignored.
-- % (We've just changed @ to catcode 12.)
-- \catcode`\c = 14
-+ % Count number of #1's that we've seen.
-+ \doignorecount = 0
- %
-- % And now expand that command.
-- \doignoretext
+-% Split up #2 at the first space token.
+-% call #1 with two arguments:
+-% the first is all of #2 before the space token,
+-% the second is all of #2 after that space token.
+-% If #2 contains no space token, all of it is passed as the first arg
+-% and the second is passed as empty.
++% \domakedefun \deffn \deffnx \deffnheader
++%
++% Define \deffn and \deffnx, without parameters.
++% \deffnheader has to be defined explicitly.
++%
++\def\domakedefun#1#2#3{%
++ \envdef#1{%
++ \startdefun
++ \parseargusing\activeparens{\printdefunline#3}%
++ }%
++ \def#2{\dodefunx#1}%
++ \def#3%
++}
+
+-{\obeylines
+-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
+-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
+-\ifx\relax #3%
+-#1{#2}{}\else #1{#2}{#3#4}\fi}}
++%%% Untyped functions:
+
+-% So much for the things common to all kinds of definitions.
++% @deffn category name args
++\makedefun{deffn}{\deffngeneral{}}
+
+-% Define @defun.
++% @deffn category class name args
++\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+-% First, define the processing that is wanted for arguments of \defun
+-% Use this to expand the args and terminate the paragraph they make up
++% \defopon {category on}class name args
++\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+-\def\defunargs#1{\functionparens \sl
+-% Expand, preventing hyphenation at `-' chars.
+-% Note that groups don't affect changes in \hyphenchar.
+-% Set the font temporarily and use \font in case \setfont made \tensl a macro.
+-{\tensl\hyphenchar\font=0}%
+-#1%
+-{\tensl\hyphenchar\font=45}%
+-\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
+-\interlinepenalty=10000
+-\advance\rightskip by 0pt plus 1fil
+-\endgraf\nobreak\vskip -\parskip\nobreak
++% \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}%
+ }
+
+-\def\deftypefunargs #1{%
+-% Expand, preventing hyphenation at `-' chars.
+-% Note that groups don't affect changes in \hyphenchar.
+-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
+-\boldbraxnoamp
+-\tclose{#1}% avoid \code because of side effects on active chars
+-\interlinepenalty=10000
+-\advance\rightskip by 0pt plus 1fil
+-\endgraf\nobreak\vskip -\parskip\nobreak
-}
--
--% What we do to finish off ignored text.
--%
--\def\enddoignore{\endgroup\ignorespaces}%
--
--\newif\ifwarnedobs\warnedobsfalse
--\def\obstexwarn{%
-- \ifwarnedobs\relax\else
-- % We need to warn folks that they may have trouble with TeX 3.0.
-- % This uses \immediate\write16 rather than \message to get newlines.
-- \immediate\write16{}
-- \immediate\write16{WARNING: for users of Unix TeX 3.0!}
-- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
-- \immediate\write16{If you are running another version of TeX, relax.}
-- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
-- \immediate\write16{ Then upgrade your TeX installation if you can.}
-- \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
-- \immediate\write16{If you are stuck with version 3.0, run the}
-- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
-- \immediate\write16{ to use a workaround.}
-- \immediate\write16{}
-- \global\warnedobstrue
-- \fi
-+ % Swallow text until we reach the matching `@end #1'.
-+ \dodoignore{#1}%
++%%% Typed functions:
+
+-% Do complete processing of one @defun or @defunx line already parsed.
++% @deftypefn category type name args
++\makedefun{deftypefn}{\deftypefngeneral{}}
+
+-% @deffn Command forward-char nchars
++% @deftypeop category class type name args
++\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
++% \deftypeopon {category on}class type name args
++\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
+-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
+-\catcode 61=\other % Turn off change made in \defparsebody
++% \deftypefngeneral {subind}category type name args
++%
++\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
++ \dosubind{fn}{\code{#4}}{#1}%
++ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
--% **In TeX 3.0, setting text in \nullfont hangs tex. For a
--% workaround (which requires the file ``dummy.tfm'' to be installed),
--% uncomment the following line:
--%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
+-% @defun == @deffn Function
-
--% Ignore text, except that we keep track of conditional commands for
--% purposes of nesting, up to an `@end #1' command.
--%
--\def\nestedignore#1{%
-- \obstexwarn
-- % We must actually expand the ignored text to look for the @end
-- % command, so that nested ignore constructs work. Thus, we put the
-- % text into a \vbox and then do nothing with the result. To minimize
-- % the change of memory overflow, we follow the approach outlined on
-- % page 401 of the TeXbook: make the current font be a dummy font.
-+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
-+ \obeylines %
- %
-- \setbox0 = \vbox\bgroup
-- % Don't complain about control sequences we have declared \outer.
-- \ignoresections
-- %
-- % Define `@end #1' to end the box, which will in turn undefine the
-- % @end command again.
-- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
-- %
-- % We are going to be parsing Texinfo commands. Most cause no
-- % trouble when they are used incorrectly, but some commands do
-- % complicated argument parsing or otherwise get confused, so we
-- % undefine them.
-- %
-- % We can't do anything about stray @-signs, unfortunately;
-- % they'll produce `undefined control sequence' errors.
-- \ignoremorecommands
-- %
-- % Set the current font to be \nullfont, a TeX primitive, and define
-- % all the font commands to also use \nullfont. We don't use
-- % dummy.tfm, as suggested in the TeXbook, because not all sites
-- % might have that installed. Therefore, math mode will still
-- % produce output, but that should be an extremely small amount of
-- % stuff compared to the main input.
-- %
-- \nullfont
-- \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
-- \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
-- \let\tensf=\nullfont
-- % Similarly for index fonts (mostly for their use in smallexample).
-- \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
-- \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
-- \let\smallsf=\nullfont
-- %
-- % Don't complain when characters are missing from the fonts.
-- \tracinglostchars = 0
-- %
-- % Don't bother to do space factor calculations.
-- \frenchspacing
-+ \gdef\dodoignore#1{%
-+ % #1 contains the command name as a string, e.g., `ifinfo'.
- %
-- % Don't report underfull hboxes.
-- \hbadness = 10000
-+ % Define a command to find the next `@end #1'.
-+ \long\def\doignoretext##1^^M at end #1{%
-+ \doignoretextyyy##1^^M@#1\_STOP_}%
- %
-- % Do minimal line-breaking.
-- \pretolerance = 10000
-+ % 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_}%
- %
-- % Do not execute instructions in @tex
-- \def\tex{\doignore{tex}}%
-- % Do not execute macro definitions.
-- % `c' is a comment character, so the word `macro' will get cut off.
-- \def\macro{\doignore{ma}}%
-+ % 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\defun{\defparsebody\Edefun\defunx\defunheader}
++%%% Typed variables:
+
+-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+-\begingroup\defname {#1}{\putwordDeffunc}%
+-\defunargs {#2}\endgroup %
+-\catcode 61=\other % Turn off change made in \defparsebody
+-}
++% @deftypevr category type var args
++\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+-% @deftypefun int foobar (int @var{foo}, float @var{bar})
++% @deftypecv category class type var args
++\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
++% \deftypecvof {category of}class type var args
++\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+-% #1 is the data type. #2 is the name and args.
+-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
+-% #1 is the data type, #2 the name, #3 the args.
+-\def\deftypefunheaderx #1#2 #3\relax{%
+-\doind {fn}{\code{#2}}% Make entry in function index
+-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
+-\deftypefunargs {#3}\endgroup %
+-\catcode 61=\other % Turn off change made in \defparsebody
++% \deftypecvgeneral {subind}category type var args
+%
-+\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
++\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
++ \dosubind{vr}{\code{#4}}{#1}%
++ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-+% 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. Make sure the catcode of space is correct to avoid
--% losing inside @example, for instance.
-+% didn't need it.
-+% We rely on the fact that \parsearg sets \catcode`\ =10.
- %
--\def\set{\begingroup\catcode` =10
-- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
-- \parsearg\setxxx}
--\def\setxxx#1{\setyyy#1 \endsetyyy}
-+\parseargdef\set{\setyyy#1 \endsetyyy}
- \def\setyyy#1 #2\endsetyyy{%
-- \def\temp{#2}%
-- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
-- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
-- \fi
-- \endgroup
-+ {%
-+ \makevalueexpandable
-+ \def\temp{#2}%
-+ \edef\next{\gdef\makecsname{SET#1}}%
-+ \ifx\temp\empty
-+ \next{}%
-+ \else
-+ \setzzz#2\endsetzzz
-+ \fi
-+ }%
- }
--% Can't use \xdef to pre-expand #2 and save some time, since \temp or
--% \next or other control sequences that we've defined might get us into
--% an infinite loop. Consider `@set foo @cite{bar}'.
--\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-+% Remove the trailing space \setxxx inserted.
-+\def\setzzz#1 \endsetzzz{\next{#1}}
+-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
+-
+-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
+-
+-% \defheaderxcond#1\relax$$$
+-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
+-\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
++%%% Untyped variables:
+
+-% #1 is the classification. #2 is the data type. #3 is the name and args.
+-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
+-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
+-\def\deftypefnheaderx #1#2#3 #4\relax{%
+-\doind {fn}{\code{#3}}% Make entry in function index
+-\begingroup
+-\normalparens % notably, turn off `&' magic, which prevents
+-% at least some C++ text from working
+-\defname {\defheaderxcond#2\relax$$$#3}{#1}%
+-\deftypefunargs {#4}\endgroup %
+-\catcode 61=\other % Turn off change made in \defparsebody
+-}
++% @defvr category var args
++\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
- % @clear VAR clears (i.e., unsets) the variable VAR.
- %
--\def\clear{\parsearg\clearxxx}
--\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-+\parseargdef\clear{%
-+ {%
-+ \makevalueexpandable
-+ \global\expandafter\let\csname SET#1\endcsname=\relax
-+ }%
-+}
+-% @defmac == @deffn Macro
++% @defcv category class var args
++\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
- % @value{foo} gets the text saved in variable foo.
-+\def\value{\begingroup\makevalueexpandable\valuexxx}
-+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
- {
-- \catcode`\_ = \active
-+ \catcode`\- = \active \catcode`\_ = \active
- %
-- % We might end up with active _ or - characters in the argument if
-- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
-- % such active characters to their normal equivalents.
-- \gdef\value{\begingroup
-- \catcode`\-=12 \catcode`\_=12
-- \indexbreaks \let_\normalunderscore
-- \valuexxx}
-+ \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-\realdash \let_\normalunderscore
-+ }
+-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
++% \defcvof {category of}class var args
++\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+-\begingroup\defname {#1}{\putwordDefmac}%
+-\defunargs {#2}\endgroup %
+-\catcode 61=\other % Turn off change made in \defparsebody
++%%% Type:
++% @deftp category name args
++\makedefun{deftp}#1 #2 #3\endheader{%
++ \doind{tp}{\code{#2}}%
++ \defname{#1}{}{#2}\defunargs{#3\unskip}%
}
--\def\valuexxx#1{\expandablevalue{#1}\endgroup}
- % We have this subroutine so that we can handle at least some @value's
--% properly in indexes (we \let\value to this in \indexdummies). Ones
--% whose names contain - or _ still won't work, but we can't do anything
--% about that. The command has to be fully expandable, 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).
-+% 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).
+-% @defspec == @deffn Special Form
+-
+-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
+-
+-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+-\begingroup\defname {#1}{\putwordDefspec}%
+-\defunargs {#2}\endgroup %
+-\catcode 61=\other % Turn off change made in \defparsebody
+-}
++% 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}
+
+-% @defop CATEGORY CLASS OPERATION ARG...
++% \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.
%
- \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
-@@ -2496,66 +3783,36 @@
- % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
- % with @set.
+-\def\defop #1 {\def\defoptype{#1}%
+-\defopparsebody\Edefop\defopx\defopheader\defoptype}
++% We are followed by (but not passed) the arguments, if any.
%
--\def\ifset{\parsearg\ifsetxxx}
--\def\ifsetxxx #1{%
-- \expandafter\ifx\csname SET#1\endcsname\relax
-- \expandafter\ifsetfail
-- \else
-- \expandafter\ifsetsucceed
-- \fi
-+% 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{%
+-\def\defopheader#1#2#3{%
+-\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
+-\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}%
+-\defunargs {#3}\endgroup %
++\def\defname#1#2#3{%
++ % Get the values of \leftskip and \rightskip as they were outside the @def...
++ \advance\leftskip by -\defbodyindent
++ %
++ % How we'll format the type name. Putting it in brackets helps
++ % 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.
++ % 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
++ % The continuations:
++ \dimen2=\hsize \advance\dimen2 by -\defargsindent
++ % (plain.tex says that \dimen1 should be used only as global.)
++ \parshape 2 0in \dimen0 \defargsindent \dimen2
++ %
++ % Put the type name to the right margin.
++ \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
+ {%
-+ \makevalueexpandable
-+ \let\next=\empty
-+ \expandafter\ifx\csname SET#2\endcsname\relax
-+ #1% If not set, redefine \next.
-+ \fi
-+ \expandafter
-+ }\next
++ % 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}% return value type
++ \ifx\temp\empty\else \tclose{\temp} \fi
++ #3% output function name
++ }%
++ {\rm\enskip}% hskip 0.5 em of \tenrm
++ %
++ \boldbrax
++ % arguments will be output next, if any.
}
--\def\ifsetsucceed{\conditionalsucceed{ifset}}
--\def\ifsetfail{\nestedignore{ifset}}
--\defineunmatchedend{ifset}
-+\def\ifsetfail{\doignore{ifset}}
- % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
- % defined with @set, or has been undefined with @clear.
- %
--\def\ifclear{\parsearg\ifclearxxx}
--\def\ifclearxxx #1{%
-- \expandafter\ifx\csname SET#1\endcsname\relax
-- \expandafter\ifclearsucceed
-- \else
-- \expandafter\ifclearfail
-- \fi
--}
--\def\ifclearsucceed{\conditionalsucceed{ifclear}}
--\def\ifclearfail{\nestedignore{ifclear}}
--\defineunmatchedend{ifclear}
--
--% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
--% following, through the first @end iftex (etc.). Make `@end iftex'
--% (etc.) valid only after an @iftex.
+-% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
-%
--\def\iftex{\conditionalsucceed{iftex}}
--\def\ifnothtml{\conditionalsucceed{ifnothtml}}
--\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
--\defineunmatchedend{iftex}
--\defineunmatchedend{ifnothtml}
--\defineunmatchedend{ifnotinfo}
--
--% We can't just want to start a group at @iftex (for example) and end it
--% at @end iftex, since then @set commands inside the conditional have no
--% effect (they'd get reverted at the end of the group). So we must
--% define \Eiftex to redefine itself to be its previous value. (We can't
--% just define it to fail again with an ``unmatched end'' error, since
--% the @ifset might be nested.)
-+% 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.
+-\def\deftypeop #1 {\def\deftypeopcategory{#1}%
+- \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
+- \deftypeopcategory}
++% 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\conditionalsucceed#1{%
-- \edef\temp{%
-- % Remember the current value of \E#1.
-- \let\nece{prevE#1} = \nece{E#1}%
-- %
-- % At the `@end #1', redefine \E#1 to be its previous value.
-- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
-- }%
-- \temp
+-% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
+-\def\deftypeopheader#1#2#3#4{%
+- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
+- \begingroup
+- \defname{\defheaderxcond#2\relax$$$#3}
+- {\deftypeopcategory\ \putwordon\ \code{#1}}%
+- \deftypefunargs{#4}%
+- \endgroup
++\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. Let's try @var for that.
++ \let\var=\ttslanted
++ #1%
++ \sl\hyphenchar\font=45
+ }
+
+-% @deftypemethod CLASS TYPE METHOD ARG...
+-%
+-\def\deftypemethod{%
+- \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
++% We want ()&[] to print specially on the defun line.
+ %
+-% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
+-\def\deftypemethodheader#1#2#3#4{%
+- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
+- \begingroup
+- \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%
+- \deftypefunargs{#4}%
+- \endgroup
++\def\activeparens{%
++ \catcode`\(=\active \catcode`\)=\active
++ \catcode`\[=\active \catcode`\]=\active
++ \catcode`\&=\active
+ }
+
+-% @deftypeivar CLASS TYPE VARNAME
+-%
+-\def\deftypeivar{%
+- \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
+-%
+-% #1 is the class name, #2 the data type, #3 the variable name.
+-\def\deftypeivarheader#1#2#3{%
+- \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
+- \begingroup
+- \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
+- \defvarargs{#3}%
+- \endgroup
-}
-+\makecond{ifclear}
-+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
-+\def\ifclearfail{\doignore{ifclear}}
++% Make control sequences which act like normal parenthesis chars.
++\let\lparen = ( \let\rparen = )
--% We need to expand lots of \csname's, but we don't want to expand the
--% control sequences after we've constructed them.
+-% @defmethod == @defop Method
-%
--\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
-+% @dircategory CATEGORY -- specify a category of the dir file
-+% which this file should belong to. Ignore this in TeX.
-+\let\dircategory=\comment
+-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
+-%
+-% #1 is the class name, #2 the method name, #3 the args.
+-\def\defmethodheader#1#2#3{%
+- \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
+- \begingroup
+- \defname{#2}{\putwordMethodon\ \code{#1}}%
+- \defunargs{#3}%
+- \endgroup
++% 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}
+ }
- % @defininfoenclose.
- \let\definfoenclose=\comment
-@@ -2565,9 +3822,8 @@
- % Index generation facilities
+-% @defcv {Class Option} foo-class foo-flag
++\newcount\parencount
- % Define \newwrite to be identical to plain tex's \newwrite
--% except not \outer, so it can be used within \newindex.
--{\catcode`\@=11
--\gdef\newwrite{\alloc at 7\write\chardef\sixt@@n}}
-+% except not \outer, so it can be used within macros and \if's.
-+\edef\newwrite{\makecsname{ptexnewwrite}}
+-\def\defcv #1 {\def\defcvtype{#1}%
+-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
++% If we encounter &foo, then turn on ()-hacking afterwards
++\newif\ifampseen
++\def\amprm#1 {\ampseentrue{\bf\ }}
- % \newindex {foo} defines an index named foo.
- % It automatically defines \fooindex such that
-@@ -2587,42 +3843,48 @@
+-\def\defcvarheader #1#2#3{%
+-\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
+-\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
+-\defvarargs {#3}\endgroup %
++\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
}
-
- % @defindex foo == \newindex{foo}
-
-+%
- \def\defindex{\parsearg\newindex}
+-% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
+-%
+-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
+-%
+-\def\defivarheader#1#2#3{%
+- \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index
+- \begingroup
+- \defname{#2}{\putwordInstanceVariableof\ #1}%
+- \defvarargs{#3}%
+- \endgroup
++\def\infirstlevel#1{%
++ \ifampseen
++ \ifnum\parencount=1
++ #1%
++ \fi
++ \fi
+ }
++\def\bfafterword#1 {#1 \bf}
- % Define @defcodeindex, like @defindex except put all entries in @code.
+-% @defvar
+-% First, define the processing that is wanted for arguments of @defvar.
+-% This is actually simple: just print them in roman.
+-% This must expand the args and terminate the paragraph they make up
+-\def\defvarargs #1{\normalparens #1%
+-\interlinepenalty=10000
+-\endgraf\nobreak\vskip -\parskip\nobreak}
-
-+%
-+\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}}
-+ \noexpand\docodeindex{#1}}%
+-% @defvr Counter foo-count
+-
+-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
+-
+-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
+-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
+-
+-% @defvar == @defvr Variable
+-
+-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
+-
+-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+-\begingroup\defname {#1}{\putwordDefvar}%
+-\defvarargs {#2}\endgroup %
++\def\opnr{%
++ \global\advance\parencount by 1
++ {\parenfont(}%
++ \infirstlevel \bfafterword
+ }
+-
+-% @defopt == @defvr {User Option}
+-
+-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
+-
+-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+-\begingroup\defname {#1}{\putwordDefopt}%
+-\defvarargs {#2}\endgroup %
++\def\clnr{%
++ {\parenfont)}%
++ \infirstlevel \sl
++ \global\advance\parencount by -1
}
--\def\defcodeindex{\parsearg\newcodeindex}
+-% @deftypevar int foobar
+-
+-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
+-
+-% #1 is the data type. #2 is the name, perhaps followed by text that
+-% is actually part of the data type, which should not be put into the index.
+-\def\deftypevarheader #1#2{%
+-\dovarind#2 \relax% Make entry in variables index
+-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
+-\interlinepenalty=10000
+-\endgraf\nobreak\vskip -\parskip\nobreak
+-\endgroup}
+-\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
+-
+-% @deftypevr {Global Flag} int enable
+-
+-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
+-
+-\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
+-\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
+-\interlinepenalty=10000
+-\endgraf\nobreak\vskip -\parskip\nobreak
+-\endgroup}
+-
+-% Now define @deftp
+-% Args are printed in bold, a slight difference from @defvar.
+-
+-\def\deftpargs #1{\bf \defvarargs{#1}}
+-
+-% @deftp Class window height width ...
+-
+-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
+-
+-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
+-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
++\newcount\brackcount
++\def\lbrb{%
++ \global\advance\brackcount by 1
++ {\bf[}%
++}
++\def\rbrb{%
++ {\bf]}%
++ \global\advance\brackcount by -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.
--% The \closeout helps reduce unnecessary open files; the limit on the
--% Acorn RISC OS is a mere 16 files.
--\def\synindex#1 #2 {%
-- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-- \expandafter\closeout\csname#1indfile\endcsname
-- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
-- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
-- \noexpand\doindex{#2}}%
+-% These definitions are used if you use @defunx (etc.)
+-% anywhere other than immediately after a @defun or @defunx.
+-%
+-\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
+-\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
+-\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
+-\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
+-\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
+-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
+-\def\defopx#1 {\errmessage{@defopx in invalid context}}
+-\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
+-\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
+-\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
+-\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
+-\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
+-\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
+-\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
+-\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
+-\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
+-\def\defunx#1 {\errmessage{@defunx in invalid context}}
+-\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
+-\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
++\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,}
+@@ -4850,42 +6552,68 @@
+ % To do this right we need a feature of e-TeX, \scantokens,
+ % which we arrange to emulate with a temporary file in ordinary TeX.
+ \ifx\eTeXversion\undefined
+- \newwrite\macscribble
+- \def\scanmacro#1{%
+- \begingroup \newlinechar`\^^M
+- % Undo catcode changes of \startcontents and \doprintindex
+- \catcode`\@=0 \catcode`\\=12 \escapechar=`\@
+- % Append \endinput to make sure that TeX does not see the ending newline.
+- \toks0={#1\endinput}%
+- \immediate\openout\macscribble=\jobname.tmp
+- \immediate\write\macscribble{\the\toks0}%
+- \immediate\closeout\macscribble
+- \let\xeatspaces\eatspaces
+- \input \jobname.tmp
+- \endgroup
-}
--
-+%
- % @syncodeindex foo bar similar, but put all entries made for index foo
- % inside @code.
--\def\syncodeindex#1 #2 {%
-- \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-- \expandafter\closeout\csname#1indfile\endcsname
-- \expandafter\let\csname#1indfile\endcsname=\synindexfoo
-- \expandafter\xdef\csname#1index\endcsname{% define \xxxindex
-- \noexpand\docodeindex{#2}}%
-+%
-+\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 \undefined
-+ % 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}}%
- }
+-\else
+-\def\scanmacro#1{%
+-\begingroup \newlinechar`\^^M
+-% Undo catcode changes of \startcontents and \doprintindex
+-\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
+-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
++ \newwrite\macscribble
++ \def\scantokens#1{%
++ \toks0={#1}%
++ \immediate\openout\macscribble=\jobname.tmp
++ \immediate\write\macscribble{\the\toks0}%
++ \immediate\closeout\macscribble
++ \input \jobname.tmp
++ }
+ \fi
- % Define \doindex, the driver for all \fooindex macros.
-@@ -2642,265 +3904,445 @@
- \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
- \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
++\def\scanmacro#1{%
++ \begingroup
++ \newlinechar`\^^M
++ \let\xeatspaces\eatspaces
++ % Undo catcode changes of \startcontents and \doprintindex
++ % When called from @insertcopying or (short)caption, we need active
++ % backslash to get it printed correctly. Previously, we had
++ % \catcode`\\=\other instead. We'll see whether a problem appears
++ % with macro expansion. --kasal, 19aug04
++ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
++ % ... and \example
++ \spaceisspace
++ %
++ % Append \endinput to make sure that TeX does not see the ending newline.
++ % I've verified that it is necessary both for e-TeX and for ordinary TeX
++ % --kasal, 29nov03
++ \scantokens{#1\endinput}%
++ \endgroup
++}
++
++\def\scanexp#1{%
++ \edef\temp{\noexpand\scanmacro{#1}}%
++ \temp
++}
++
+ \newcount\paramno % Count of parameters
+ \newtoks\macname % Macro name
+ \newif\ifrecursive % Is it recursive?
+-\def\macrolist{} % List of all defined macros in the form
+- % \do\macro1\do\macro2...
++
++% 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}%
++}
--\def\indexdummies{%
--\def\ { }%
--% Take care of the plain tex accent commands.
--\def\"{\realbackslash "}%
--\def\`{\realbackslash `}%
--\def\'{\realbackslash '}%
--\def\^{\realbackslash ^}%
--\def\~{\realbackslash ~}%
--\def\={\realbackslash =}%
--\def\b{\realbackslash b}%
--\def\c{\realbackslash c}%
--\def\d{\realbackslash d}%
--\def\u{\realbackslash u}%
--\def\v{\realbackslash v}%
--\def\H{\realbackslash H}%
--% Take care of the plain tex special European modified letters.
--\def\oe{\realbackslash oe}%
--\def\ae{\realbackslash ae}%
--\def\aa{\realbackslash aa}%
--\def\OE{\realbackslash OE}%
--\def\AE{\realbackslash AE}%
--\def\AA{\realbackslash AA}%
--\def\o{\realbackslash o}%
--\def\O{\realbackslash O}%
--\def\l{\realbackslash l}%
--\def\L{\realbackslash L}%
--\def\ss{\realbackslash ss}%
--% Take care of texinfo commands likely to appear in an index entry.
--% (Must be a way to avoid doing expansion at all, and thus not have to
--% laboriously list every single command here.)
--\def\@{@}% will be @@ when we switch to @ as escape char.
--% Need these in case \tex is in effect and \{ is a \delimiter again.
--% But can't use \lbracecmd and \rbracecmd because texindex assumes
--% braces and backslashes are used only as delimiters.
--\let\{ = \mylbrace
--\let\} = \myrbrace
--\def\_{{\realbackslash _}}%
--\def\w{\realbackslash w }%
--\def\bf{\realbackslash bf }%
--%\def\rm{\realbackslash rm }%
--\def\sl{\realbackslash sl }%
--\def\sf{\realbackslash sf}%
--\def\tt{\realbackslash tt}%
--\def\gtr{\realbackslash gtr}%
--\def\less{\realbackslash less}%
--\def\hat{\realbackslash hat}%
--\def\TeX{\realbackslash TeX}%
--\def\dots{\realbackslash dots }%
--\def\result{\realbackslash result}%
--\def\equiv{\realbackslash equiv}%
--\def\expansion{\realbackslash expansion}%
--\def\print{\realbackslash print}%
--\def\error{\realbackslash error}%
--\def\point{\realbackslash point}%
--\def\copyright{\realbackslash copyright}%
--\def\tclose##1{\realbackslash tclose {##1}}%
--\def\code##1{\realbackslash code {##1}}%
--\def\uref##1{\realbackslash uref {##1}}%
--\def\url##1{\realbackslash url {##1}}%
--\def\env##1{\realbackslash env {##1}}%
--\def\command##1{\realbackslash command {##1}}%
--\def\option##1{\realbackslash option {##1}}%
--\def\dotless##1{\realbackslash dotless {##1}}%
--\def\samp##1{\realbackslash samp {##1}}%
--\def\,##1{\realbackslash ,{##1}}%
--\def\t##1{\realbackslash t {##1}}%
--\def\r##1{\realbackslash r {##1}}%
--\def\i##1{\realbackslash i {##1}}%
--\def\b##1{\realbackslash b {##1}}%
--\def\sc##1{\realbackslash sc {##1}}%
--\def\cite##1{\realbackslash cite {##1}}%
--\def\key##1{\realbackslash key {##1}}%
--\def\file##1{\realbackslash file {##1}}%
--\def\var##1{\realbackslash var {##1}}%
--\def\kbd##1{\realbackslash kbd {##1}}%
--\def\dfn##1{\realbackslash dfn {##1}}%
--\def\emph##1{\realbackslash emph {##1}}%
--\def\acronym##1{\realbackslash acronym {##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.
- %
--% Handle some cases of @value -- where the variable name does not
--% contain - or _, and the value does not contain any
--% (non-fully-expandable) commands.
--\let\value = \expandablevalue
-+\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 in case \tex is in effect and \{ is a \delimiter again.
-+ % But can't use \lbracecmd and \rbracecmd because texindex assumes
-+ % braces and backslashes are used only as delimiters.
-+ \let\{ = \mylbrace
-+ \let\} = \myrbrace
-+ %
-+ % 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
+ % Utility routines.
+-% Thisdoes \let #1 = #2, except with \csnames.
++% 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\expandafter
+-\expandafter\let
+-\expandafter\expandafter
+-\csname#1\endcsname
+-\csname#2\endcsname}
++ \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).
+@@ -4898,7 +6626,7 @@
+ }
+
+ % Trim a single trailing ^^M off a string.
+-{\catcode`\^^M=12\catcode`\Q=3%
++{\catcode`\^^M=\other \catcode`\Q=3%
+ \gdef\eatcr #1{\eatcra #1Q^^MQ}%
+ \gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+ \gdef\eatcrb#1Q#2Q{#1}%
+@@ -4908,34 +6636,45 @@
+ % all characters are catcode 10, 11 or 12, except \ which is active
+ % (as in normal texinfo). It is necessary to change the definition of \.
+
++% 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.
+
-+% 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.
- %
--\unsepspaces
--% Turn off macro expansion
--\turnoffmacros
-+\def\atdummies{%
-+ \def\@{@@}%
-+ \def\ {@ }%
-+ \let\{ = \lbraceatcmd
-+ \let\} = \rbraceatcmd
-+ %
-+ % Do the redefinitions.
-+ \commondummies
-+ \otherbackslash
+ % 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{%
++ \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{%
++ \scanctxt
++ \catcode`\\=\other
++ \catcode`\^^M=\other
++}
++
+ \def\macrobodyctxt{%
+- \catcode`\~=12
+- \catcode`\^=12
+- \catcode`\_=12
+- \catcode`\|=12
+- \catcode`\<=12
+- \catcode`\>=12
+- \catcode`\+=12
+- \catcode`\{=12
+- \catcode`\}=12
+- \catcode`\@=12
+- \catcode`\^^M=12
+- \usembodybackslash}
++ \scanctxt
++ \catcode`\{=\other
++ \catcode`\}=\other
++ \catcode`\^^M=\other
++ \usembodybackslash
++}
+
+ \def\macroargctxt{%
+- \catcode`\~=12
+- \catcode`\^=12
+- \catcode`\_=12
+- \catcode`\|=12
+- \catcode`\<=12
+- \catcode`\>=12
+- \catcode`\+=12
+- \catcode`\@=12
+- \catcode`\\=12}
++ \scanctxt
++ \catcode`\\=\other
++}
+
+ % \mbodybackslash is the definition of \ in @macro bodies.
+ % It maps \foo\ => \csname macarg.foo\endcsname => #N
+@@ -4963,45 +6702,42 @@
+ \message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+- \else \errmessage{The name \the\macname\space is reserved}\fi
++ \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%
+- % Add the macroname to \macrolist
+- \toks0 = \expandafter{\macrolist\do}%
+- \xdef\macrolist{\the\toks0
+- \expandafter\noexpand\csname\the\macname\endcsname}%
++ \addtomacrolist{\the\macname}%
+ \fi
+ \begingroup \macrobodyctxt
+ \ifrecursive \expandafter\parsermacbody
+ \else \expandafter\parsemacbody
+ \fi}
+
+-\def\unmacro{\parsearg\unmacroxxx}
+-\def\unmacroxxx#1{%
++\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
++ % Remove the macro name from \macrolist:
+ \begingroup
+- \edef\tempa{\expandafter\noexpand\csname#1\endcsname}%
+- \def\do##1{%
+- \def\tempb{##1}%
+- \ifx\tempa\tempb
+- % remove this
+- \else
+- \toks0 = \expandafter{\newmacrolist\do}%
+- \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
+- \fi}%
+- \def\newmacrolist{}%
+- % Execute macro list to define \newmacrolist
+- \macrolist
+- \global\let\macrolist\newmacrolist
++ \expandafter\let\csname#1\endcsname \relax
++ \let\definedummyword\unmacrodo
++ \xdef\macrolist{\macrolist}%
+ \endgroup
+ \else
+ \errmessage{Macro #1 not defined}%
+ \fi
}
--% 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 \ ).
--{\obeyspaces
-- \gdef\unsepspaces{\obeyspaces\let =\space}}
-+% Called from \indexdummies and \atdummies.
++% Called by \do from \dounmacro on each macro. The idea is to omit any
++% macro definitions that have been changed to \relax.
+%
-+\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\_%
-+ %
-+ % Non-English letters.
-+ \definedummyword\AA
-+ \definedummyword\AE
-+ \definedummyword\L
-+ \definedummyword\OE
-+ \definedummyword\O
-+ \definedummyword\aa
-+ \definedummyword\ae
-+ \definedummyword\l
-+ \definedummyword\oe
-+ \definedummyword\o
-+ \definedummyword\ss
-+ \definedummyword\exclamdown
-+ \definedummyword\questiondown
-+ \definedummyword\ordf
-+ \definedummyword\ordm
-+ %
-+ % 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\bullet
-+ \definedummyword\comma
-+ \definedummyword\copyright
-+ \definedummyword\registeredsymbol
-+ \definedummyword\dots
-+ \definedummyword\enddots
-+ \definedummyword\equiv
-+ \definedummyword\error
-+ \definedummyword\euro
-+ \definedummyword\guillemetleft
-+ \definedummyword\guillemetright
-+ \definedummyword\guilsinglleft
-+ \definedummyword\guilsinglright
-+ \definedummyword\expansion
-+ \definedummyword\minus
-+ \definedummyword\pounds
-+ \definedummyword\point
-+ \definedummyword\print
-+ \definedummyword\quotedblbase
-+ \definedummyword\quotedblleft
-+ \definedummyword\quotedblright
-+ \definedummyword\quoteleft
-+ \definedummyword\quoteright
-+ \definedummyword\quotesinglbase
-+ \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
++\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.
+@@ -5111,34 +6847,31 @@
+ % {. 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\next=#1\futurelet\nchar\braceorlinexxx}
++\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+ \def\braceorlinexxx{%
+ \ifx\nchar\bgroup\else
+ \expandafter\parsearg
+- \fi \next}
+-
+-% We mant to disable all macros during \shipout so that they are not
+-% expanded by \write.
+-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
+- \edef\next{\macrolist}\expandafter\endgroup\next}
++ \fi \macnamexxx}
--% \indexnofonts no-ops all font-change commands.
--% This is used when outputting the strings to sort the index by.
--\def\indexdummyfont#1{#1}
--\def\indexdummytex{TeX}
--\def\indexdummydots{...}
-+% \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\ringaccent
-+ \definedummyword\tieaccent
-+ \definedummyword\ubaraccent
-+ \definedummyword\udotaccent
-+ \definedummyword\dotless
-+ %
-+ % Texinfo font commands.
-+ \definedummyword\b
-+ \definedummyword\i
-+ \definedummyword\r
-+ \definedummyword\sc
-+ \definedummyword\t
-+ %
-+ % Commands that take arguments.
-+ \definedummyword\acronym
-+ \definedummyword\cite
-+ \definedummyword\code
-+ \definedummyword\command
-+ \definedummyword\dfn
-+ \definedummyword\emph
-+ \definedummyword\env
-+ \definedummyword\file
-+ \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
+
+ % @alias.
+ % We need some trickery to remove the optional spaces around the equal
+ % sign. Just make them active and then expand them all to nothing.
+-\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
++\def\alias{\parseargusing\obeyspaces\aliasxxx}
+ \def\aliasxxx #1{\aliasyyy#1\relax}
+-\def\aliasyyy #1=#2\relax{\ignoreactivespaces
+-\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
+- \expandafter\noexpand\csname#2\endcsname}%
+-\expandafter\endgroup\next}
++\def\aliasyyy #1=#2\relax{%
++ {%
++ \expandafter\let\obeyedspace=\empty
++ \addtomacrolist{#1}%
++ \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
++ }%
++ \next
+}
-+% \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{%
--% Just ignore accents.
--\let\,=\indexdummyfont
--\let\"=\indexdummyfont
--\let\`=\indexdummyfont
--\let\'=\indexdummyfont
--\let\^=\indexdummyfont
--\let\~=\indexdummyfont
--\let\==\indexdummyfont
--\let\b=\indexdummyfont
--\let\c=\indexdummyfont
--\let\d=\indexdummyfont
--\let\u=\indexdummyfont
--\let\v=\indexdummyfont
--\let\H=\indexdummyfont
--\let\dotless=\indexdummyfont
--% Take care of the plain tex special European modified letters.
--\def\oe{oe}%
--\def\ae{ae}%
--\def\aa{aa}%
--\def\OE{OE}%
--\def\AE{AE}%
--\def\AA{AA}%
--\def\o{o}%
--\def\O{O}%
--\def\l{l}%
--\def\L{L}%
--\def\ss{ss}%
--\let\w=\indexdummyfont
--\let\t=\indexdummyfont
--\let\r=\indexdummyfont
--\let\i=\indexdummyfont
--\let\b=\indexdummyfont
--\let\emph=\indexdummyfont
--\let\strong=\indexdummyfont
--\let\cite=\indexdummyfont
--\let\sc=\indexdummyfont
--%Don't no-op \tt, since it isn't a user-level command
--% and is used in the definitions of the active chars like <, >, |...
--%\let\tt=\indexdummyfont
--\let\tclose=\indexdummyfont
--\let\code=\indexdummyfont
--\let\url=\indexdummyfont
--\let\uref=\indexdummyfont
--\let\env=\indexdummyfont
--\let\acronym=\indexdummyfont
--\let\command=\indexdummyfont
--\let\option=\indexdummyfont
--\let\file=\indexdummyfont
--\let\samp=\indexdummyfont
--\let\kbd=\indexdummyfont
--\let\key=\indexdummyfont
--\let\var=\indexdummyfont
--\let\TeX=\indexdummytex
--\let\dots=\indexdummydots
--\def\@{@}%
-+ % Accent commands should become @asis.
-+ \def\definedummyaccent##1{\let##1\asis}%
-+ % We can just ignore other control letters.
-+ \def\definedummyletter##1{\let##1\empty}%
-+ % Hopefully, all control words can become @asis.
-+ \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\@{@}%
-+ % how to handle braces?
-+ \def\_{\normalunderscore}%
-+ %
-+ % Non-English letters.
-+ \def\AA{AA}%
-+ \def\AE{AE}%
-+ \def\L{L}%
-+ \def\OE{OE}%
-+ \def\O{O}%
-+ \def\aa{aa}%
-+ \def\ae{ae}%
-+ \def\l{l}%
-+ \def\oe{oe}%
-+ \def\o{o}%
-+ \def\ss{ss}%
-+ \def\exclamdown{!}%
-+ \def\questiondown{?}%
-+ \def\ordf{a}%
-+ \def\ordm{o}%
-+ %
-+ \def\LaTeX{LaTeX}%
-+ \def\TeX{TeX}%
-+ %
-+ % Assorted special characters.
-+ % (The following {} will end up in the sort string, but that's ok.)
-+ \def\bullet{bullet}%
-+ \def\comma{,}%
-+ \def\copyright{copyright}%
-+ \def\registeredsymbol{R}%
-+ \def\dots{...}%
-+ \def\enddots{...}%
-+ \def\equiv{==}%
-+ \def\error{error}%
-+ \def\euro{euro}%
-+ \def\guillemetleft{<<}%
-+ \def\guillemetright{>>}%
-+ \def\guilsinglleft{<}%
-+ \def\guilsinglright{>}%
-+ \def\expansion{==>}%
-+ \def\minus{-}%
-+ \def\pounds{pounds}%
-+ \def\point{.}%
-+ \def\print{-|}%
-+ \def\quotedblbase{"}%
-+ \def\quotedblleft{"}%
-+ \def\quotedblright{"}%
-+ \def\quoteleft{`}%
-+ \def\quoteright{'}%
-+ \def\quotesinglbase{,}%
-+ \def\result{=>}%
-+ \def\textdegree{degrees}%
-+ %
-+ % 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
+
+ \message{cross references,}
+-% @xref etc.
+
+ \newwrite\auxfile
+-
+ \newif\ifhavexrefs % True if xref values are known.
+ \newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+@@ -5147,56 +6880,68 @@
+ \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+ node \samp{\ignorespaces#1{}}}
+
+-% @node's job is to define \lastnode.
+-\def\node{\ENVcheck\parsearg\nodezzz}
+-\def\nodezzz#1{\nodexxx [#1,]}
+-\def\nodexxx[#1,#2]{\gdef\lastnode{#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=\relax
++\let\lastnode=\empty
+
+-% The sectioning commands (@chapter, etc.) call these.
+-\def\donoderef{%
+- \ifx\lastnode\relax\else
+- \expandafter\expandafter\expandafter\setref{\lastnode}%
+- {Ysectionnumberandtype}%
+- \global\let\lastnode=\relax
+- \fi
+-}
+-\def\unnumbnoderef{%
+- \ifx\lastnode\relax\else
+- \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
+- \global\let\lastnode=\relax
+- \fi
+-}
+-\def\appendixnoderef{%
+- \ifx\lastnode\relax\else
+- \expandafter\expandafter\expandafter\setref{\lastnode}%
+- {Yappendixletterandtype}%
+- \global\let\lastnode=\relax
++% 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
}
--% To define \realbackslash, we must make \ not be an escape.
--% We must first make another character (@) an escape
--% so we do not become unable to do a definition.
-
--{\catcode`\@=0 \catcode`\\=\other
-- @gdef at realbackslash{\}}
+ % @anchor{NAME} -- define xref target at arbitrary point.
+ %
+ \newcount\savesfregister
+-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+-\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
++%
++\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, namely
+-% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have
+-% to set \indexdummies so commands such as @code in a section title
+-% aren't expanded. It would be nicer not to expand the titles in the
+-% first place, but there's so many layers that that is hard to do.
++% \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.
+ %
+-\def\setref#1#2{{%
+- \indexdummies
++% 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}%
+- \dosetq{#1-title}{Ytitle}%
+- \dosetq{#1-pg}{Ypagenumber}%
+- \dosetq{#1-snt}{#2}%
+-}}
++ \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, during \shipout
++ }%
++ \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
+@@ -5209,135 +6954,162 @@
+ \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
+ \def\printedmanual{\ignorespaces #5}%
+- \def\printednodename{\ignorespaces #3}%
+- \setbox1=\hbox{\printedmanual}%
+- \setbox0=\hbox{\printednodename}%
++ \def\printedrefname{\ignorespaces #3}%
++ \setbox1=\hbox{\printedmanual\unskip}%
++ \setbox0=\hbox{\printedrefname\unskip}%
+ \ifdim \wd0 = 0pt
+ % No printed node name was explicitly given.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+ % Use the node name inside the square brackets.
+- \def\printednodename{\ignorespaces #1}%
++ \def\printedrefname{\ignorespaces #1}%
+ \else
+ % Use the actual chapter/section title appear inside
+ % the square brackets. Use the real section title if we have it.
+ \ifdim \wd1 > 0pt
+ % It is in another manual, so we don't have it.
+- \def\printednodename{\ignorespaces #1}%
++ \def\printedrefname{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We know the real title if we have the xref values.
+- \def\printednodename{\refx{#1-title}{}}%
++ \def\printedrefname{\refx{#1-title}{}}%
+ \else
+ % Otherwise just copy the Info node name.
+- \def\printednodename{\ignorespaces #1}%
++ \def\printedrefname{\ignorespaces #1}%
+ \fi%
+ \fi
+ \fi
+ \fi
+ %
+- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+- % insert empty discretionaries after hyphens, which means that it will
+- % not find a line break at a hyphen in a node names. Since some manuals
+- % are best written with fairly long node names, containing hyphens, this
+- % is a loss. Therefore, we give the text of the node name again, so it
+- % is as if TeX is seeing it for the first time.
++ % Make link in pdf output.
+ \ifpdf
+- \leavevmode
+- \getfilename{#4}%
+- \ifnum\filenamelength>0
+- \startlink attr{/Border [0 0 0]}%
+- goto file{\the\filename.pdf} name{#1@}%
+- \else
+- \startlink attr{/Border [0 0 0]}%
+- goto name{#1@}%
+- \fi
+- \linkcolor
++ {\indexnofonts
++ \turnoffactive
++ % This expands tokens, so do it after making catcode changes, so _
++ % etc. don't get their TeX definitions.
++ \getfilename{#4}%
++ %
++ % See comments at \activebackslashdouble.
++ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
++ \backslashparens\pdfxrefdest}%
++ %
++ \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
+ %
+- \ifdim \wd1 > 0pt
+- \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
++ % 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\wd0 = 0pt
++ \refx{#1-snt}{}%
++ \else
++ \printedrefname
++ \fi
++ %
++ % if the user also gave the printed manual name (fifth arg), append
++ % "in MANUALNAME".
++ \ifdim \wd1 > 0pt
++ \space \putwordin{} \cite{\printedmanual}%
++ \fi
+ \else
+- % _ (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.
+- {\normalturnoffactive
+- % 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
+- }%
+- % [mynode],
+- [\printednodename],\space
+- % page 3
+- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
++ % node/anchor (non-float) references.
++ %
++ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
++ % insert empty discretionaries after hyphens, which means that it will
++ % not find a line break at a hyphen in a node names. Since some manuals
++ % are best written with fairly long node names, containing hyphens, this
++ % is a loss. Therefore, we give the text of the node name again, so it
++ % is as if TeX is seeing it for the first time.
++ \ifdim \wd1 > 0pt
++ \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
++ \else
++ % _ (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 a macro 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
+ \endlink
+ \endgroup}
+
+-% \dosetq is the interface for calls from other macros
+-
+-% Use \normalturnoffactive so that punctuation chars such as underscore
+-% and backslash work in node names. (\turnoffactive doesn't do \.)
+-\def\dosetq#1#2{%
+- {\let\folio=0%
+- \normalturnoffactive
+- \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
+- \iflinks
+- \next
+- \fi
+- }%
+-}
+-
+-% \internalsetq {foo}{page} expands into
+-% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
+-% When the aux file is read, ' is the escape character
-
- \let\indexbackslash=0 %overridden during \printindex.
- \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
--% For \ifx comparisons.
--\def\emptymacro{\empty}
+-\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
-
- % Most index entries go through here, but \dosubind is the general case.
--%
--\def\doind#1#2{\dosubind{#1}{#2}\empty}
-+% #1 is the index name, #2 is the entry text.
-+\def\doind#1#2{\dosubind{#1}{#2}{}}
+-% Things to be expanded by \internalsetq
+-
+-\def\Ypagenumber{\folio}
+-
+-\def\Ytitle{\thissection}
+-
+-\def\Ynothing{}
+-
+-\def\Ysectionnumberandtype{%
+-\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
+-\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
+-\else \ifnum \subsubsecno=0 %
+-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
+-\else %
+-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
+-\fi \fi \fi }
+-
+-\def\Yappendixletterandtype{%
+-\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
+-\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
+-\else \ifnum \subsubsecno=0 %
+-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
+-\else %
+-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
+-\fi \fi \fi }
+-
+-\gdef\xreftie{'tie}
++% 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]}
- % 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 defuns, which call us directly.
-+% empty if called from \doind, as we usually are (the main exception
-+% is with most defuns, which call us directly).
+-% 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.
++% Things referred to by \setref.
%
- \def\dosubind#1#2#3{%
-+ \iflinks
+-\ifx\inputlineno\thisisundefined
+- \let\linenumber = \empty % Non-3.0.
+-\else
+- \def\linenumber{\the\inputlineno:\space}
+-\fi
++\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{%
+- \expandafter\ifx\csname X#1\endcsname\relax
+ {%
-+ % 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
++ \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
+@@ -5352,22 +7124,59 @@
+ \fi
+ \else
+ % It's defined, so just use it.
+- \csname X#1\endcsname
++ \thisrefX
+ \fi
+ #2% Output the suffix in any case.
+ }
+
+-% This is the macro invoked by entries in the aux file.
++% 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{\begingroup
+- % Reenable \ as an escape while reading the second argument.
+- \catcode`\\ = 0
+- \afterassignment\endgroup
+- \expandafter\gdef\csname X#1\endcsname
++\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
+ %
-+ \edef\writeto{\csname#1indfile\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
+ %
-+ \safewhatsit\dosubindwrite
-+ }%
++ % Remember this xref in the control sequence \floatlistFLOATTYPE,
++ % for later use in \listoffloats.
++ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
++ {\safexrefname}}%
+ \fi
-+}
-+
-+% Write the entry in \toks0 to the index file:
+ }
+
+ % Read the last existing aux file, if any. No error if none exists.
+-\def\readauxfile{\begingroup
+%
-+\def\dosubindwrite{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
-- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
-+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
- \fi
-- {%
-- \count255=\lastpenalty
-- {%
-- \indexdummies % Must do this here, since \bf, etc expand at this stage
-- \escapechar=`\\
-- {%
-- \let\folio = 0% We will expand all macros now EXCEPT \folio.
-- \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-- % so it will be output as is; and it will print as backslash.
-- %
-- \def\thirdarg{#3}%
-- %
-- % If third arg is present, precede it with space in sort key.
-- \ifx\thirdarg\emptymacro
-- \let\subentry = \empty
-- \else
-- \def\subentry{ #3}%
-- \fi
-- %
-- % First process the index entry with all font commands turned
-- % off to get the string to sort by.
-- {\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
-- %
-- % Now the real index entry with the fonts.
-- \toks0 = {#2}%
-- %
-- % If third (subentry) arg is present, add it to the index
-- % string. And include a space.
-- \ifx\thirdarg\emptymacro \else
-- \toks0 = \expandafter{\the\toks0 \space #3}%
-- \fi
-- %
-- % 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, texindex reduces to
-- % two when writing the .??s sorted result.
-- \edef\temp{%
-- \write\csname#1indfile\endcsname{%
-- \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
-- }%
-- %
-- % 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 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.
-- %
-- \iflinks
-- \ifvmode
-- \skip0 = \lastskip
-- \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi
-- \fi
-- %
-- \temp % do the write
-- %
-- %
-- \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
-- \fi
-- }%
-- }%
-- \penalty\count255
++\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
+@@ -5395,9 +7204,7 @@
+ \catcode`\^^]=\other
+ \catcode`\^^^=\other
+ \catcode`\^^_=\other
+- \catcode`\@=\other
+- \catcode`\^=\other
+- % It was suggested to define this as 7, which would allow ^^e4 etc.
++ % 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 ^
+@@ -5410,6 +7217,9 @@
+ % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+ % and then to call \auxhat in \setq.
+ %
++ \catcode`\^=\other
+ %
-+ % 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.
++ % Special characters. Should be turned off anyway, but...
+ \catcode`\~=\other
+ \catcode`\[=\other
+ \catcode`\]=\other
+@@ -5421,41 +7231,43 @@
+ \catcode`\$=\other
+ \catcode`\#=\other
+ \catcode`\&=\other
++ \catcode`\%=\other
+ \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+- % Make the characters 128-255 be printing characters
+ %
-+ % 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}%
++ % 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.
+ {%
+- \count 1=128
++ \count1=128
+ \def\loop{%
+- \catcode\count 1=\other
+- \advance\count 1 by 1
+- \ifnum \count 1<256 \loop \fi
++ \catcode\count1=\other
++ \advance\count1 by 1
++ \ifnum \count1<256 \loop \fi
+ }%
}%
+- % The aux file uses ' as the escape (for now).
+- % Turn off \ as an escape so we do not lose on
+- % entries which were dumped with control sequences in their names.
+- % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
+- % Reference to such entries still does not work the way one would wish,
+- % but at least they do not bomb out when the aux file is read in.
+ %
-+ % 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
++ % @ is our escape character in .aux files, and we need braces.
+ \catcode`\{=1
+ \catcode`\}=2
+- \catcode`\%=\other
+- \catcode`\'=0
+- \catcode`\\=\other
+- %
+- \openin 1 \jobname.aux
+- \ifeof 1 \else
+- \closein 1
+- \input \jobname.aux
+- \global\havexrefstrue
+- \global\warnedobstrue
+- \fi
+- % Open the new aux file. TeX will close it automatically at exit.
+- \openout\auxfile=\jobname.aux
++ \catcode`\@=0
+}
+
-+% 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%
++\def\readdatafile#1{%
++\begingroup
++ \setupdatafile
++ \input\jobname.#1
+ \endgroup}
+
+
+-% Footnotes.
++\message{insertions,}
++% including footnotes.
+
+ \newcount \footnoteno
+
+@@ -5469,37 +7281,39 @@
+ % @footnotestyle is meaningful for info output only.
+ \let\footnotestyle=\comment
+
+-\let\ptexfootnote=\footnote
+-
+ {\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}\/\fi
++ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+ %
+ % Remove inadvertent blank space before typesetting the footnote number.
+ \unskip
+ \thisfootno\@sf
+- \footnotezzz
++ \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 fail inside footnotes because the tokens are fixed when
++% 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.
+ %
+-\long\gdef\footnotezzz{\insert\footins\bgroup
++\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
+@@ -5512,8 +7326,15 @@
+ %
+ \smallfonts \rm
+ %
+- % Hang the footnote text off the number.
+- \hang
++ % 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
+ %
-+ \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
++ % 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
+@@ -5522,66 +7343,68 @@
+ \footstrut
+ \futurelet\next\fo at t
+ }
+-\def\fo at t{\ifcat\bgroup\noexpand\next \let\next\f@@t
+- \else\let\next\f at t\fi \next}
+-\def\f@@t{\bgroup\aftergroup\@foot\let\next}
+-\def\f at t#1{#1\@foot}
+-\def\@foot{\strut\par\egroup}
+-
+ }%end \catcode `\@=11
+
+-% 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}
++% 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\setleading#1{%
+- \normalbaselineskip = #1\relax
+- \normallineskip = \lineskipfactor\normalbaselineskip
+- \normalbaselines
+- \setbox\strutbox =\hbox{%
+- \vrule width0pt height\strutheightpercent\baselineskip
+- depth \strutdepthpercent \baselineskip
+- }%
++\def\startsavinginserts{%
++ \ifx \insert\ptexinsert
++ \let\insert\saveinsert
+ \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
++ \let\checkinserts\relax
+ \fi
-+\fi
}
- % The index entry written in the file actually looks like
-@@ -2938,13 +4380,13 @@
- % @printindex causes a particular index (the ??s file) to get printed.
- % It does not print any chapter heading (usually an @unnumbered).
+-% @| 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 \insert replacement works for both \insert\footins{foo} and
++% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
%
--\def\printindex{\parsearg\doprintindex}
--\def\doprintindex#1{\begingroup
-+\parseargdef\printindex{\begingroup
- \dobreak \chapheadingskip{10000}%
- %
- \smallfonts \rm
- \tolerance = 9500
-- \indexbreaks
-+ \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
-@@ -2971,7 +4413,7 @@
- % 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{\rawbackslashxx}%
-+ \def\indexbackslash{\backslashcurfont}%
- \catcode`\\ = 0
- \escapechar = `\\
- \begindoublecolumns
-@@ -2993,7 +4435,10 @@
- \removelastskip
- %
- % We like breaks before the index initials, so insert a bonus.
-- \penalty -300
-+ \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
-@@ -3003,93 +4448,117 @@
- % No shrink because it confuses \balancecolumns.
- \vskip 1.67\baselineskip plus .5\baselineskip
- \leftline{\secbf #1}%
-- \vskip .33\baselineskip plus .1\baselineskip
+-\def\|{%
+- % \vadjust can only be used in horizontal mode.
+- \leavevmode
- %
- % Do our best not to break after the initial.
- \nobreak
-+ \vskip .33\baselineskip plus .1\baselineskip
- }}
+- % 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
+- }%
+- }%
++\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
--% This typesets a paragraph consisting of #1, dot leaders, and then #2
--% flush to the right margin. It is used for index and table of contents
--% entries. The paragraph is indented by \leftskip.
-+% \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.
+-% 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}
+
+ % @image. We use the macros from epsf.tex to support this.
+ % If epsf.tex is not installed and @image is used, we complain.
+@@ -5591,12 +7414,12 @@
+ % undone and the next image would fail.
+ \openin 1 = epsf.tex
+ \ifeof 1 \else
+- \closein 1
+- % Do not bother showing banner with post-v2.7 epsf.tex (available in
+- % doc/epsf.tex until it shows up on ctan).
++ % 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
%
--\def\entry#1#2{\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
-- %
-- % Start a ``paragraph'' for the index entry so the line breaking
-- % parameters we've set above will have an effect.
-- \noindent
-- %
-- % Insert the text of the index entry. TeX will do line-breaking on it.
-- #1%
-- % 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.
-- \def\tempa{{\rm }}%
-- \def\tempb{#2}%
-- \edef\tempc{\tempa}%
-- \edef\tempd{\tempb}%
-- \ifx\tempc\tempd\ \else%
-+% 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.
+ % We will only complain once about lack of epsf.tex.
+ \newif\ifwarnednoepsf
+@@ -5612,77 +7435,1180 @@
+ \global\warnednoepsftrue
+ \fi
+ \else
+- \imagexxx #1,,,\finish
++ \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 just the usual extra ignored arg for parsing this stuff.
+-\def\imagexxx#1,#2,#3,#4\finish{%
++% #4 is (ignored optional) html alt text.
++% #5 is (ignored optional) extension.
++% #6 is just the usual extra ignored arg for parsing this 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
++ \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. On the other hand, if
++ % it's at the top level, we don't want the normal paragraph indentation.
++ \noindent
++ %
++ % Output the image.
+ \ifpdf
+- \centerline{\dopdfimage{#1}{#2}{#3}}%
++ \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
+- \begingroup
+- \catcode`\^^M = 5 % in case we're inside an example
+- % If the image is by itself, center it.
+- \ifvmode
+- \nobreak\bigskip
+- % 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
+- \centerline{\epsfbox{#1.eps}}%
+- \bigbreak
+- \else
+- % In the middle of a paragraph, no extra space.
+- \epsfbox{#1.eps}%
++ \epsfbox{#1.eps}%
++ \fi
++ %
++ \ifimagevmode \medskip \fi % space after the standalone image
++\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.
+%
-+% The right solution is to prevent \entry from swallowing the whole text.
-+% --kasal, 21nov03
-+\def\entry{%
-+ \begingroup
- %
-- % 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.
-+ % Start a new paragraph if necessary, so our assignments below can't
-+ % affect previous text.
-+ \par
- %
-- % 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#2.\ \the\toksA % The page number ends the paragraph.
-+ % Do not fill out the last line with white space.
-+ \parfillskip = 0in
++\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.
+ %
-+ % No extra space above this paragraph.
-+ \parskip = 0in
++ \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
+ %
-+ % Do not prefer a separate line ending with a hyphen to fewer lines.
-+ \finalhyphendemerits = 0
++ % 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
+ %
-+ % \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.
++ % start with \parskip glue, I guess.
++ \vskip\parskip
+ %
-+ % \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
++ % 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
+ %
-+ % When the entry text needs to be broken, just fill out the first line
-+ % with blank space.
-+ \rightskip = 0pt plus1fil
++ % In all cases, if we have a float type, it comes first.
++ \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+ %
-+ % A bit of stretch before each entry for the benefit of balancing
-+ % columns.
-+ \vskip 0pt plus1pt
++ % 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
+ %
-+ % Swallow the left brace of the text (first parameter):
-+ \afterassignment\doentry
-+ \let\temp =
++ % 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%
+}
-+\def\doentry{%
-+ \bgroup % Instead of the swallowed brace.
-+ \noindent
-+ \aftergroup\finishentry
-+ % And now comes the text of the entry.
++
++% \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
+}
-+\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
-- \ #2% The page number ends the paragraph.
-+ %
-+ % 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
-- \fi%
-- \par
--\endgroup}
-+ \par
++
++% @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,}
+-% and i18n.
+
+ % @documentlanguage is usually given very early, just after
+ % @setfilename. If done too late, it may not override everything
+-% properly. Single argument is the language abbreviation.
+-% It would be nice if we could set up a hyphenation file here.
++% properly. Single argument is the language (de) or locale (de_DE)
++% abbreviation. It would be nice if we could set up a hyphenation file.
+ %
+-\def\documentlanguage{\parsearg\dodocumentlanguage}
+-\def\dodocumentlanguage#1{%
++{
++ \catcode`\_ = \active
++ \globaldefs=1
++\parseargdef\documentlanguage{\begingroup
++ \let_=\normalunderscore % normal _ character for filenames
+ \tex % read txi-??.tex file in plain TeX.
+- % Read the file if it exists.
++ % Read the file by the name they passed if it exists.
++ \openin 1 txi-#1.tex
++ \ifeof 1
++ \documentlanguagetrywithoutunderscore{#1_\finish}%
++ \else
++ \input txi-#1.tex
++ \fi
++ \closein 1
+ \endgroup
++\endgroup}
+}
++%
++% If they passed de_DE, and txi-de_DE.tex doesn't exist,
++% try txi-de.tex.
++%
++\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+ \openin 1 txi-#1.tex
+- \ifeof1
++ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+- \let\temp = \relax
+ \else
+- \def\temp{\input txi-#1.tex }%
++ \input txi-#1.tex
+ \fi
+- \temp
+- \endgroup
++ \closein 1
+ }
++%
+ \newhelp\nolanghelp{The given language definition file cannot be found or
+ is empty. Maybe you need to install it? In the current directory
+ should work if nowhere else does.}
--% Like \dotfill except takes at least 1 em.
-+% Like plain.tex's \dotfill, except uses up at least 1 em.
- \def\indexdotfill{\cleaders
-- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
-
- \def\primary #1{\line{#1\hfil}}
++% 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
++}
- \newskip\secondaryindent \secondaryindent=0.5cm
--
--\def\secondary #1#2{
--{\parfillskip=0in \parskip=0in
--\hangindent =1in \hangafter=1
--\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
-+\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
- }}
+-% @documentencoding should change something in TeX eventually, most
+-% likely, but for now just recognize it.
+-\let\documentencoding = \comment
++\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
++}
- % Define two-column mode, which we use to typeset indexes.
-@@ -3149,7 +4618,6 @@
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
-- \advance\vsize by -\ht\partialpage
- \vsize = 2\vsize
- }
++% 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.}}
-@@ -3163,6 +4631,7 @@
- % 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@
-@@ -3170,16 +4639,47 @@
- \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{%
-- % Re-output the contents of the output page -- any previous material,
-- % followed by the two boxes we just split, in box0 and box2.
- \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:
+-% Page size parameters.
++% 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{~}
++ \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{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
++ \gdef^^ac{$\lnot$}
++ \gdef^^ad{\-}
++ \gdef^^ae{\registeredsymbol}
++ \gdef^^af{\={}}
+ %
-+ % 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.
++ \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{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
++ \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{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
++ \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{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
++ \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{\missingcharmsg{LATIN SMALL LETTER ETH}}
++ \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{\missingcharmsg{LATIN SMALL LETTER THORN}}
++ \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{~}
++ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
++ \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{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
++ \gdef^^b2{\missingcharmsg{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{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
++ \gdef^^cb{\"E}
++ \gdef^^cc{\v E}
++ \gdef^^cd{\'I}
++ \gdef^^ce{\^I}
++ \gdef^^cf{\v D}
++ %
++ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
++ \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}
+ %
-+ % Note that glue won't work here, because glue does not exercise the
-+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
-+ \penalty0
++ \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{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
++ \gdef^^eb{\"e}
++ \gdef^^ec{\v e}
++ \gdef^^ed{\'\i}
++ \gdef^^ee{\^\i}
++ \gdef^^ef{\v d}
+ %
- \output = {%
- % Split the last of the double-column material. Leave it on the
- % current page, no automatic page break.
-@@ -3203,8 +4703,9 @@
- % \endgroup where \vsize got restored).
- \pagegoal = \vsize
- }
-+%
-+% Called at the end of the double column material.
- \def\balancecolumns{%
-- % Called at the end of the double column material.
- \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
- \dimen@ = \ht0
- \advance\dimen@ by \topskip
-@@ -3234,6 +4735,12 @@
- \message{sectioning,}
- % Chapters, sections, etc.
-
-+% \unnumberedno is an oxymoron, of course. 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
-@@ -3241,9 +4748,12 @@
-
- % 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 for the sake of pdftex, which needs the actual
-+% 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%
-@@ -3279,13 +4789,18 @@
- \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 this as the name of the chapter.
--% page headings and footings can use it. @section does likewise.
-+% 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 % @raise/lowersections modify this count
-+\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}
-@@ -3295,287 +4810,246 @@
- \def\lowersections{\global\advance\secbase by 1}
- \let\down=\lowersections % original BFox name
-
--% Choose a numbered-heading macro
--% #1 is heading level if unmodified by @raisesections or @lowersections
--% #2 is text for heading
--\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
--\ifcase\absseclevel
-- \chapterzzz{#2}
--\or
-- \seczzz{#2}
--\or
-- \numberedsubseczzz{#2}
--\or
-- \numberedsubsubseczzz{#2}
--\else
-- \ifnum \absseclevel<0
-- \chapterzzz{#2}
-+% we only have subsub.
-+\chardef\maxseclevel = 3
++ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
++ \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}
+%
-+% A numbered section within an unnumbered changes to unnumbered too.
-+% To achive this, remember the "biggest" unnum. sec. we are currently in:
-+\chardef\unmlevel = \maxseclevel
++\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
++ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
-+% Trace whether the current chapter is an appendix or not:
-+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
-+\def\chapheadtype{N}
++\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{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{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{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{00FF}{\"y}
++
++ \DeclareUnicodeCharacter{0100}{\=A}
++ \DeclareUnicodeCharacter{0101}{\=a}
++ \DeclareUnicodeCharacter{0102}{\u{A}}
++ \DeclareUnicodeCharacter{0103}{\u{a}}
++ \DeclareUnicodeCharacter{0106}{\'C}
++ \DeclareUnicodeCharacter{0107}{\'c}
++ \DeclareUnicodeCharacter{0108}{\^C}
++ \DeclareUnicodeCharacter{0109}{\^c}
++ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
++ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
++ \DeclareUnicodeCharacter{010C}{\v{C}}
++ \DeclareUnicodeCharacter{010D}{\v{c}}
++ \DeclareUnicodeCharacter{010E}{\v{D}}
++
++ \DeclareUnicodeCharacter{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{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}
+
-+% 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
-- \numberedsubsubseczzz{#2}
-+ \ifnum \absseclevel > 3
-+ \absseclevel = 3
-+ \fi
- \fi
--\fi
--}
--
--% like \numhead, but chooses appendix heading levels
--\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
--\ifcase\absseclevel
-- \appendixzzz{#2}
--\or
-- \appendixsectionzzz{#2}
--\or
-- \appendixsubseczzz{#2}
--\or
-- \appendixsubsubseczzz{#2}
--\else
-- \ifnum \absseclevel<0
-- \appendixzzz{#2}
-+ % The heading type:
-+ \def\headtype{#1}%
-+ \if \headtype U%
-+ \ifnum \absseclevel < \unmlevel
-+ \chardef\unmlevel = \absseclevel
-+ \fi
- \else
-- \appendixsubsubseczzz{#2}
-+ % 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 > \unmlevel
-+ \def\headtype{U}%
-+ \else
-+ \chardef\unmlevel = 3
-+ \fi
- \fi
--\fi
--}
--
--% like \numhead, but chooses numberless heading levels
--\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
--\ifcase\absseclevel
-- \unnumberedzzz{#2}
--\or
-- \unnumberedseczzz{#2}
--\or
-- \unnumberedsubseczzz{#2}
--\or
-- \unnumberedsubsubseczzz{#2}
--\else
-- \ifnum \absseclevel<0
-- \unnumberedzzz{#2}
-+ % Now print the heading:
-+ \if \headtype U%
-+ \ifcase\absseclevel
-+ \unnumberedzzz{#3}%
-+ \or \unnumberedseczzz{#3}%
-+ \or \unnumberedsubseczzz{#3}%
-+ \or \unnumberedsubsubseczzz{#3}%
-+ \fi
- \else
-- \unnumberedsubsubseczzz{#2}
-+ \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
--\fi
-+ \suppressfirstparagraphindent
- }
-
--% @chapter, @appendix, @unnumbered.
--\def\thischaptername{No Chapter Title}
--\outer\def\chapter{\parsearg\chapteryyy}
--\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
--\def\chapterzzz #1{%
--\secno=0 \subsecno=0 \subsubsecno=0
--\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
--\chapmacro {#1}{\the\chapno}%
--\gdef\thissection{#1}%
--\gdef\thischaptername{#1}%
--% We don't substitute the actual chapter name into \thischapter
--% because we don't want its macros evaluated now.
--\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
-- {\the\chapno}}}%
--\temp
--\donoderef
--\global\let\section = \numberedsec
--\global\let\subsection = \numberedsubsec
--\global\let\subsubsection = \numberedsubsubsec
-+% an interface:
-+\def\numhead{\genhead N}
-+\def\apphead{\genhead A}
-+\def\unnmhead{\genhead U}
++ \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}}
+
-+% @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
-+ %
-+ \message{\putwordChapter\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\def\appendix{\parsearg\appendixyyy}
--\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
--\def\appendixzzz #1{%
--\secno=0 \subsecno=0 \subsubsecno=0
--\global\advance \appendixno by 1
--\message{\putwordAppendix\space \appendixletter}%
--\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
--\gdef\thissection{#1}%
--\gdef\thischaptername{#1}%
--\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
-- {\putwordAppendix{} \appendixletter}}}%
--\temp
--\appendixnoderef
--\global\let\section = \appendixsec
--\global\let\subsection = \appendixsubsec
--\global\let\subsubsection = \appendixsubsubsec
-+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
-+\def\appendixzzz#1{%
-+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-+ \global\advance\appendixno by 1
-+ \gdef\chaplevelprefix{\appendixletter.}%
-+ \resetallfloatnos
-+ %
-+ \def\appendixnum{\putwordAppendix\space \appendixletter}%
-+ \message{\appendixnum}%
-+ %
-+ \chapmacro{#1}{Yappendix}{\appendixletter}%
-+ %
-+ \global\let\section = \appendixsec
-+ \global\let\subsection = \appendixsubsec
-+ \global\let\subsubsection = \appendixsubsubsec
++ \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
+}
+
-+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-+\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
- }
++% 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
- % @centerchap is like @unnumbered, but the heading is centered.
--\outer\def\centerchap{\parsearg\centerchapyyy}
--\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
-+\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
-+}
+ \chapheadingskip = 15pt plus 4pt minus 2pt
+@@ -5695,7 +8621,7 @@
+ % Don't be so finicky about underfull hboxes, either.
+ \hbadness = 2000
- % @top is like @unnumbered.
--\outer\def\top{\parsearg\unnumberedyyy}
--
--\outer\def\unnumbered{\parsearg\unnumberedyyy}
--\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
--\def\unnumberedzzz #1{%
--\secno=0 \subsecno=0 \subsubsecno=0
--%
--% 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)}%
--%
--\unnumbchapmacro {#1}%
--\gdef\thischapter{#1}\gdef\thissection{#1}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}%
--\temp
--\unnumbnoderef
--\global\let\section = \unnumberedsec
--\global\let\subsection = \unnumberedsubsec
--\global\let\subsubsection = \unnumberedsubsubsec
--}
-+\let\top\unnumbered
+-% Following George Bush, just get rid of widows and orphans.
++% Following George Bush, get rid of widows and orphans.
+ \widowpenalty=10000
+ \clubpenalty=10000
- % Sections.
--\outer\def\numberedsec{\parsearg\secyyy}
--\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
--\def\seczzz #1{%
--\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
--\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
-- {\the\chapno}{\the\secno}}}%
--\temp
--\donoderef
--\nobreak
-+\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}%
+@@ -5713,11 +8639,14 @@
+ \fi
}
--\outer\def\appendixsection{\parsearg\appendixsecyyy}
--\outer\def\appendixsec{\parsearg\appendixsecyyy}
--\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
--\def\appendixsectionzzz #1{%
--\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
--\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}%
-- {\appendixletter}{\the\secno}}}%
--\temp
--\appendixnoderef
--\nobreak
-+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
-+\def\appendixsectionzzz#1{%
-+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
-+ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
+-% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can
+-% set \parskip and call \setleading for \baselineskip.
++% Parameters in order: 1) textheight; 2) textwidth;
++% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
++% 7) physical page height; 8) physical page width.
+ %
+-\def\internalpagesizes#1#2#3#4#5#6{%
++% 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
+@@ -5736,6 +8665,17 @@
+ \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
}
-+\let\appendixsec\appendixsection
+@@ -5743,76 +8683,140 @@
+ % @letterpaper (the default).
+ \def\letterpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+- \setleading{13.2pt}%
++ \textleading = 13.2pt
+ %
+ % If page is nothing but text, make it come out even.
+- \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
++ \internalpagesizes{607.2pt}{6in}% that's 46 lines
++ {\voffset}{.25in}%
++ {\bindingoffset}{36pt}%
++ {11in}{8.5in}%
+ }}
+
+-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
++% Use @smallbook to reset parameters for 7x9.25 trim size.
+ \def\smallbook{{\globaldefs = 1
+ \parskip = 2pt plus 1pt
+- \setleading{12pt}%
++ \textleading = 12pt
+ %
+- \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
++ \internalpagesizes{7.5in}{5in}%
++ {-.2in}{0in}%
++ {\bindingoffset}{16pt}%
++ {9.25in}{7in}%
+ %
+ \lispnarrowing = 0.3in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+- \deftypemargin = 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
+ %
+- \let\smalldisplay = \smalldisplayx
+- \let\smallexample = \smalllispx
+- \let\smallformat = \smallformatx
+- \let\smalllisp = \smalllispx
++ \internalpagesizes{7.4in}{4.8in}%
++ {-.2in}{-.4in}%
++ {0pt}{14pt}%
++ {9in}{6in}%
++ %
++ \lispnarrowing = 0.25in
++ \tolerance = 700
++ \hfuzz = 1pt
++ \contentsrightmargin = 0pt
++ \defbodyindent = .4cm
+ }}
--\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
--\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
--\def\unnumberedseczzz #1{%
--\plainsecheading {#1}\gdef\thissection{#1}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
--\temp
--\unnumbnoderef
--\nobreak
-+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
-+\def\unnumberedseczzz#1{%
-+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
-+ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
- }
+ % Use @afourpaper to print on European A4 paper.
+ \def\afourpaper{{\globaldefs = 1
+- \setleading{12pt}%
+ \parskip = 3pt plus 2pt minus 1pt
++ \textleading = 13.2pt
+ %
+- \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
++ % 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
+ }}
- % Subsections.
--\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
--\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
--\def\numberedsubseczzz #1{%
--\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
--\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
-- {\the\chapno}{\the\secno}{\the\subsecno}}}%
--\temp
--\donoderef
--\nobreak
-+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
-+\def\numberedsubseczzz#1{%
-+ \global\subsubsecno=0 \global\advance\subsecno by 1
-+ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
- }
+-% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
+-% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
+-\def\afourlatex{{\globaldefs = 1
+- \setleading{13.6pt}%
++% 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}{3.6mm}{3.6mm}{3mm}{7mm}%
++ \internalpagesizes{237mm}{150mm}%
++ {\voffset}{4.6mm}%
++ {\bindingoffset}{7mm}%
++ {297mm}{210mm}%
+ %
++ % Must explicitly reset to 0 because we call \afourpaper.
+ \globaldefs = 0
+ }}
--\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
--\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
--\def\appendixsubseczzz #1{%
--\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
--\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}%
-- {\appendixletter}{\the\secno}{\the\subsecno}}}%
--\temp
--\appendixnoderef
--\nobreak
-+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
-+\def\appendixsubseczzz#1{%
-+ \global\subsubsecno=0 \global\advance\subsecno by 1
-+ \sectionheading{#1}{subsec}{Yappendix}%
-+ {\appendixletter.\the\secno.\the\subsecno}%
- }
+-% Use @afourwide to print on European A4 paper in wide format.
+-\def\afourwide{%
++% Use @afourwide to print on A4 paper in landscape format.
++\def\afourwide{{\globaldefs = 1
+ \afourpaper
+- \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
+- %
++ \internalpagesizes{241mm}{165mm}%
++ {\voffset}{-2.95mm}%
++ {\bindingoffset}{7mm}%
++ {297mm}{210mm}%
+ \globaldefs = 0
+-}
++}}
--\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
--\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
--\def\unnumberedsubseczzz #1{%
--\plainsubsecheading {#1}\gdef\thissection{#1}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
-- {\the\toks0}}}%
--\temp
--\unnumbnoderef
--\nobreak
-+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-+\def\unnumberedsubseczzz#1{%
-+ \global\subsubsecno=0 \global\advance\subsecno by 1
-+ \sectionheading{#1}{subsec}{Ynothing}%
-+ {\the\unnumberedno.\the\secno.\the\subsecno}%
- }
+ % @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+ % Perhaps we should allow setting the margins, \topskip, \parskip,
+ % and/or leading, also. Or perhaps we should compute them somehow.
+ %
+-\def\pagesizes{\parsearg\pagesizesxxx}
+-\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
++\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{13.2pt}%
++ \setleading{\textleading}%
+ %
+- \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
++ \dimen0 = #1\relax
++ \advance\dimen0 by \voffset
++ %
++ \dimen2 = \hsize
++ \advance\dimen2 by \normaloffset
++ %
++ \internalpagesizes{#1}{\hsize}%
++ {\voffset}{\normaloffset}%
++ {\bindingoffset}{44pt}%
++ {\dimen0}{\dimen2}%
+ }}
- % Subsubsections.
--\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
--\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
--\def\numberedsubsubseczzz #1{%
--\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
--\subsubsecheading {#1}
-- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
-- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
--\temp
--\donoderef
--\nobreak
-+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
-+\def\numberedsubsubseczzz#1{%
-+ \global\advance\subsubsecno by 1
-+ \sectionheading{#1}{subsubsec}{Ynumbered}%
-+ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
- }
+ % Set default to letter.
+@@ -5840,10 +8844,10 @@
+ \def\normalless{<}
+ \def\normalgreater{>}
+ \def\normalplus{+}
+-\def\normaldollar{$}
++\def\normaldollar{$}%$ font-lock fix
--\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
--\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
--\def\appendixsubsubseczzz #1{%
--\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
--\subsubsecheading {#1}
-- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}%
-- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
--\temp
--\appendixnoderef
--\nobreak
-+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
-+\def\appendixsubsubseczzz#1{%
-+ \global\advance\subsubsecno by 1
-+ \sectionheading{#1}{subsubsec}{Yappendix}%
-+ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
- }
+-% This macro is used to make a character print one way in ttfont
+-% where it can probably just be output, and another way in other fonts,
++% 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
+@@ -5875,8 +8879,9 @@
--\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
--\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
--\def\unnumberedsubsubseczzz #1{%
--\plainsubsubsecheading {#1}\gdef\thissection{#1}%
--\toks0 = {#1}%
--\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
-- {\the\toks0}}}%
--\temp
--\unnumbnoderef
--\nobreak
-+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-+\def\unnumberedsubsubseczzz#1{%
-+ \global\advance\subsubsecno by 1
-+ \sectionheading{#1}{subsubsec}{Ynothing}%
-+ {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
- }
+ \catcode`\_=\active
+ \def_{\ifusingtt\normalunderscore\_}
++\let\realunder=_
+ % Subroutine for the previous macro.
+-\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
++\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
--% These are variants which are not "outer", so they can appear in @ifinfo.
--% Actually, they should now be obsolete; ordinary section commands should work.
--\def\infotop{\parsearg\unnumberedzzz}
--\def\infounnumbered{\parsearg\unnumberedzzz}
--\def\infounnumberedsec{\parsearg\unnumberedseczzz}
--\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
--\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
--
--\def\infoappendix{\parsearg\appendixzzz}
--\def\infoappendixsec{\parsearg\appendixseczzz}
--\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
--\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
+ \catcode`\|=\active
+ \def|{{\tt\char124}}
+@@ -5889,16 +8894,7 @@
+ \catcode`\+=\active
+ \def+{{\tt \char 43}}
+ \catcode`\$=\active
+-\def${\ifusingit{{\sl\$}}\normaldollar}
+-%\catcode 27=\active
+-%\def^^[{$\diamondsuit$}
-
--\def\infochapter{\parsearg\chapterzzz}
--\def\infosection{\parsearg\sectionzzz}
--\def\infosubsection{\parsearg\subsectionzzz}
--\def\infosubsubsection{\parsearg\subsubsectionzzz}
+-% Set up an active definition for =, but don't enable it most of the time.
+-{\catcode`\==\active
+-\global\def={{\tt \char 61}}}
-
- % 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.
--\global\let\section = \numberedsec
--\global\let\subsection = \numberedsubsec
--\global\let\subsubsection = \numberedsubsubsec
-+\let\section = \numberedsec
-+\let\subsection = \numberedsubsec
-+\let\subsubsection = \numberedsubsubsec
+-\catcode`+=\active
+-\catcode`\_=\active
++\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
- % Define @majorheading, @heading and @subheading
+ % 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.
+@@ -5906,46 +8902,53 @@
+ % \otherifyactive is called near the end of this file.
+ \def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-@@ -3588,23 +5062,27 @@
- % if justification is not attempted. Hence \raggedright.
+-\catcode`\@=0
++% Used sometimes to turn off (effectively) the active characters even after
++% parsing them.
++\def\turnoffactive{%
++ \normalturnoffactive
++ \otherbackslash
++}
+-% \rawbackslashxx output one backslash character in current font
+-\global\chardef\rawbackslashxx=`\\
+-%{\catcode`\\=\other
+-%@gdef at rawbackslashxx{\}}
++\catcode`\@=0
--\def\majorheading{\parsearg\majorheadingzzz}
--\def\majorheadingzzz #1{%
--{\advance\chapheadingskip by 10pt \chapbreak }%
--{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-- \parindent=0pt\raggedright
-- \rm #1\hfill}}\bigskip \par\penalty 200}
-+\def\majorheading{%
-+ {\advance\chapheadingskip by 10pt \chapbreak }%
-+ \parsearg\chapheadingzzz
-+}
+-% \rawbackslash redefines \ as input to do \rawbackslashxx.
+-{\catcode`\\=\active
+- at gdef@rawbackslash{@let\=@rawbackslashxx }}
++% \backslashcurfont outputs one backslash character in current font,
++% as in \char`\\.
++\global\chardef\backslashcurfont=`\\
++\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
--\def\chapheading{\parsearg\chapheadingzzz}
--\def\chapheadingzzz #1{\chapbreak %
--{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-- \parindent=0pt\raggedright
-- \rm #1\hfill}}\bigskip \par\penalty 200}
-+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
-+\def\chapheadingzzz#1{%
-+ {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-+ \parindent=0pt\raggedright
-+ \rm #1\hfill}}%
-+ \bigskip \par\penalty 200\relax
-+ \suppressfirstparagraphindent
+-% \normalbackslash outputs one backslash in fixed width font.
+-\def\normalbackslash{{\tt\rawbackslashxx}}
++% \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{\\}}
+
+-% \catcode 17=0 % Define control-q
++% In texinfo, backslash is an active character; it prints the backslash
++% in fixed width font.
+ \catcode`\\=\active
++ at def@normalbackslash{{@tt at backslashcurfont}}
++% On startup, @fixbackslash assigns:
++% @let \ = @normalbackslash
+
+-% Used sometimes to turn off (effectively) the active characters
+-% even after parsing them.
+- at def@turnoffactive{@let"=@normaldoublequote
+- at let\=@realbackslash
+- at let~=@normaltilde
+- at let^=@normalcaret
+- at let_=@normalunderscore
+- at let|=@normalverticalbar
+- at let<=@normalless
+- at let>=@normalgreater
+- at let+=@normalplus
+- at let$=@normaldollar}
++% \rawbackslash defines an active \ to do \backslashcurfont.
++% \otherbackslash defines an active \ to be a literal `\' character with
++% catcode other.
++ at gdef@rawbackslash{@let\=@backslashcurfont}
++ at gdef@otherbackslash{@let\=@realbackslash}
+
+- at def@normalturnoffactive{@let"=@normaldoublequote
+- at let\=@normalbackslash
+- at let~=@normaltilde
+- at let^=@normalcaret
+- at let_=@normalunderscore
+- at let|=@normalverticalbar
+- at let<=@normalless
+- at let>=@normalgreater
+- at let+=@normalplus
+- at let$=@normaldollar}
++% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
++% the literal character `\'.
++%
++ at def@normalturnoffactive{%
++ @let\=@normalbackslash
++ @let"=@normaldoublequote
++ @let~=@normaltilde
++ @let^=@normalcaret
++ @let_=@normalunderscore
++ @let|=@normalverticalbar
++ @let<=@normalless
++ @let>=@normalgreater
++ @let+=@normalplus
++ @let$=@normaldollar %$ font-lock fix
++ @unsepspaces
+}
- % @heading, @subheading, @subsubheading.
--\def\heading{\parsearg\plainsecheading}
--\def\subheading{\parsearg\plainsubsecheading}
--\def\subsubheading{\parsearg\plainsubsubsecheading}
-+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
-+ \suppressfirstparagraphindent}
-+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
-+ \suppressfirstparagraphindent}
-+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
-+ \suppressfirstparagraphindent}
+ % Make _ and + \other characters, temporarily.
+ % This is canceled by @fixbackslash.
+@@ -5959,9 +8962,9 @@
+ @global at let\ = @eatinput
- % These macros generate a chapter, section, etc. heading only
- % (including whitespace, linebreaking, etc. around it),
-@@ -3613,8 +5091,6 @@
- %%% Args are the skip and penalty (usually negative)
- \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+ % 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
++% 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 back turn on active characters that might appear in the input
++% Also turn back on active characters that might appear in the input
+ % file name, in case not using a pre-dumped format.
+ %
+ @gdef at fixbackslash{%
+@@ -5973,15 +8976,11 @@
+ % Say @foo, not \foo, in error messages.
+ @escapechar = `@@
--\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+-% These look ok in all fonts, so just make them not special.
++% These look ok in all fonts, so just make them not special.
+ @catcode`@& = @other
+ @catcode`@# = @other
+ @catcode`@% = @other
+
+- at c Set initial fonts.
+- at textfonts
+- at rm
-
- %%% Define plain chapter starts, and page on/off switching for it
- % Parameter controlling skip before chapter headings (if needed)
-@@ -3622,7 +5098,20 @@
+ @c Local variables:
+ @c eval: (add-hook 'write-file-hooks 'time-stamp)
+@@ -5990,3 +8989,9 @@
+ @c time-stamp-format: "%:y-%02m-%02d.%02H"
+ @c time-stamp-end: "}"
+ @c End:
++
++ at c vim:sw=2:
++
++ at ignore
++ arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
++ at end ignore
+--- ./ltmain.sh.orig 2002-08-08 23:49:32.000000000 -0600
++++ ./ltmain.sh 2012-01-09 20:36:31.000000000 -0700
+@@ -1,199 +1,928 @@
+-# ltmain.sh - Provide generalized library-building support services.
+-# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+-#
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+-# Free Software Foundation, Inc.
+-# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+-#
+-# This program is free software; you can redistribute it and/or modify
++
++# libtool (GNU libtool) 2.4
++# 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 Free Software Foundation, Inc.
++# This is free software; see the source for copying conditions. There is NO
++# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++
++# GNU Libtool is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 2 of the License, or
+ # (at your option) any later version.
+ #
+-# This program is distributed in the hope that it will be useful, but
++# As a special exception to the GNU General Public License,
++# if you distribute this file as part of a program or library that
++# is built using GNU Libtool, you may include this file under the
++# same distribution terms that you use for the rest of that program.
++#
++# GNU Libtool is distributed in the hope that it will be useful, but
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++# 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]...
+ #
+-# 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.
++# 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)
++# --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
++# 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/>.
+
+-# Check that we have a working $echo.
+-if test "X$1" = X--no-reexec; then
+- # Discard the --no-reexec flag, and continue.
+- shift
+-elif test "X$1" = X--fallback-echo; then
+- # Avoid inline document here, it may be left over
+- :
+-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+- # Yippee, $echo works!
+- :
++PROGRAM=libtool
++PACKAGE=libtool
++VERSION=2.4
++TIMESTAMP=""
++package_revision=1.3293
++
++# 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
+- # Restart under the correct shell, and then maybe $echo will work.
+- exec $SHELL "$0" --no-reexec ${1+"$@"}
++ 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
- \def\chapbreak{\dobreak \chapheadingskip {-4000}}
- \def\chappager{\par\vfill\supereject}
--\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-+% 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
-+ \evenheadline={\hfil}\evenfootline={\hfil}%
-+ \oddheadline={\hfil}\oddfootline={\hfil}%
-+ \hbox to 0pt{}%
-+ \chappager
-+ \endgroup
-+ \fi
+-if test "X$1" = X--fallback-echo; then
+- # used as fallback echo
+- shift
+- cat <<EOF
+-$*
+-EOF
+- exit 0
+-fi
++# A function that is used when there is no print builtin or printf.
++func_fallback_echo ()
++{
++ eval 'cat <<_LTECHO_EOF
++$1
++_LTECHO_EOF'
+}
- \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-@@ -3637,7 +5126,7 @@
- \global\let\pagealignmacro=\chappager
- \global\def\HEADINGSon{\HEADINGSsingle}}
-
--\def\CHAPPAGodd{
-+\def\CHAPPAGodd{%
- \global\let\contentsalignmacro = \chapoddpage
- \global\let\pchapsepmacro=\chapoddpage
- \global\let\pagealignmacro=\chapoddpage
-@@ -3645,107 +5134,275 @@
-
- \CHAPPAGon
+-# The name of this program.
+-progname=`$echo "$0" | sed 's%^.*/%%'`
+-modename="$progname"
++# 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
--\def\CHAPFplain{
--\global\let\chapmacro=\chfplain
--\global\let\unnumbchapmacro=\unnchfplain
--\global\let\centerchapmacro=\centerchfplain}
--
--% Plain chapter opening.
--% #1 is the text, #2 the chapter number or empty if unnumbered.
--\def\chfplain#1#2{%
-+% 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}%
-+ \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
-+ \noexpand\thischaptername}%
-+ }%
-+ \else
-+ \toks0={#1}%
-+ \xdef\lastchapterdefs{%
-+ \gdef\noexpand\thischaptername{\the\toks0}%
-+ \gdef\noexpand\thischapternum{\the\chapno}%
-+ \gdef\noexpand\thischapter{\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 \rm
-- \def\chapnum{#2}%
-- \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
-+ %
-+ % 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{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-- \hangindent = \wd0 \centerparametersmaybe
-+ \hangindent=\wd0 \centerparametersmaybe
- \unhbox0 #1\par}%
- }%
- \nobreak\bigskip % no page break after a chapter title
- \nobreak
- }
+-# Constants.
+-PROGRAM=ltmain.sh
+-PACKAGE=libtool
+-VERSION=1.4a-GCC3.0
+-TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)"
++$lt_unset CDPATH
--% Plain opening for unnumbered.
--\def\unnchfplain#1{\chfplain{#1}{}}
--
- % @centerchap -- centered and unnumbered.
- \let\centerparametersmaybe = \relax
--\def\centerchfplain#1{{%
-- \def\centerparametersmaybe{%
-- \advance\rightskip by 3\rightskip
-- \leftskip = \rightskip
-- \parfillskip = 0pt
-- }%
-- \chfplain{#1}{}%
--}}
-+\def\centerparameters{%
-+ \advance\rightskip by 3\rightskip
-+ \leftskip = \rightskip
-+ \parfillskip = 0pt
+-default_mode=
+-help="Try \`$progname --help' for more information."
+-magic="%%%MAGIC variable%%%"
+-mkdir="mkdir"
+-mv="mv -f"
+-rm="rm -f"
+
+-# Sed substitution that helps us do robust quoting. It backslashifies
+-# metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
+-sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+-SP2NL='tr \040 \012'
+-NL2SP='tr \015\012 \040\040'
++# 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"
+
+-# NLS nuisances.
+-# Only set LANG and LC_ALL to C if already set.
+-# These must not be set unconditionally because not all systems understand
+-# e.g. LANG=C (notably SCO).
+-# We save the old values to restore during execute mode.
+-if test "${LC_ALL+set}" = set; then
+- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+-fi
+-if test "${LANG+set}" = set; then
+- save_LANG="$LANG"; LANG=C; export LANG
+-fi
+
+-if test "$LTCONFIG_VERSION" != "$VERSION"; then
+- echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
+- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit 1
+-fi
+
+-if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+- echo "$modename: not configured to build any kind of library" 1>&2
+- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit 1
+-fi
++: ${CP="cp -f"}
++test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
++: ${EGREP="/bin/grep -E"}
++: ${FGREP="/bin/grep -F"}
++: ${GREP="/bin/grep"}
++: ${LN_S="ln -s"}
++: ${MAKE="make"}
++: ${MKDIR="mkdir"}
++: ${MV="mv -f"}
++: ${RM="rm -f"}
++: ${SED="/bin/sed"}
++: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
++: ${Xsed="$SED -e 1s/^X//"}
+
+-# Global variables.
+-mode=$default_mode
+-nonopt=
+-prev=
+-prevopt=
+-run=
+-show="$echo"
+-show_help=
+-execute_dlfiles=
+-lo2o="s/\\.lo\$/.${objext}/"
+-o2lo="s/\\.${objext}\$/.lo/"
+-taglist=
++# 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.
+
+-# Parse our command line options once, thoroughly.
+-while test $# -gt 0
+-do
+- arg="$1"
+- shift
++exit_status=$EXIT_SUCCESS
+
+- case $arg in
+- -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+- *) optarg= ;;
+- esac
++# Make sure IFS has a sensible default
++lt_nl='
++'
++IFS=" $lt_nl"
+
+- # If the previous option needs an argument, assign it.
+- if test -n "$prev"; then
+- case $prev in
+- execute_dlfiles)
+- execute_dlfiles="$execute_dlfiles $arg"
++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.
+ ;;
+- tag)
+- tagname="$arg"
++ ..)
++ # 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
+}
--\CHAPFplain % The default
-
-+% 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 {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\nobreak
- }
--
- \def\chfopen #1#2{\chapoddpage {\chapfonts
- \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
- \par\penalty 5000 %
- }
--
- \def\centerchfopen #1{%
- \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt
- \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
- }
--
--\def\CHAPFopen{
--\global\let\chapmacro=\chfopen
--\global\let\unnumbchapmacro=\unnchfopen
--\global\let\centerchapmacro=\centerchfopen}
-+\def\CHAPFopen{%
-+ \global\let\chapmacro=\chfopen
-+ \global\let\centerchapmacro=\centerchfopen}
-
-
--% Section titles.
-+% 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}}
--\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
--\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
-+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
-
- % Subsection titles.
--\newskip \subsecheadingskip
--\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
--\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
--\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
-+\newskip\subsecheadingskip
-+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
-
- % Subsubsection titles.
--\let\subsubsecheadingskip = \subsecheadingskip
--\let\subsubsecheadingbreak = \subsecheadingbreak
--\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
--\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
-+\def\subsubsecheadingskip{\subsecheadingskip}
-+\def\subsubsecheadingbreak{\subsecheadingbreak}
-
+- # Check whether tagname contains only valid characters
+- case $tagname in
+- *[!-_A-Za-z0-9,/]*)
+- echo "$progname: invalid tag name: $tagname" 1>&2
+- exit 1
+- ;;
+- esac
++# 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
--% Print any size section title.
-+% Print any size, any type, section title.
- %
--% #1 is the section type (sec/subsec/subsubsec), #2 is the section
--% number (maybe empty), #3 the text.
--\def\sectionheading#1#2#3{%
-- {%
-- \expandafter\advance\csname #1headingskip\endcsname by \parskip
-- \csname #1headingbreak\endcsname
-- }%
-+% #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{%
- {%
- % Switch to the right set of fonts.
-- \csname #1fonts\endcsname \rm
-+ \csname #2fonts\endcsname \rm
- %
-- % Only insert the separating space if we have a section number.
-- \def\secnum{#2}%
-- \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
-+ \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}%
-+ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
-+ \noexpand\thissectionname}%
-+ }%
-+ \fi
-+ \else
-+ \ifx\sectionlevel\seckeyword
-+ \toks0={#1}%
-+ \xdef\lastsectiondefs{%
-+ \gdef\noexpand\thissectionname{\the\toks0}%
-+ \gdef\noexpand\thissectionnum{#4}%
-+ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
-+ \noexpand\thissectionname}%
-+ }%
-+ \fi
-+ \fi\fi\fi
-+ %
-+ % 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 \raggedright
-- \hangindent = \wd0 % zero if no section number
-- \unhbox0 #3}%
-+ \hangindent=\wd0 % zero if no section number
-+ \unhbox0 #1}%
- }%
-- \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
-+ % 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.)
-+ \vskip-\parskip
-+ %
-+ % This is purely so the last item on the list is a known \penalty >
-+ % 10000. This is so \startdefun can avoid allowing breakpoints after
-+ % section headings. Otherwise, it would insert a valid breakpoint between:
-+ %
-+ % @section sec-whatever
-+ % @deffn def-whatever
-+ \penalty 10001
- }
+- case $tagname in
+- CC)
+- # Don't test for the "default" C tag, as we know, it's there, but
+- # not specially marked.
+- taglist="$taglist $tagname"
+- ;;
++ # 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
++ ;;
+ *)
+- if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
+- taglist="$taglist $tagname"
+- # Evaluate the configuration.
+- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+- else
+- echo "$progname: ignoring unknown tag $tagname" 1>&2
++ 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
+- ;;
+- *)
+- eval "$prev=\$arg"
+- ;;
+ esac
++ done
+- prev=
+- prevopt=
+- continue
++ # 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
-@@ -3754,161 +5411,224 @@
- \newwrite\tocfile
+- # Have we seen a non-optional argument yet?
+- case $arg in
+- --help)
+- show_help=yes
+- ;;
++ # 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
++}
- % Write an entry to the toc file, opening it if necessary.
--% Called from @chapter, etc. We supply {\folio} at the end of the
--% argument, which will end up as the last argument to the \...entry macro.
-+% Called from @chapter, etc.
- %
--% We open the .toc file here instead of at @setfilename or any other
--% given time so that @contents can be put in the document anywhere.
-+% 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\writetocentry#1{%
-- \iftocfileopened\else
-- \immediate\openout\tocfile = \jobname.toc
-- \global\tocfileopenedtrue
-+\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
-- \iflinks \write\tocfile{#1{\folio}}\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
+- --version)
+- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+- exit 0
++# 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=:
++ 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'
++
++# 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 --version) 2>/dev/null |$SED 1q`"'/
++ s/\$autoconf_version/'"`(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
+}
+
+
-+% 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
-+}
++# 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
+
-+% 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
-
--% Finish up the main text and prepare to read what we've written
--% to \tocfile.
-+% 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.
-- \unnumbchapmacro{#1}\def\thischapter{}%
-- \savepageno = \pageno
-- \begingroup % Set up to handle contents files properly.
-- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
-- % We can't do this, because then an actual ^ in a section
-- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
-- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha at piuha.ydi.vtt.fi
-- \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 \pageno = \lastnegativepageno \fi
-+ % 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 \jobname.toc
-- \ifeof 1 \else
-- \closein 1
-- \input \jobname.toc
-- \fi
-- \vfill \eject
-- \contentsalignmacro % in case @setchapternewpage odd is in effect
-- \pdfmakeoutlines
-- \endgroup
-- \lastnegativepageno = \pageno
-- \pageno = \savepageno
-+ \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\chapentry = \shortchapentry
-- \let\unnumbchapentry = \shortunnumberedentry
-- % We want a true roman here for the page numbers.
-- \secfonts
-- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
-- \rm
-- \hyphenpenalty = 10000
-- \advance\baselineskip by 1pt % Open it up a little.
-- \def\secentry ##1##2##3##4{}
-- \def\unnumbsecentry ##1##2{}
-- \def\subsecentry ##1##2##3##4##5{}
-- \def\unnumbsubsecentry ##1##2{}
-- \def\subsubsecentry ##1##2##3##4##5##6{}
-- \def\unnumbsubsubsecentry ##1##2{}
-- \openin 1 \jobname.toc
-- \ifeof 1 \else
-- \closein 1
-- \input \jobname.toc
-- \fi
-- \vfill \eject
-- \contentsalignmacro % in case @setchapternewpage odd is in effect
-- \endgroup
-- \lastnegativepageno = \pageno
-- \pageno = \savepageno
-+ \startcontents{\putwordShortTOC}%
-+ %
-+ \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
-
--\ifpdf
-- \pdfcatalog{/PageMode /UseOutlines}%
--\fi
-+% 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}%
++
++# 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"
- % 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, ...
+- --config)
+- sed -n -e '/^### BEGIN LIBTOOL CONFIG/,/^### END LIBTOOL CONFIG/p' < "$0"
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+- sed -n -e "/^### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
++ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+- exit 0
+- ;;
--% Chapter-level things, for both the long and short contents.
--\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
+- --debug)
+- echo "$progname: enabling shell trace mode"
+- set -x
+- ;;
-
--% See comments in \dochapentry re vbox and related settings
--\def\shortchapentry#1#2#3{%
-- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
-+% 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}%
- }
-
--% Typeset the label for a chapter or appendix for the short contents.
--% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
--% We could simplify the code here by writing out an \appendixentry
--% command in the toc file for appendices, instead of using \chapentry
--% for both, but it doesn't seem worth it.
-+% Appendices, in the main contents.
-+% Need the word Appendix, and a fixed-size box.
- %
--\newdimen\shortappendixwidth
-+\def\appendixbox#1{%
-+ % We use M since it's probably the widest letter.
-+ \setbox0 = \hbox{\putwordAppendix{} M}%
-+ \hbox to \wd0{\putwordAppendix{} #1\hss}}
- %
--\def\shortchaplabel#1{%
-- % Compute width of word "Appendix", may change with language.
-- \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
-- \shortappendixwidth = \wd0
-- %
-- % We typeset #1 in a box of constant width, regardless of the text of
-- % #1, so the chapter titles will come out aligned.
-- \setbox0 = \hbox{#1}%
-- \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
-- %
-- % This space should be plenty, since a single number is .5em, and the
-- % widest letter (M) is 1em, at least in the Computer Modern fonts.
-- % (This space doesn't include the extra space that gets added after
-- % the label; that gets put in by \shortchapentry above.)
-- \advance\dimen0 by 1.1em
-- \hbox to \dimen0{#1\hfil}%
--}
-+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
-
--\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
--\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
-+% 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\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
--\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
-+\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\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
--\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
-+\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\subsubsecentry#1#2#3#4#5#6{%
-- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
--\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
-+\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.
--\newdimen\tocindent \tocindent = 3pc
-+% 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.
-@@ -3939,17 +5659,8 @@
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
- \endgroup}
+- --dry-run | -n)
+- run=:
+- ;;
++ exit $?
++}
--% Final typesetting of a toc entry; we use the same \entry macro as for
--% the index entries, but we want to suppress hyphenation here. (We
--% can't do that in the \entry macro, since index entries might consist
--% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
--\def\tocentry#1#2{\begingroup
-- \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
-- % Do not use \turnoffactive in these arguments. Since the toc is
-- % typeset in cmr, so characters such as _ would come out wrong; we
-- % have to do the usual translation tricks.
-- \entry{#1}{#2}%
--\endgroup}
-+% We use the same \entry macro as for the index entries.
-+\let\tocentry = \entry
+- --features)
++# 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"
+@@ -205,349 +934,1184 @@
+ else
+ echo "disable static libraries"
+ fi
+- exit 0
+- ;;
- % Space between chapter (or whatever) number and the title.
- \def\labelspace{\hskip1em \relax}
-@@ -3959,72 +5670,62 @@
+- --finish) mode="finish" ;;
++ exit $?
++}
- \def\chapentryfonts{\secfonts \rm}
- \def\secentryfonts{\textfonts}
--\let\subsecentryfonts = \textfonts
--\let\subsubsecentryfonts = \textfonts
-+\def\subsecentryfonts{\textfonts}
-+\def\subsubsecentryfonts{\textfonts}
+- --mode) prevopt="--mode" prev=mode ;;
+- --mode=*) mode="$optarg" ;;
++# 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"
+- --quiet | --silent)
+- show=:
+- ;;
++ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
++ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
++ sed_extractcf="/$re_begincf/,/$re_endcf/p"
- \message{environments,}
- % @foo ... @end foo.
+- --tag) prevopt="--tag" prev=tag ;;
+- --tag=*)
+- set tag "$optarg" ${1+"$@"}
++ # 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_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
+- prev=tag
+- ;;
++ 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) ;;
--% Since these characters are used in examples, it should be an even number of
--% \tt widths. Each \tt character is 1en, so two makes it 1em.
--% Furthermore, these definitions must come after we define our fonts.
--\newbox\dblarrowbox \newbox\longdblarrowbox
--\newbox\pushcharbox \newbox\bullbox
--\newbox\equivbox \newbox\errorbox
--
--%{\tentt
--%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
--%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
--%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
--%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
--% Adapted from the manmac format (p.420 of TeXbook)
--%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
--% depth .1ex\hfil}
--%}
--
- % @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\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
--\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-+\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\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+- -dlopen)
+- prevopt="-dlopen"
+- prev=execute_dlfiles
+- ;;
++ # 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-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
++ ;;
-+% 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 \tensf error\kern-1.5pt}
--
--\global\setbox\errorbox=\hbox to \dimen0{\hfil
-+\setbox0 = \hbox{\kern-.75pt \reducedsf error\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{
-+ \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}
--
--% The @error{} command.
-+%
- \def\error{\leavevmode\lower.7ex\copy\errorbox}
+- -*)
+- $echo "$modename: unrecognized option \`$arg'" 1>&2
+- $echo "$help" 1>&2
+- exit 1
++ -\?|-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
++}
- % @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 tex @ character.
++# 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"
++ ;;
+ *)
+- nonopt="$arg"
+- break
++ # Including no sysroot.
++ func_replace_sysroot_result=$1
+ ;;
+ esac
+-done
++}
--\def\tex{\begingroup
-+\envdef\tex{%
- \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
- \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-- \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
-+ \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
- \catcode `\%=14
-- \catcode 43=12 % plus
-- \catcode`\"=12
-- \catcode`\==12
-- \catcode`\|=12
-- \catcode`\<=12
-- \catcode`\>=12
-+ \catcode `\+=\other
-+ \catcode `\"=\other
-+ \catcode `\|=\other
-+ \catcode `\<=\other
-+ \catcode `\>=\other
- \escapechar=`\\
- %
- \let\b=\ptexb
-@@ -4036,20 +5737,26 @@
- \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\@{@}%
--\let\Etex=\endgroup}
+-if test -n "$prevopt"; then
+- $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+-fi
++# 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
+}
-+% There is no need to define \Etex.
-
--% Define @lisp ... @endlisp.
--% @lisp does a \begingroup so it can rebind things,
--% including the definition of @endlisp (which normally is erroneous).
-+% 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
-@@ -4059,34 +5766,34 @@
- % have any width.
- \def\lisppar{\null\endgraf}
-
--% 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.
--%
--{\obeyspaces %
--\gdef\sepspaces{\obeyspaces\let =\tie}}
--
--% Define \obeyedspace to be our active space, whatever it is. This is
--% for use in \parsearg.
--{\sepspaces%
--\global\let\obeyedspace= }
--
- % 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
-+% start of the next paragraph will insert \parskip.
- %
--\def\aboveenvbreak{{\advance\envskipamount by \parskip
--\endgraf \ifdim\lastskip<\envskipamount
--\removelastskip \penalty-50 \vskip\envskipamount \fi}}
-+\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
+-# 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=
--% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
-+% \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
+-if test -z "$show_help"; then
- % @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-@@ -4110,738 +5817,733 @@
- %
- \newskip\lskip\newskip\rskip
+- # Infer the operation mode.
+- if test -z "$mode"; then
+- case $nonopt in
+- *cc | *++ | gcc* | *-gcc*)
+- mode=link
+- for arg
+- do
+- case $arg in
+- -c)
+- mode=compile
+- break
+- ;;
+- esac
+- done
+- ;;
+- *db | *dbx | *strace | *truss)
+- mode=execute
+- ;;
+- *install*|cp|mv)
+- mode=install
+- ;;
+- *rm)
+- mode=uninstall
+- ;;
+- *)
+- # If we have no mode, but dlfiles were specified, then do execute mode.
+- test -n "$execute_dlfiles" && mode=execute
++# func_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
--\long\def\cartouche{%
--\begingroup
-- \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=\comment
-- \vbox\bgroup
-- \baselineskip=0pt\parskip=0pt\lineskip=0pt
-- \carttop
-- \hbox\bgroup
-- \hskip\lskip
-- \vrule\kern3pt
-- \vbox\bgroup
-- \hsize=\cartinner
-- \kern3pt
-- \begingroup
-- \baselineskip=\normbskip
-- \lineskip=\normlskip
-- \parskip=\normpskip
-- \vskip -\parskip
-+\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%
-+ \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.
+- # Just use the default operation mode.
+- if test -z "$mode"; then
+- if test -n "$nonopt"; then
+- $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+- else
+- $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+- 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
+}
- \def\Ecartouche{%
-- \endgroup
-- \kern3pt
-- \egroup
-- \kern3pt\vrule
-- \hskip\rskip
-- \egroup
-- \cartbot
-- \egroup
--\endgroup
--}}
-+ \ifhmode\par\fi
-+ \kern3pt
-+ \egroup
-+ \kern3pt\vrule
-+ \hskip\rskip
-+ \egroup
-+ \cartbot
-+ \egroup
-+ \checkinserts
++# 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
+}
-
-
- % This macro is called at the beginning of all the @example variants,
- % inside a group.
- \def\nonfillstart{%
- \aboveenvbreak
-- \inENV % This group ends at the end of the body
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
-- \singlespace
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- \parindent = 0pt
- \emergencystretch = 0pt % don't try to avoid overfull boxes
-- % @cartouche defines \nonarrowing to inhibit narrowing
-- % at next level down.
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
-- \let\exdent=\nofillexdent
-- \let\nonarrowing=\relax
-+ \else
-+ \let\nonarrowing = \relax
- \fi
-+ \let\exdent=\nofillexdent
- }
-
--% Define the \E... control sequence only if we are inside the particular
--% environment, so the error checking in \end will work.
--%
--% To end an @example-like environment, we first end the paragraph (via
--% \afterenvbreak's vertical glue), and then the group. That way we keep
--% the zero \parskip that the environments set -- \parskip glue will be
--% inserted at the beginning of the next paragraph in the document, after
--% the environment.
-+% 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\nonfillfinish{\afterenvbreak\endgroup}
-+\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
++# 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
+}
-+\def\setsmalldispenv{%
-+ \ifx\SETdispenvsize\nosmallword
-+ \else
-+ \ifnum \lastpenalty=10000 \else \endgraf \fi
-+ \smallexamplefonts \rm
-+ \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
+ ;;
+- esac
++ *)
++ $to_tool_file_cmd "$1"
++ func_to_tool_file_result=$func_to_host_file_result
++ ;;
++ esac
+}
-
--% @lisp: indented, narrowed, typewriter font.
--\def\lisp{\begingroup
-- \nonfillstart
-- \let\Elisp = \nonfillfinish
-- \tt
-- \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-- \gobble % eat return
-+% We often define two environments, @foo and @smallfoo.
-+% Let's do it by one command:
-+\def\makedispenv #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
- }
-
--% @example: Same as @lisp.
--\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-+% Define two synonyms:
-+\def\maketwodispenvs #1#2#3{
-+ \makedispenv{#1}{#3}
-+ \makedispenv{#2}{#3}
++# 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"
+}
-
--% @small... is usually equivalent to the non-small (@smallbook
--% redefines). We must call \example (or whatever) last in the
--% definition, since it reads the return following the @example (or
--% whatever) command.
--%
--% This actually allows (for example) @end display inside an
--% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
-+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
- %
--\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display}
--\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp}
--\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format}
--\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
--
--% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts.
-+% @smallexample and @smalllisp: use smaller fonts.
- % Originally contributed by Pavel at xerox.
--\def\smalllispx{\begingroup
-- \def\Esmalllisp{\nonfillfinish\endgroup}%
-- \def\Esmallexample{\nonfillfinish\endgroup}%
-- \smallfonts
-- \lisp
--}
--
--% @display: same as @lisp except keep current font.
- %
--\def\display{\begingroup
-+\maketwodispenvs {lisp}{example}{%
- \nonfillstart
-- \let\Edisplay = \nonfillfinish
-- \gobble
-+ \tt\quoteexpand
-+ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-+ \gobble % eat return
- }
--
--% @smalldisplay (when @smallbook): @display plus smaller fonts.
-+% @display/@smalldisplay: same as @lisp except keep current font.
- %
--\def\smalldisplayx{\begingroup
-- \def\Esmalldisplay{\nonfillfinish\endgroup}%
-- \smallfonts \rm
-- \display
-+\makedispenv {display}{%
-+ \nonfillstart
-+ \gobble
- }
-
--% @format: same as @display except don't narrow margins.
-+% @format/@smallformat: same as @display except don't narrow margins.
- %
--\def\format{\begingroup
-- \let\nonarrowing = t
-+\makedispenv{format}{%
-+ \let\nonarrowing = t%
- \nonfillstart
-- \let\Eformat = \nonfillfinish
- \gobble
- }
-
--% @smallformat (when @smallbook): @format plus smaller fonts.
--%
--\def\smallformatx{\begingroup
-- \def\Esmallformat{\nonfillfinish\endgroup}%
-- \smallfonts \rm
-- \format
-+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
-+\envdef\flushleft{%
-+ \let\nonarrowing = t%
-+ \nonfillstart
-+ \gobble
- }
--
--% @flushleft (same as @format).
--%
--\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
-+\let\Eflushleft = \afterenvbreak
-
- % @flushright.
- %
--\def\flushright{\begingroup
-- \let\nonarrowing = t
-+\envdef\flushright{%
-+ \let\nonarrowing = t%
- \nonfillstart
-- \let\Eflushright = \nonfillfinish
- \advance\leftskip by 0pt plus 1fill
- \gobble
- }
-+\let\Eflushright = \afterenvbreak
++# 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
- % @quotation does normal linebreaking (hence we can't use \nonfillstart)
--% and narrows the margins.
-+% 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.
- %
--\def\quotation{%
-- \begingroup\inENV %This group ends at the end of the @quotation body
-+\envdef\quotation{%
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-- \singlespace
- \parindent=0pt
-- % We have retained a nonzero parskip for the environment, since we're
-- % doing normal filling. So to avoid extra space below the environment...
-- \def\Equotation{\parskip = 0pt \nonfillfinish}%
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
-+ \else
- \let\nonarrowing = \relax
- \fi
-+ \parsearg\quotationlabel
- }
-
-+% We have retained a nonzero parskip for the environment, since we're
-+% doing normal filling.
-+%
-+\def\Equotation{%
-+ \par
-+ \ifx\quotationauthor\undefined\else
-+ % indent a bit.
-+ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
-+ \fi
-+ {\parskip=0pt \afterenvbreak}%
+- # Only execute mode is allowed to have -dlopen flags.
+- if test -n "$execute_dlfiles" && test "$mode" != execute; then
+- $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+- $echo "$help" 1>&2
+- exit 1
++
++# 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
--\message{defuns,}
--% @defun etc.
--
--% Allow user to change definition object font (\df) internally
--\def\setdeffont #1 {\csname DEF#1\endcsname}
--
--\newskip\defbodyindent \defbodyindent=.4in
--\newskip\defargsindent \defargsindent=50pt
--\newskip\deftypemargin \deftypemargin=12pt
--\newskip\deflastargmargin \deflastargmargin=18pt
--
--\newcount\parencount
--% define \functionparens, which makes ( and ) and & do special things.
--% \functionparens affects the group it is contained in.
--\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 = )
--
--{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
--
--% 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.
--\global\let(=\lparen \global\let)=\rparen
--\global\let[=\lbrack \global\let]=\rbrack
-+% 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
+- # Change the help message to a mode-specific one.
+- generic_help="$help"
+- help="Try \`$modename --help --mode=$mode' for more information."
+
+- # These modes are in order of execution frequency so that they run quickly.
+- case $mode in
+- # libtool compile mode
+- compile)
+- modename="$modename: compile"
+- # Get the compilation command and the source file.
+- base_compile=
+- prev=
+- lastarg=
+- srcfile="$nonopt"
+- suppress_output=
++# 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
--\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
--\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
--% This is used to turn on special parens
--% but make & act ordinary (given that it's active).
--\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
+- user_target=no
+- for arg
+- do
+- case $prev in
+- "") ;;
+- xcompiler)
+- # Aesthetically quote the previous argument.
+- prev=
+- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
--% Definitions of (, ) and & used in args for functions.
--% This is the definition of ( outside of all parentheses.
--\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
-- \global\advance\parencount by 1
-+% 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\"%
- }
- %
--% This is the definition of ( when already inside a level of parens.
--\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-+% [Knuth] p. 380
-+\def\uncatcodespecials{%
-+ \def\do##1{\catcode`##1=\other}\dospecials}
- %
--\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
-- % also in that case restore the outer-level definition of (.
-- \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
-- \global\advance \parencount by -1 }
--% If we encounter &foo, then turn on ()-hacking afterwards
--\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }
-+% [Knuth] pp. 380,381,391
-+% Disable Spanish ligatures ?` and !` of \tt font
-+\begingroup
-+ \catcode`\`=\active\gdef`{\relax\lq}
-+\endgroup
- %
--\gdef\normalparens{\boldbrax\let&=\ampnr}
--} % End of definition inside \activeparens
--%% These parens (in \boldbrax) actually are a little bolder than the
--%% contained text. This is especially needed for [ and ]
--\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
--\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
--\let\ampnr = \&
--\def\lbrb{{\bf\char`\[}}
--\def\rbrb{{\bf\char`\]}}
--
--% Active &'s sneak into the index arguments, so make sure it's defined.
--{
-- \catcode`& = 13
-- \global\let& = \ampnr
-+% 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}%
-+ \catcode`\`=\active
-+ \tabeightspaces
-+ % Respect line breaks,
-+ % print special symbols as themselves, and
-+ % make each space count
-+ % must do in this order:
-+ \obeylines \uncatcodespecials \sepspaces
- }
+- case $arg in
+- # Double-quote args containing other shell metacharacters.
+- # Many Bourne shells cannot handle close brackets correctly
+- # in scan sets, so we specify it separately.
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- arg="\"$arg\""
+- ;;
+- esac
++# 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
--% First, defname, which formats the header line itself.
--% #1 should be the function name.
--% #2 should be the type of definition, such as "Function".
-+% Setup for the @verbatim environment
-+%
-+% Real tab expansion
-+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-+%
-+\def\starttabbox{\setbox0=\hbox\bgroup}
+- # Add the previous argument to base_compile.
+- if test -z "$base_compile"; then
+- base_compile="$lastarg"
+- else
+- base_compile="$base_compile $lastarg"
+- fi
+- continue
+- ;;
+- esac
--\def\defname #1#2{%
--% Get the values of \leftskip and \rightskip as they were
--% outside the @def...
--\dimen2=\leftskip
--\advance\dimen2 by -\defbodyindent
--\noindent
--\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
--\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
--\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
--\parshape 2 0in \dimen0 \defargsindent \dimen1
--% Now output arg 2 ("Function" or some such)
--% ending at \deftypemargin from the right margin,
--% but stuck inside a box of width 0 so it does not interfere with linebreaking
--{% Adjust \hsize to exclude the ambient margins,
--% so that \rightline will obey them.
--\advance \hsize by -\dimen2
--\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
--% Make all lines underfull and no complaints:
--\tolerance=10000 \hbadness=10000
--\advance\leftskip by -\defbodyindent
--\exdentamount=\defbodyindent
--{\df #1}\enskip % Generate function name
-+% Allow an option to not replace quotes with a regular directed right
-+% quote/apostrophe (char 0x27), but instead use the undirected quote
-+% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
-+% the default, but it works for pasting with more pdf viewers (at least
-+% evince), the lilypond developers report. xpdf does work with the
-+% regular 0x27.
-+%
-+\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
-+ `%
-+ \else \char'22 \fi
-+ \else \char'22 \fi
+- # Accept any command-line options.
+- case $arg in
+- -o)
+- if test "$user_target" != "no"; then
+- $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+- exit 1
+- fi
+- user_target=next
+- ;;
++# 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"
+}
-+%
-+\begingroup
-+ \catcode`\^^I=\active
-+ \gdef\tabexpand{%
-+ \catcode`\^^I=\active
-+ \def^^I{\leavevmode\egroup
-+ \dimen0=\wd0 % the width so far, or since the previous tab
-+ \divide\dimen0 by\tabw
-+ \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-+ \advance\dimen0 by\tabw % advance to next multiple of \tabw
-+ \wd0=\dimen0 \box0 \starttabbox
-+ }%
-+ }
-+ \catcode`\'=\active
-+ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
-+ %
-+ \catcode`\`=\active
-+ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
-+ %
-+ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
-+\endgroup
++# end func_convert_file_nix_to_cygwin
+
+- -static)
+- build_old_libs=yes
+- continue
+- ;;
+
+- -prefer-pic)
+- pic_mode=yes
+- continue
+- ;;
++#############################################
++# $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.
+
+- -prefer-non-pic)
+- pic_mode=no
+- continue
+- ;;
--% Actually process the body of a definition
--% #1 should be the terminating control sequence, such as \Edefun.
--% #2 should be the "another name" control sequence, such as \defunx.
--% #3 should be the control sequence that actually processes the header,
--% such as \defunheader.
--
--\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
--\medbreak %
--% Define the end token that this defining construct specifies
--% so that it will exit this group.
--\def#1{\endgraf\endgroup\medbreak}%
--\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
--\parindent=0in
--\advance\leftskip by \defbodyindent
--\exdentamount=\defbodyindent
--\begingroup %
--\catcode 61=\active % 61 is `='
--\obeylines\activeparens\spacesplit#3}
-+% start the verbatim environment.
-+\def\setupverbatim{%
-+ \let\nonarrowing = t%
-+ \nonfillstart
-+ % Easiest (and conventionally used) font for verbatim
-+ \tt
-+ \def\par{\leavevmode\egroup\box0\endgraf}%
-+ \catcode`\`=\active
-+ \tabexpand
-+ \quoteexpand
-+ % Respect line breaks,
-+ % print special symbols as themselves, and
-+ % make each space count
-+ % must do in this order:
-+ \obeylines \uncatcodespecials \sepspaces
-+ \everypar{\starttabbox}%
+- -Xcompiler)
+- prev=xcompiler
+- continue
+- ;;
++# 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
+}
--% #1 is the \E... control sequence to end the definition (which we define).
--% #2 is the \...x control sequence for consecutive fns (which we define).
--% #3 is the control sequence to call to resume processing.
--% #4, delimited by the space, is the class name.
-+% 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\defmethparsebody#1#2#3#4 {\begingroup\inENV %
--\medbreak %
--% Define the end token that this defining construct specifies
--% so that it will exit this group.
--\def#1{\endgraf\endgroup\medbreak}%
--\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
--\parindent=0in
--\advance\leftskip by \defbodyindent
--\exdentamount=\defbodyindent
--\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-+% \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
+- -Wc,*)
+- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+- lastarg=
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
+- for arg in $args; do
+- IFS="$save_ifs"
+
+- # Double-quote args containing other shell metacharacters.
+- # Many Bourne shells cannot handle close brackets correctly
+- # in scan sets, so we specify it separately.
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- arg="\"$arg\""
+- ;;
+- esac
+- lastarg="$lastarg $arg"
+- done
+- IFS="$save_ifs"
+- lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
++# 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"
+}
-+\let\Everbatim = \afterenvbreak
++# end func_to_host_path
--% Used for @deftypemethod and @deftypeivar.
--% #1 is the \E... control sequence to end the definition (which we define).
--% #2 is the \...x control sequence for consecutive fns (which we define).
--% #3 is the control sequence to call to resume processing.
--% #4, delimited by a space, is the class name.
--% #5 is the method's return type.
+- # Add the arguments to base_compile.
+- if test -z "$base_compile"; then
+- base_compile="$lastarg"
+- else
+- base_compile="$base_compile $lastarg"
+- fi
+- continue
+- ;;
+- esac
+
+- case $user_target in
+- next)
+- # The next one is the -o target name
+- user_target=yes
+- continue
++# 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
+
-+% @verbatiminclude FILE - insert text of file in verbatim environment.
- %
--\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
-- \medbreak
-- \def#1{\endgraf\endgroup\medbreak}%
-- \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
-- \parindent=0in
-- \advance\leftskip by \defbodyindent
-- \exdentamount=\defbodyindent
-- \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
-+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
-+%
-+\def\doverbatiminclude#1{%
-+ {%
-+ \makevalueexpandable
-+ \setupverbatim
-+ \input #1
-+ \afterenvbreak
-+ }%
++
++# 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
+}
-
--% Used for @deftypeop. The change from \deftypemethparsebody is an
--% extra argument at the beginning which is the `category', instead of it
--% being the hardwired string `Method' or `Instance Variable'. We have
--% to account for this both in the \...x definition and in parsing the
--% input at hand. Thus also need a control sequence (passed as #5) for
--% the \E... definition to assign the category name to.
--%
--\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
-- \medbreak
-- \def#1{\endgraf\endgroup\medbreak}%
-- \def#2##1 ##2 ##3 {%
-- \def#4{##1}%
-- \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
-- \parindent=0in
-- \advance\leftskip by \defbodyindent
-- \exdentamount=\defbodyindent
-- \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
-+% @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
++# 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
+ ;;
+- yes)
+- # We got the output file
+- user_target=set
++
++ target )
+ libobj="$arg"
++ arg_mode=normal
+ continue
+ ;;
+- esac
--\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
--\medbreak %
--% Define the end token that this defining construct specifies
--% so that it will exit this group.
--\def#1{\endgraf\endgroup\medbreak}%
--\def#2##1 ##2 {\def#4{##1}%
--\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
--\parindent=0in
--\advance\leftskip by \defbodyindent
--\exdentamount=\defbodyindent
--\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
-
--% These parsing functions are similar to the preceding ones
--% except that they do not make parens into active characters.
--% These are used for "variables" since they have no arguments.
-+\message{defuns,}
-+% @defun etc.
+- # Accept the current argument as the source file.
+- lastarg="$srcfile"
+- srcfile="$arg"
++ 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
++ ;;
--\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
--\medbreak %
--% Define the end token that this defining construct specifies
--% so that it will exit this group.
--\def#1{\endgraf\endgroup\medbreak}%
--\def#2{\begingroup\obeylines\spacesplit#3}%
--\parindent=0in
--\advance\leftskip by \defbodyindent
--\exdentamount=\defbodyindent
--\begingroup %
--\catcode 61=\active %
--\obeylines\spacesplit#3}
-+\newskip\defbodyindent \defbodyindent=.4in
-+\newskip\defargsindent \defargsindent=50pt
-+\newskip\deflastargmargin \deflastargmargin=18pt
-+\newcount\defunpenalty
+- # Aesthetically quote the previous argument.
++ -pie | -fpie | -fPIE)
++ func_append pie_flag " $arg"
++ continue
++ ;;
--% This is used for \def{tp,vr}parsebody. It could probably be used for
--% some of the others, too, with some judicious conditionals.
--%
--\def\parsebodycommon#1#2#3{%
-- \begingroup\inENV %
-- \medbreak %
-- % Define the end token that this defining construct specifies
-- % so that it will exit this group.
-- \def#1{\endgraf\endgroup\medbreak}%
-- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
-+% 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 minor 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
-- \begingroup\obeylines
- }
+- # Backslashify any backslashes, double quotes, and dollar signs.
+- # These are the only characters that are still specially
+- # interpreted inside of double-quoted scrings.
+- lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
++ -shared | -static | -prefer-pic | -prefer-non-pic)
++ func_append later " $arg"
++ continue
++ ;;
--\def\defvrparsebody#1#2#3#4 {%
-- \parsebodycommon{#1}{#2}{#3}%
-- \spacesplit{#3{#4}}%
-+\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{}
+- # Double-quote args containing other shell metacharacters.
+- # Many Bourne shells cannot handle close brackets correctly
+- # in scan sets, so we specify it separately.
+- case $lastarg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- lastarg="\"$lastarg\""
++ -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
++ esac # case $arg_mode
--% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
--% type is just `struct', because we lose the braces in `{struct
--% termios}' when \spacesplit reads its undelimited argument. Sigh.
--% \let\deftpparsebody=\defvrparsebody
--%
--% So, to get around this, we put \empty in with the type name. That
--% way, TeX won't find exactly `{...}' as an undelimited argument, and
--% won't strip off the braces.
-+% \printdefunline \deffnheader{text}
- %
--\def\deftpparsebody #1#2#3#4 {%
-- \parsebodycommon{#1}{#2}{#3}%
-- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-+\def\printdefunline#1#2{%
-+ \begingroup
-+ % call \deffnheader:
-+ #1#2 \endheader
-+ % common ending:
-+ \interlinepenalty = 10000
-+ \advance\rightskip by 0pt plus 1fil
-+ \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
- }
+- # Add the previous argument to base_compile.
+- if test -z "$base_compile"; then
+- base_compile="$lastarg"
+- else
+- base_compile="$base_compile $lastarg"
+- fi
+- done
++ # Aesthetically quote the previous argument.
++ func_append_quoted base_compile "$lastarg"
++ done # for arg
--% Fine, but then we have to eventually remove the \empty *and* the
--% braces (if any). That's what this does.
--%
--\def\removeemptybraces\empty#1\relax{#1}
-+\def\Edefun{\endgraf\medbreak}
+- case $user_target in
+- set)
++ case $arg_mode in
++ arg)
++ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+- no)
+- # Get the name of the library object.
+- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
++ target)
++ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+- $echo "$modename: you must specify a target with \`-o'" 1>&2
+- exit 1
++ # Get the name of the library object.
++ test -z "$libobj" && {
++ func_basename "$srcfile"
++ libobj="$func_basename_result"
++ }
+ ;;
+ esac
--% After \spacesplit has done its work, this is called -- #1 is the final
--% thing to call, #2 the type name (which starts with \empty), and #3
--% (which might be empty) the arguments.
-+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-+% the only thing remaining is to define \deffnheader.
- %
--\def\parsetpheaderline#1#2#3{%
-- #1{\removeemptybraces#2\relax}{#3}%
--}%
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+- xform='[cCFSfmso]'
+ case $libobj in
+- *.ada) xform=ada ;;
+- *.adb) xform=adb ;;
+- *.ads) xform=ads ;;
+- *.asm) xform=asm ;;
+- *.c++) xform=c++ ;;
+- *.cc) xform=cc ;;
+- *.class) xform=class ;;
+- *.cpp) xform=cpp ;;
+- *.cxx) xform=cxx ;;
+- *.f90) xform=f90 ;;
+- *.for) xform=for ;;
+- *.java) xform=java ;;
++ *.[cCFSifmso] | \
++ *.ada | *.adb | *.ads | *.asm | \
++ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
++ *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
++ func_xform "$libobj"
++ libobj=$func_xform_result
++ ;;
+ esac
+
+- libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
-
--\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
--\medbreak %
--% Define the end token that this defining construct specifies
--% so that it will exit this group.
--\def#1{\endgraf\endgroup\medbreak}%
--\def#2##1 ##2 {\def#4{##1}%
--\begingroup\obeylines\spacesplit{#3{##2}}}%
--\parindent=0in
--\advance\leftskip by \defbodyindent
--\exdentamount=\defbodyindent
--\begingroup\obeylines\spacesplit{#3{#5}}}
-+\def\makedefun#1{%
-+ \expandafter\let\csname E#1\endcsname = \Edefun
-+ \edef\temp{\noexpand\domakedefun
-+ \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
-+ \temp
-+}
+ case $libobj in
+- *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
++ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+- $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+- exit 1
++ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
--% Split up #2 at the first space token.
--% call #1 with two arguments:
--% the first is all of #2 before the space token,
--% the second is all of #2 after that space token.
--% If #2 contains no space token, all of it is passed as the first arg
--% and the second is passed as empty.
-+% \domakedefun \deffn \deffnx \deffnheader
-+%
-+% Define \deffn and \deffnx, without parameters.
-+% \deffnheader has to be defined explicitly.
-+%
-+\def\domakedefun#1#2#3{%
-+ \envdef#1{%
-+ \startdefun
-+ \parseargusing\activeparens{\printdefunline#3}%
-+ }%
-+ \def#2{\dodefunx#1}%
-+ \def#3%
-+}
+- # 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.
+- if test -n "$available_tags" && test -z "$tagname"; then
+- case $base_compile in
+- "$CC "*) ;;
+- # Blanks in the command may have been stripped by the calling shell,
+- # but not from the CC environment variable when ltconfig was run.
+- "`$echo $CC` "*) ;;
+- *)
+- for z in $available_tags; do
+- if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+- # Evaluate the configuration.
+- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+- case $base_compile in
+- "$CC "*)
+- # The compiler in the base compile command matches
+- # the one in the tagged configuration.
+- # Assume this is the tagged configuration we want.
+- tagname=$z
+- break
+- ;;
+- "`$echo $CC` "*)
+- tagname=$z
+- break
+- ;;
+- esac
+- fi
+- done
+- # If $tagname still isn't set, then no tagged configuration
+- # was found and let the user know that the "--tag" command
+- # line option must be used.
+- if test -z "$tagname"; then
+- echo "$modename: unable to infer tagged configuration"
+- echo "$modename: specify a tag with \`--tag'" 1>&2
+- exit 1
+-# else
+-# echo "$modename: using $tagname tagged configuration"
+- fi
++ 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
+- fi
++ done
--{\obeylines
--\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
--\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
--\ifx\relax #3%
--#1{#2}{}\else #1{#2}{#3#4}\fi}}
-+%%% Untyped functions:
+- objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$xdir" = "X$obj"; then
+- xdir=
+- else
+- xdir=$xdir/
+- fi
++ 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
+
+- if test -z "$base_compile"; then
+- $echo "$modename: you must specify a compilation command" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
++ 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
+@@ -556,16 +2120,13 @@
+ removelist="$lobj $libobj ${libobj}T"
+ fi
--% So much for the things common to all kinds of definitions.
-+% @deffn category name args
-+\makedefun{deffn}{\deffngeneral{}}
+- $run $rm $removelist
+- trap "$run $rm $removelist; exit 1" 1 2 15
+-
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+- cygwin* | mingw* | pw32* | os2*)
++ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ pic_mode=default
+ ;;
+ esac
+- if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
++ 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
+@@ -573,10 +2134,8 @@
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
++ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+- removelist="$removelist $output_obj $lockfile"
+- trap "$run $rm $removelist; exit 1" 1 2 15
+ else
+ output_obj=
+ need_locks=no
+@@ -586,13 +2145,13 @@
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+- until $run ln "$0" "$lockfile" 2>/dev/null; do
+- $show "Waiting for $lockfile to be removed"
++ 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 "\
++ $ECHO "\
+ *** ERROR, $lockfile exists and contains:
+ `cat $lockfile 2>/dev/null`
--% Define @defun.
-+% @deffn category class name args
-+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+@@ -603,29 +2162,21 @@
+ avoid parallel builds (make -j) in this platform, or get a better
+ compiler."
--% First, define the processing that is wanted for arguments of \defun
--% Use this to expand the args and terminate the paragraph they make up
-+% \defopon {category on}class name args
-+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+- $run $rm $removelist
+- exit 1
++ $opt_dry_run || $RM $removelist
++ exit $EXIT_FAILURE
+ fi
+- echo $srcfile > "$lockfile"
+- fi
+-
+- if test -n "$fix_srcfile_path"; then
+- eval srcfile=\"$fix_srcfile_path\"
++ func_append removelist " $output_obj"
++ $ECHO "$srcfile" > "$lockfile"
+ fi
--\def\defunargs#1{\functionparens \sl
--% Expand, preventing hyphenation at `-' chars.
--% Note that groups don't affect changes in \hyphenchar.
--% Set the font temporarily and use \font in case \setfont made \tensl a macro.
--{\tensl\hyphenchar\font=0}%
--#1%
--{\tensl\hyphenchar\font=45}%
--\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
--\interlinepenalty=10000
--\advance\rightskip by 0pt plus 1fil
--\endgraf\nobreak\vskip -\parskip\nobreak
-+% \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}%
- }
+- $run $rm "$libobj" "${libobj}T"
+-
+- # Create a libtool object file (analogous to a ".la" file),
+- # but don't create it if we're doing a dry run.
+- test -z "$run" && cat > ${libobj}T <<EOF
+-# $libobj - a libtool object file
+-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+-#
+-# Please DO NOT delete this file!
+-# It is necessary for linking the library.
++ $opt_dry_run || $RM $removelist
++ func_append removelist " $lockfile"
++ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
--\def\deftypefunargs #1{%
--% Expand, preventing hyphenation at `-' chars.
--% Note that groups don't affect changes in \hyphenchar.
--% Use \boldbraxnoamp, not \functionparens, so that & is not special.
--\boldbraxnoamp
--\tclose{#1}% avoid \code because of side effects on active chars
--\interlinepenalty=10000
--\advance\rightskip by 0pt plus 1fil
--\endgraf\nobreak\vskip -\parskip\nobreak
--}
-+%%% Typed functions:
+-# Name of the PIC object.
+-EOF
++ 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
--% Do complete processing of one @defun or @defunx line already parsed.
-+% @deftypefn category type name args
-+\makedefun{deftypefn}{\deftypefngeneral{}}
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+@@ -633,38 +2184,25 @@
+ fbsd_hideous_sh_bug=$base_compile
--% @deffn Command forward-char nchars
-+% @deftypeop category class type name args
-+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+ if test "$pic_mode" != no; then
+- command="$base_compile $srcfile $pic_flag"
++ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+- command="$base_compile $srcfile"
++ command="$base_compile $qsrcfile"
+ fi
--\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-+% \deftypeopon {category on}class type name args
-+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+- if test ! -d ${xdir}$objdir; then
+- $show "$mkdir ${xdir}$objdir"
+- $run $mkdir ${xdir}$objdir
+- status=$?
+- if test $status -ne 0 && test ! -d ${xdir}$objdir; then
+- exit $status
+- fi
+- fi
++ func_mkdir_p "$xdir$objdir"
--\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
--\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
--\catcode 61=\other % Turn off change made in \defparsebody
-+% \deftypefngeneral {subind}category type name args
-+%
-+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
-+ \dosubind{fn}{\code{#4}}{#1}%
-+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
- }
+ if test -z "$output_obj"; then
+- # Place PIC objects in $objdir
+- command="$command -o $lobj"
++ # Place PIC objects in $objdir
++ func_append command " -o $lobj"
+ fi
--% @defun == @deffn Function
+- $run $rm "$lobj" "$output_obj"
-
--\def\defun{\defparsebody\Edefun\defunx\defunheader}
-+%%% Typed variables:
+- $show "$command"
+- if $run eval "$command"; then :
+- else
+- test -n "$output_obj" && $run $rm $removelist
+- exit 1
+- fi
++ func_show_eval_locale "$command" \
++ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
--\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
--\begingroup\defname {#1}{\putwordDeffunc}%
--\defunargs {#2}\endgroup %
--\catcode 61=\other % Turn off change made in \defparsebody
--}
-+% @deftypevr category type var args
-+\makedefun{deftypevr}{\deftypecvgeneral{}}
+ if test "$need_locks" = warn &&
+- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+- echo "\
++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
++ $ECHO "\
+ *** ERROR, $lockfile contains:
+ `cat $lockfile 2>/dev/null`
--% @deftypefun int foobar (int @var{foo}, float @var{bar})
-+% @deftypecv category class type var args
-+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+@@ -678,63 +2216,42 @@
+ avoid parallel builds (make -j) in this platform, or get a better
+ compiler."
--\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-+% \deftypecvof {category of}class type var args
-+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+- $run $rm $removelist
+- exit 1
++ $opt_dry_run || $RM $removelist
++ exit $EXIT_FAILURE
+ fi
--% #1 is the data type. #2 is the name and args.
--\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
--% #1 is the data type, #2 the name, #3 the args.
--\def\deftypefunheaderx #1#2 #3\relax{%
--\doind {fn}{\code{#2}}% Make entry in function index
--\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
--\deftypefunargs {#3}\endgroup %
--\catcode 61=\other % Turn off change made in \defparsebody
-+% \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}%
- }
+ # Just move the object if needed, then go on to compile the next one
+- if test -n "$output_obj" && test "x$output_obj" != "x$lobj"; then
+- $show "$mv $output_obj $lobj"
+- if $run $mv $output_obj $lobj; then :
+- else
+- error=$?
+- $run $rm $removelist
+- exit $error
+- fi
++ 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
+
+- # Append the name of the PIC object to the libtool object file.
+- test -z "$run" && cat >> ${libobj}T <<EOF
+-pic_object='$objdir/$objname'
+-
+-EOF
+-
+ # Allow error messages only from the first compilation.
+- suppress_output=' >/dev/null 2>&1'
+- else
+- # No PIC object so indicate it doesn't exist in the libtool
+- # object file.
+- test -z "$run" && cat >> ${libobj}T <<EOF
+-pic_object=none
+-
+-EOF
++ 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 $srcfile"
++ command="$base_compile $qsrcfile$pie_flag"
+ else
+- command="$base_compile $srcfile $pic_flag"
++ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+- command="$command -o $obj"
++ func_append command " -o $obj"
+ fi
--% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
--
--\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
--
--% \defheaderxcond#1\relax$$$
--% puts #1 in @code, followed by a space, but does nothing if #1 is null.
--\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
-+%%% Untyped variables:
+ # Suppress compiler output if we already did a PIC compilation.
+- command="$command$suppress_output"
+- $run $rm "$obj" "$output_obj"
+- $show "$command"
+- if $run eval "$command"; then :
+- else
+- $run $rm $removelist
+- exit 1
+- fi
++ func_append command "$suppress_output"
++ func_show_eval_locale "$command" \
++ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
--% #1 is the classification. #2 is the data type. #3 is the name and args.
--\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
--% #1 is the classification, #2 the data type, #3 the name, #4 the args.
--\def\deftypefnheaderx #1#2#3 #4\relax{%
--\doind {fn}{\code{#3}}% Make entry in function index
--\begingroup
--\normalparens % notably, turn off `&' magic, which prevents
--% at least some C++ text from working
--\defname {\defheaderxcond#2\relax$$$#3}{#1}%
--\deftypefunargs {#4}\endgroup %
--\catcode 61=\other % Turn off change made in \defparsebody
--}
-+% @defvr category var args
-+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+ if test "$need_locks" = warn &&
+- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+- echo "\
++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
++ $ECHO "\
+ *** ERROR, $lockfile contains:
+ `cat $lockfile 2>/dev/null`
--% @defmac == @deffn Macro
-+% @defcv category class var args
-+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+@@ -748,57 +2265,2828 @@
+ avoid parallel builds (make -j) in this platform, or get a better
+ compiler."
--\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-+% \defcvof {category of}class var args
-+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+- $run $rm $removelist
+- exit 1
++ $opt_dry_run || $RM $removelist
++ exit $EXIT_FAILURE
+ fi
--\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
--\begingroup\defname {#1}{\putwordDefmac}%
--\defunargs {#2}\endgroup %
--\catcode 61=\other % Turn off change made in \defparsebody
-+%%% Type:
-+% @deftp category name args
-+\makedefun{deftp}#1 #2 #3\endheader{%
-+ \doind{tp}{\code{#2}}%
-+ \defname{#1}{}{#2}\defunargs{#3\unskip}%
- }
+ # Just move the object if needed
+- if test -n "$output_obj" && test "x$output_obj" != "x$obj"; then
+- $show "$mv $output_obj $obj"
+- if $run $mv $output_obj $obj; then :
++ 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
+- error=$?
+- $run $rm $removelist
+- exit $error
++ 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
--% @defspec == @deffn Special Form
--
--\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
--
--\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
--\begingroup\defname {#1}{\putwordDefspec}%
--\defunargs {#2}\endgroup %
--\catcode 61=\other % Turn off change made in \defparsebody
--}
-+% 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}
+- # Append the name of the non-PIC object the libtool object file.
+- # Only append if the libtool object file exists.
+- test -z "$run" && cat >> ${libobj}T <<EOF
+-# Name of the non-PIC object.
+-non_pic_object='$objname'
++ # This variable tells wrapper scripts just to set shlibpath_var
++ # rather than running their programs.
++ libtool_execute_magic="$magic"
--% @defop CATEGORY CLASS OPERATION ARG...
-+% \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.
- %
--\def\defop #1 {\def\defoptype{#1}%
--\defopparsebody\Edefop\defopx\defopheader\defoptype}
-+% We are followed by (but not passed) the arguments, if any.
- %
--\def\defopheader#1#2#3{%
--\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
--\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}%
--\defunargs {#3}\endgroup %
-+\def\defname#1#2#3{%
-+ % Get the values of \leftskip and \rightskip as they were outside the @def...
-+ \advance\leftskip by -\defbodyindent
-+ %
-+ % How we'll format the type name. Putting it in brackets helps
-+ % 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.
-+ % 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
-+ % The continuations:
-+ \dimen2=\hsize \advance\dimen2 by -\defargsindent
-+ % (plain.tex says that \dimen1 should be used only as global.)
-+ \parshape 2 0in \dimen0 \defargsindent \dimen2
-+ %
-+ % Put the type name to the right margin.
-+ \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}% return value type
-+ \ifx\temp\empty\else \tclose{\temp} \fi
-+ #3% output function name
-+ }%
-+ {\rm\enskip}% hskip 0.5 em of \tenrm
-+ %
-+ \boldbrax
-+ % arguments will be output next, if any.
- }
+-EOF
++ # 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
+- # Append the name of the non-PIC object the libtool object file.
+- # Only append if the libtool object file exists.
+- test -z "$run" && cat >> ${libobj}T <<EOF
+-# Name of the non-PIC object.
+-non_pic_object=none
++ # 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
++}
--% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
--%
--\def\deftypeop #1 {\def\deftypeopcategory{#1}%
-- \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
-- \deftypeopcategory}
-+% 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.
- %
--% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
--\def\deftypeopheader#1#2#3#4{%
-- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
-- \begingroup
-- \defname{\defheaderxcond#2\relax$$$#3}
-- {\deftypeopcategory\ \putwordon\ \code{#1}}%
-- \deftypefunargs{#4}%
-- \endgroup
-+\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. Let's try @var for that.
-+ \let\var=\ttslanted
-+ #1%
-+ \sl\hyphenchar\font=45
- }
+-EOF
++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
--% @deftypemethod CLASS TYPE METHOD ARG...
--%
--\def\deftypemethod{%
-- \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
-+% We want ()&[] to print specially on the defun line.
- %
--% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
--\def\deftypemethodheader#1#2#3#4{%
-- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
-- \begingroup
-- \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%
-- \deftypefunargs{#4}%
-- \endgroup
-+\def\activeparens{%
-+ \catcode`\(=\active \catcode`\)=\active
-+ \catcode`\[=\active \catcode`\]=\active
-+ \catcode`\&=\active
- }
+- $run $mv "${libobj}T" "${libobj}"
++ 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
--% @deftypeivar CLASS TYPE VARNAME
--%
--\def\deftypeivar{%
-- \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
--%
--% #1 is the class name, #2 the data type, #3 the variable name.
--\def\deftypeivarheader#1#2#3{%
-- \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
-- \begingroup
-- \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
-- \defvarargs{#3}%
-- \endgroup
--}
-+% Make control sequences which act like normal parenthesis chars.
-+\let\lparen = ( \let\rparen = )
+- # Unlock the critical section if it was locked
+- if test "$need_locks" != no; then
+- $run $rm "$lockfile"
++ # 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
++}
--% @defmethod == @defop Method
--%
--\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
--%
--% #1 is the class name, #2 the method name, #3 the args.
--\def\defmethodheader#1#2#3{%
-- \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
-- \begingroup
-- \defname{#2}{\putwordMethodon\ \code{#1}}%
-- \defunargs{#3}%
-- \endgroup
-+% 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.
+- exit 0
++test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
++
++
++# func_mode_install arg...
++func_mode_install ()
+{
-+ \activeparens
-+ \global\let(=\lparen \global\let)=\rparen
-+ \global\let[=\lbrack \global\let]=\rbrack
-+ \global\let& = \&
++ $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
+
-+ \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-+ \gdef\magicamp{\let&=\amprm}
- }
-
--% @defcv {Class Option} foo-class foo-flag
-+\newcount\parencount
-
--\def\defcv #1 {\def\defcvtype{#1}%
--\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-+% If we encounter &foo, then turn on ()-hacking afterwards
-+\newif\ifampseen
-+\def\amprm#1 {\ampseentrue{\bf\ }}
-
--\def\defcvarheader #1#2#3{%
--\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
--\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
--\defvarargs {#3}\endgroup %
-+\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
- }
--
--% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
--%
--\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
--%
--\def\defivarheader#1#2#3{%
-- \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index
-- \begingroup
-- \defname{#2}{\putwordInstanceVariableof\ #1}%
-- \defvarargs{#3}%
-- \endgroup
-+\def\infirstlevel#1{%
-+ \ifampseen
-+ \ifnum\parencount=1
-+ #1%
-+ \fi
-+ \fi
- }
-+\def\bfafterword#1 {#1 \bf}
-
--% @defvar
--% First, define the processing that is wanted for arguments of @defvar.
--% This is actually simple: just print them in roman.
--% This must expand the args and terminate the paragraph they make up
--\def\defvarargs #1{\normalparens #1%
--\interlinepenalty=10000
--\endgraf\nobreak\vskip -\parskip\nobreak}
--
--% @defvr Counter foo-count
--
--\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
--
--\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
--\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
--
--% @defvar == @defvr Variable
--
--\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
--
--\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
--\begingroup\defname {#1}{\putwordDefvar}%
--\defvarargs {#2}\endgroup %
-+\def\opnr{%
-+ \global\advance\parencount by 1
-+ {\parenfont(}%
-+ \infirstlevel \bfafterword
- }
--
--% @defopt == @defvr {User Option}
--
--\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
--
--\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
--\begingroup\defname {#1}{\putwordDefopt}%
--\defvarargs {#2}\endgroup %
-+\def\clnr{%
-+ {\parenfont)}%
-+ \infirstlevel \sl
-+ \global\advance\parencount by -1
- }
-
--% @deftypevar int foobar
--
--\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
--
--% #1 is the data type. #2 is the name, perhaps followed by text that
--% is actually part of the data type, which should not be put into the index.
--\def\deftypevarheader #1#2{%
--\dovarind#2 \relax% Make entry in variables index
--\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
--\interlinepenalty=10000
--\endgraf\nobreak\vskip -\parskip\nobreak
--\endgroup}
--\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
--
--% @deftypevr {Global Flag} int enable
--
--\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
--
--\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
--\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
--\interlinepenalty=10000
--\endgraf\nobreak\vskip -\parskip\nobreak
--\endgroup}
--
--% Now define @deftp
--% Args are printed in bold, a slight difference from @defvar.
--
--\def\deftpargs #1{\bf \defvarargs{#1}}
--
--% @deftp Class window height width ...
--
--\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
--
--\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
--\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-+\newcount\brackcount
-+\def\lbrb{%
-+ \global\advance\brackcount by 1
-+ {\bf[}%
-+}
-+\def\rbrb{%
-+ {\bf]}%
-+ \global\advance\brackcount by -1
-+}
-
--% These definitions are used if you use @defunx (etc.)
--% anywhere other than immediately after a @defun or @defunx.
--%
--\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
--\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
--\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
--\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
--\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
--\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
--\def\defopx#1 {\errmessage{@defopx in invalid context}}
--\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
--\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
--\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
--\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
--\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
--\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
--\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
--\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
--\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
--\def\defunx#1 {\errmessage{@defunx in invalid context}}
--\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
--\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
-+\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
++ # 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_show_eval "$install_prog \$file \$oldlib" 'exit $?'
++
++ if test -n "$stripme" && test -n "$old_striplib"; then
++ func_show_eval "$old_striplib $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
+}
-
-
- \message{macros,}
-@@ -4850,42 +6552,68 @@
- % To do this right we need a feature of e-TeX, \scantokens,
- % which we arrange to emulate with a temporary file in ordinary TeX.
- \ifx\eTeXversion\undefined
-- \newwrite\macscribble
-- \def\scanmacro#1{%
-- \begingroup \newlinechar`\^^M
-- % Undo catcode changes of \startcontents and \doprintindex
-- \catcode`\@=0 \catcode`\\=12 \escapechar=`\@
-- % Append \endinput to make sure that TeX does not see the ending newline.
-- \toks0={#1\endinput}%
-- \immediate\openout\macscribble=\jobname.tmp
-- \immediate\write\macscribble{\the\toks0}%
-- \immediate\closeout\macscribble
-- \let\xeatspaces\eatspaces
-- \input \jobname.tmp
-- \endgroup
--}
--\else
--\def\scanmacro#1{%
--\begingroup \newlinechar`\^^M
--% Undo catcode changes of \startcontents and \doprintindex
--\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
--\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
-+ \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 \example
-+ \spaceisspace
-+ %
-+ % Append \endinput to make sure that TeX does not see the ending newline.
-+ % I've verified that it is necessary both for e-TeX and for ordinary TeX
-+ % --kasal, 29nov03
-+ \scantokens{#1\endinput}%
-+ \endgroup
++
++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
+
-+\def\scanexp#1{%
-+ \edef\temp{\noexpand\scanmacro{#1}}%
-+ \temp
++#ifdef __cplusplus
+}
++#endif\
++"
++ } # !$opt_dry_run
+
- \newcount\paramno % Count of parameters
- \newtoks\macname % Macro name
- \newif\ifrecursive % Is it recursive?
--\def\macrolist{} % List of all defined macros in the form
-- % \do\macro1\do\macro2...
++ 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
+
-+% 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{}
++ # 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 $?'
+
-+% 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}%
++ # 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"
+}
- % Utility routines.
--% Thisdoes \let #1 = #2, except with \csnames.
-+% 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\expandafter
--\expandafter\let
--\expandafter\expandafter
--\csname#1\endcsname
--\csname#2\endcsname}
-+ \expandafter\let
-+ \csname#1\expandafter\endcsname
-+ \csname#2\endcsname
+- # libtool link mode
+- link | relink)
+- modename="$modename: link"
++# 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"`
+}
-
- % Trim leading and trailing spaces off a string.
- % Concepts from aro-bend problem 15 (see CTAN).
-@@ -4898,7 +6626,7 @@
- }
-
- % Trim a single trailing ^^M off a string.
--{\catcode`\^^M=12\catcode`\Q=3%
-+{\catcode`\^^M=\other \catcode`\Q=3%
- \gdef\eatcr #1{\eatcra #1Q^^MQ}%
- \gdef\eatcra#1^^MQ{\eatcrb#1Q}%
- \gdef\eatcrb#1Q#2Q{#1}%
-@@ -4908,34 +6636,45 @@
- % all characters are catcode 10, 11 or 12, except \ which is active
- % (as in normal texinfo). It is necessary to change the definition of \.
-
-+% 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{%
-+ \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
++# 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'
+}
+
-+\def\scanargctxt{%
-+ \scanctxt
-+ \catcode`\\=\other
-+ \catcode`\^^M=\other
++# 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"
+}
+
- \def\macrobodyctxt{%
-- \catcode`\~=12
-- \catcode`\^=12
-- \catcode`\_=12
-- \catcode`\|=12
-- \catcode`\<=12
-- \catcode`\>=12
-- \catcode`\+=12
-- \catcode`\{=12
-- \catcode`\}=12
-- \catcode`\@=12
-- \catcode`\^^M=12
-- \usembodybackslash}
-+ \scanctxt
-+ \catcode`\{=\other
-+ \catcode`\}=\other
-+ \catcode`\^^M=\other
-+ \usembodybackslash
-+}
-
- \def\macroargctxt{%
-- \catcode`\~=12
-- \catcode`\^=12
-- \catcode`\_=12
-- \catcode`\|=12
-- \catcode`\<=12
-- \catcode`\>=12
-- \catcode`\+=12
-- \catcode`\@=12
-- \catcode`\\=12}
-+ \scanctxt
-+ \catcode`\\=\other
++# 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"
+}
-
- % \mbodybackslash is the definition of \ in @macro bodies.
- % It maps \foo\ => \csname macarg.foo\endcsname => #N
-@@ -4963,45 +6702,42 @@
- \message{Warning: redefining \the\macname}%
- \else
- \expandafter\ifx\csname \the\macname\endcsname \relax
-- \else \errmessage{The name \the\macname\space is reserved}\fi
-+ \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%
-- % Add the macroname to \macrolist
-- \toks0 = \expandafter{\macrolist\do}%
-- \xdef\macrolist{\the\toks0
-- \expandafter\noexpand\csname\the\macname\endcsname}%
-+ \addtomacrolist{\the\macname}%
- \fi
- \begingroup \macrobodyctxt
- \ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
- \fi}
-
--\def\unmacro{\parsearg\unmacroxxx}
--\def\unmacroxxx#1{%
-+\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
-+ % Remove the macro name from \macrolist:
- \begingroup
-- \edef\tempa{\expandafter\noexpand\csname#1\endcsname}%
-- \def\do##1{%
-- \def\tempb{##1}%
-- \ifx\tempa\tempb
-- % remove this
-- \else
-- \toks0 = \expandafter{\newmacrolist\do}%
-- \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
-- \fi}%
-- \def\newmacrolist{}%
-- % Execute macro list to define \newmacrolist
-- \macrolist
-- \global\let\macrolist\newmacrolist
-+ \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
++
++# 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
+}
+
- % 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.
-@@ -5111,34 +6847,31 @@
- % {. 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\next=#1\futurelet\nchar\braceorlinexxx}
-+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
- \def\braceorlinexxx{%
- \ifx\nchar\bgroup\else
- \expandafter\parsearg
-- \fi \next}
--
--% We mant to disable all macros during \shipout so that they are not
--% expanded by \write.
--\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
-- \edef\next{\macrolist}\expandafter\endgroup\next}
-+ \fi \macnamexxx}
-
-
- % @alias.
- % We need some trickery to remove the optional spaces around the equal
- % sign. Just make them active and then expand them all to nothing.
--\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
-+\def\alias{\parseargusing\obeyspaces\aliasxxx}
- \def\aliasxxx #1{\aliasyyy#1\relax}
--\def\aliasyyy #1=#2\relax{\ignoreactivespaces
--\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
-- \expandafter\noexpand\csname#2\endcsname}%
--\expandafter\endgroup\next}
-+\def\aliasyyy #1=#2\relax{%
-+ {%
-+ \expandafter\let\obeyedspace=\empty
-+ \addtomacrolist{#1}%
-+ \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
-+ }%
-+ \next
++
++# 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
+}
-
-
- \message{cross references,}
--% @xref etc.
-
- \newwrite\auxfile
--
- \newif\ifhavexrefs % True if xref values are known.
- \newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-@@ -5147,56 +6880,68 @@
- \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
--% @node's job is to define \lastnode.
--\def\node{\ENVcheck\parsearg\nodezzz}
--\def\nodezzz#1{\nodexxx [#1,]}
--\def\nodexxx[#1,#2]{\gdef\lastnode{#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=\relax
-+\let\lastnode=\empty
-
--% The sectioning commands (@chapter, etc.) call these.
--\def\donoderef{%
-- \ifx\lastnode\relax\else
-- \expandafter\expandafter\expandafter\setref{\lastnode}%
-- {Ysectionnumberandtype}%
-- \global\let\lastnode=\relax
-- \fi
--}
--\def\unnumbnoderef{%
-- \ifx\lastnode\relax\else
-- \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
-- \global\let\lastnode=\relax
-- \fi
--}
--\def\appendixnoderef{%
-- \ifx\lastnode\relax\else
-- \expandafter\expandafter\expandafter\setref{\lastnode}%
-- {Yappendixletterandtype}%
-- \global\let\lastnode=\relax
-+% 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
--\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
--\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
--\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-+%
-+\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, namely
--% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have
--% to set \indexdummies so commands such as @code in a section title
--% aren't expanded. It would be nicer not to expand the titles in the
--% first place, but there's so many layers that that is hard to do.
-+% \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.
- %
--\def\setref#1#2{{%
-- \indexdummies
-+% 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}%
-- \dosetq{#1-title}{Ytitle}%
-- \dosetq{#1-pg}{Ypagenumber}%
-- \dosetq{#1-snt}{#2}%
--}}
-+ \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, during \shipout
-+ }%
-+ \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"
+}
-
- % @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
-@@ -5209,135 +6954,162 @@
- \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \unsepspaces
- \def\printedmanual{\ignorespaces #5}%
-- \def\printednodename{\ignorespaces #3}%
-- \setbox1=\hbox{\printedmanual}%
-- \setbox0=\hbox{\printednodename}%
-+ \def\printedrefname{\ignorespaces #3}%
-+ \setbox1=\hbox{\printedmanual\unskip}%
-+ \setbox0=\hbox{\printedrefname\unskip}%
- \ifdim \wd0 = 0pt
- % No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
-- \def\printednodename{\ignorespaces #1}%
-+ \def\printedrefname{\ignorespaces #1}%
- \else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
-- \def\printednodename{\ignorespaces #1}%
-+ \def\printedrefname{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We know the real title if we have the xref values.
-- \def\printednodename{\refx{#1-title}{}}%
-+ \def\printedrefname{\refx{#1-title}{}}%
- \else
- % Otherwise just copy the Info node name.
-- \def\printednodename{\ignorespaces #1}%
-+ \def\printedrefname{\ignorespaces #1}%
- \fi%
- \fi
- \fi
- \fi
- %
-- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-- % insert empty discretionaries after hyphens, which means that it will
-- % not find a line break at a hyphen in a node names. Since some manuals
-- % are best written with fairly long node names, containing hyphens, this
-- % is a loss. Therefore, we give the text of the node name again, so it
-- % is as if TeX is seeing it for the first time.
-+ % Make link in pdf output.
- \ifpdf
-- \leavevmode
-- \getfilename{#4}%
-- \ifnum\filenamelength>0
-- \startlink attr{/Border [0 0 0]}%
-- goto file{\the\filename.pdf} name{#1@}%
-- \else
-- \startlink attr{/Border [0 0 0]}%
-- goto name{#1@}%
-- \fi
-- \linkcolor
-+ {\indexnofonts
-+ \turnoffactive
-+ % This expands tokens, so do it after making catcode changes, so _
-+ % etc. don't get their TeX definitions.
-+ \getfilename{#4}%
-+ %
-+ % See comments at \activebackslashdouble.
-+ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
-+ \backslashparens\pdfxrefdest}%
-+ %
-+ \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
- %
-- \ifdim \wd1 > 0pt
-- \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
-+ % 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\wd0 = 0pt
-+ \refx{#1-snt}{}%
-+ \else
-+ \printedrefname
-+ \fi
-+ %
-+ % if the user also gave the printed manual name (fifth arg), append
-+ % "in MANUALNAME".
-+ \ifdim \wd1 > 0pt
-+ \space \putwordin{} \cite{\printedmanual}%
-+ \fi
- \else
-- % _ (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.
-- {\normalturnoffactive
-- % 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
-- }%
-- % [mynode],
-- [\printednodename],\space
-- % page 3
-- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-+ % node/anchor (non-float) references.
-+ %
-+ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-+ % insert empty discretionaries after hyphens, which means that it will
-+ % not find a line break at a hyphen in a node names. Since some manuals
-+ % are best written with fairly long node names, containing hyphens, this
-+ % is a loss. Therefore, we give the text of the node name again, so it
-+ % is as if TeX is seeing it for the first time.
-+ \ifdim \wd1 > 0pt
-+ \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
-+ \else
-+ % _ (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 a macro 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
- \endlink
- \endgroup}
-
--% \dosetq is the interface for calls from other macros
--
--% Use \normalturnoffactive so that punctuation chars such as underscore
--% and backslash work in node names. (\turnoffactive doesn't do \.)
--\def\dosetq#1#2{%
-- {\let\folio=0%
-- \normalturnoffactive
-- \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
-- \iflinks
-- \next
-- \fi
-- }%
--}
--
--% \internalsetq {foo}{page} expands into
--% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
--% When the aux file is read, ' is the escape character
--
--\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
--
--% Things to be expanded by \internalsetq
--
--\def\Ypagenumber{\folio}
--
--\def\Ytitle{\thissection}
--
--\def\Ynothing{}
--
--\def\Ysectionnumberandtype{%
--\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
--\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
--\else \ifnum \subsubsecno=0 %
--\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
--\else %
--\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
--\fi \fi \fi }
--
--\def\Yappendixletterandtype{%
--\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
--\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
--\else \ifnum \subsubsecno=0 %
--\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
--\else %
--\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
--\fi \fi \fi }
--
--\gdef\xreftie{'tie}
-+% 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]}
-
--% 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.
-+% Things referred to by \setref.
- %
--\ifx\inputlineno\thisisundefined
-- \let\linenumber = \empty % Non-3.0.
--\else
-- \def\linenumber{\the\inputlineno:\space}
--\fi
-+\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
++
++
++# 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'
+}
-+\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
++ 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
+}
-
- % 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{%
-- \expandafter\ifx\csname X#1\endcsname\relax
-+ {%
-+ \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
-@@ -5352,22 +7124,59 @@
- \fi
- \else
- % It's defined, so just use it.
-- \csname X#1\endcsname
-+ \thisrefX
- \fi
- #2% Output the suffix in any case.
- }
-
--% This is the macro invoked by entries in the aux file.
-+% 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{\begingroup
-- % Reenable \ as an escape while reading the second argument.
-- \catcode`\\ = 0
-- \afterassignment\endgroup
-- \expandafter\gdef\csname X#1\endcsname
-+\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\readauxfile{\begingroup
-+%
-+\def\tryauxfile{%
-+ \openin 1 \jobname.aux
-+ \ifeof 1 \else
-+ \readdatafile{aux}%
-+ \global\havexrefstrue
-+ \fi
-+ \closein 1
++
++# 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 ()
++{
++ for lt_wr_arg
++ do
++ case \$lt_wr_arg in
++ --lt-*) ;;
++ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
++ esac
++ shift
++ done
++ 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\
++"
+}
+
-+\def\setupdatafile{%
- \catcode`\^^@=\other
- \catcode`\^^A=\other
- \catcode`\^^B=\other
-@@ -5395,9 +7204,7 @@
- \catcode`\^^]=\other
- \catcode`\^^^=\other
- \catcode`\^^_=\other
-- \catcode`\@=\other
-- \catcode`\^=\other
-- % It was suggested to define this as 7, which would allow ^^e4 etc.
-+ % 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 ^
-@@ -5410,6 +7217,9 @@
- % \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
-@@ -5421,41 +7231,43 @@
- \catcode`\$=\other
- \catcode`\#=\other
- \catcode`\&=\other
-+ \catcode`\%=\other
- \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
-- % Make the characters 128-255 be printing characters
-+ %
-+ % 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.
- {%
-- \count 1=128
-+ \count1=128
- \def\loop{%
-- \catcode\count 1=\other
-- \advance\count 1 by 1
-- \ifnum \count 1<256 \loop \fi
-+ \catcode\count1=\other
-+ \advance\count1 by 1
-+ \ifnum \count1<256 \loop \fi
- }%
- }%
-- % The aux file uses ' as the escape (for now).
-- % Turn off \ as an escape so we do not lose on
-- % entries which were dumped with control sequences in their names.
-- % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
-- % Reference to such entries still does not work the way one would wish,
-- % but at least they do not bomb out when the aux file is read in.
-+ %
-+ % @ is our escape character in .aux files, and we need braces.
- \catcode`\{=1
- \catcode`\}=2
-- \catcode`\%=\other
-- \catcode`\'=0
-- \catcode`\\=\other
-- %
-- \openin 1 \jobname.aux
-- \ifeof 1 \else
-- \closein 1
-- \input \jobname.aux
-- \global\havexrefstrue
-- \global\warnedobstrue
-- \fi
-- % Open the new aux file. TeX will close it automatically at exit.
-- \openout\auxfile=\jobname.aux
-+ \catcode`\@=0
-+}
+
-+\def\readdatafile#1{%
-+\begingroup
-+ \setupdatafile
-+ \input\jobname.#1
- \endgroup}
-
-
--% Footnotes.
-+\message{insertions,}
-+% including footnotes.
-
- \newcount \footnoteno
-
-@@ -5469,37 +7281,39 @@
- % @footnotestyle is meaningful for info output only.
- \let\footnotestyle=\comment
-
--\let\ptexfootnote=\footnote
--
- {\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}\/\fi
-+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
-- \footnotezzz
-+ \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 fail inside footnotes because the tokens are fixed when
-+% 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.
- %
--\long\gdef\footnotezzz{\insert\footins\bgroup
-+\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
-@@ -5512,8 +7326,15 @@
- %
- \smallfonts \rm
- %
-- % Hang the footnote text off the number.
-- \hang
-+ % 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
-@@ -5522,66 +7343,68 @@
- \footstrut
- \futurelet\next\fo at t
- }
--\def\fo at t{\ifcat\bgroup\noexpand\next \let\next\f@@t
-- \else\let\next\f at t\fi \next}
--\def\f@@t{\bgroup\aftergroup\@foot\let\next}
--\def\f at t#1{#1\@foot}
--\def\@foot{\strut\par\egroup}
--
- }%end \catcode `\@=11
-
--% 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}
-+% 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.
++# 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
+
-+% Replace the \insert primitive by a cheating macro.
-+% Deeper inside, just make sure that the saved insertions are not spilled
-+% out prematurely.
- %
--\def\setleading#1{%
-- \normalbaselineskip = #1\relax
-- \normallineskip = \lineskipfactor\normalbaselineskip
-- \normalbaselines
-- \setbox\strutbox =\hbox{%
-- \vrule width0pt height\strutheightpercent\baselineskip
-- depth \strutdepthpercent \baselineskip
-- }%
-+\def\startsavinginserts{%
-+ \ifx \insert\ptexinsert
-+ \let\insert\saveinsert
-+ \else
-+ \let\checkinserts\relax
-+ \fi
- }
-
--% @| 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 \insert replacement works for both \insert\footins{foo} and
-+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
- %
--\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
-- }%
-- }%
-+\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}
++ cat <<"EOF"
+
-+\def\placesaveins#1{%
-+ \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
-+ {\box#1}%
-+}
++#define LTWRAPPER_OPTION_PREFIX "--lt-"
+
-+% eat @SAVE -- beware, all of them have catcode \other:
++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[])
+{
-+ \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-)
-+ \gdef\gobblesave @SAVE{}
-+}
++ 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;
+
-+% 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}%
-+}
++ int i;
+
-+% initialize:
-+\let\checkinserts\empty
-+\newsaveins\footins
-+\newsaveins\margin
-
--% 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}
-
- % @image. We use the macros from epsf.tex to support this.
- % If epsf.tex is not installed and @image is used, we complain.
-@@ -5591,12 +7414,12 @@
- % undone and the next image would fail.
- \openin 1 = epsf.tex
- \ifeof 1 \else
-- \closein 1
-- % Do not bother showing banner with post-v2.7 epsf.tex (available in
-- % doc/epsf.tex until it shows up on ctan).
-+ % 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
-@@ -5612,77 +7435,1180 @@
- \global\warnednoepsftrue
- \fi
- \else
-- \imagexxx #1,,,\finish
-+ \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 just the usual extra ignored arg for parsing this stuff.
--\def\imagexxx#1,#2,#3,#4\finish{%
-+% #4 is (ignored optional) html alt text.
-+% #5 is (ignored optional) extension.
-+% #6 is just the usual extra ignored arg for parsing this 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
-+ \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. On the other hand, if
-+ % it's at the top level, we don't want the normal paragraph indentation.
-+ \noindent
-+ %
-+ % Output the image.
- \ifpdf
-- \centerline{\dopdfimage{#1}{#2}{#3}}%
-+ \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
-- \begingroup
-- \catcode`\^^M = 5 % in case we're inside an example
-- % If the image is by itself, center it.
-- \ifvmode
-- \nobreak\bigskip
-- % 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
-- \centerline{\epsfbox{#1.eps}}%
-- \bigbreak
-- \else
-- % In the middle of a paragraph, no extra space.
-- \epsfbox{#1.eps}%
-+ \epsfbox{#1.eps}%
-+ \fi
-+ %
-+ \ifimagevmode \medskip \fi % space after the standalone image
-+\endgroup}
++ 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);
+
-+% @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}
++ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
++ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
-+% There may be a space before second and/or third parameter; delete it.
-+\def\eatcommaspace#1, {#1,}
++ /* 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;
+
-+% #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
-+}
++ /* 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;
+
-+% 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
-+}
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) libtool target name: %s\n",
++ target_name);
++EOF
+
-+% Append the tokens #2 to the definition of macro #1, not expanding either.
-+%
-+\def\appendtomacro#1#2{%
-+ \expandafter\def\expandafter#1\expandafter{#1#2}%
-+}
++ 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
+
-+% @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}}
++ 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
+
-+% 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%
++ cat <<"EOF"
+}
+
-+% \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!!}
++void *
++xmalloc (size_t num)
++{
++ void *p = (void *) malloc (num);
++ if (!p)
++ lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
-+% #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
++ return p;
+}
+
-+% @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,}
--% and i18n.
-
- % @documentlanguage is usually given very early, just after
- % @setfilename. If done too late, it may not override everything
--% properly. Single argument is the language abbreviation.
--% It would be nice if we could set up a hyphenation file here.
-+% properly. Single argument is the language (de) or locale (de_DE)
-+% abbreviation. It would be nice if we could set up a hyphenation file.
- %
--\def\documentlanguage{\parsearg\dodocumentlanguage}
--\def\dodocumentlanguage#1{%
++char *
++xstrdup (const char *string)
+{
-+ \catcode`\_ = \active
-+ \globaldefs=1
-+\parseargdef\documentlanguage{\begingroup
-+ \let_=\normalunderscore % normal _ character for filenames
- \tex % read txi-??.tex file in plain TeX.
-- % Read the file if it exists.
-+ % Read the file by the name they passed if it exists.
-+ \openin 1 txi-#1.tex
-+ \ifeof 1
-+ \documentlanguagetrywithoutunderscore{#1_\finish}%
-+ \else
-+ \input txi-#1.tex
-+ \fi
-+ \closein 1
-+ \endgroup
-+\endgroup}
-+}
-+%
-+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
-+% try txi-de.tex.
-+%
-+\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
- \openin 1 txi-#1.tex
-- \ifeof1
-+ \ifeof 1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
-- \let\temp = \relax
- \else
-- \def\temp{\input txi-#1.tex }%
-+ \input txi-#1.tex
- \fi
-- \temp
-- \endgroup
-+ \closein 1
- }
-+%
- \newhelp\nolanghelp{The given language definition file cannot be found or
- is empty. Maybe you need to install it? In the current directory
- should work if nowhere else does.}
-
-+% 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
++ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
++ string) : NULL;
+}
-
--% @documentencoding should change something in TeX eventually, most
--% likely, but for now just recognize it.
--\let\documentencoding = \comment
-+\def\setnonasciicharscatcodenonglobal#1{%
-+ \count255=128
-+ \loop\ifnum\count255<256
-+ \catcode\count255=#1\relax
-+ \advance\count255 by 1
-+ \repeat
++
++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;
+}
+
-+% @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
++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;
+}
-
-+% 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.}}
-
--% Page size parameters.
-+% 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{~}
-+ \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{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
-+ \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{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
-+ \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{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
-+ \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{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
-+ \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{\missingcharmsg{LATIN SMALL LETTER ETH}}
-+ \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{\missingcharmsg{LATIN SMALL LETTER THORN}}
-+ \gdef^^ff{\"y}
++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;
+}
+
-+% 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}
-+}
++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;
++ }
+
-+% Latin2 (ISO-8859-2) character definitions.
-+\def\lattwochardefs{%
-+ \gdef^^a0{~}
-+ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
-+ \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{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
-+ \gdef^^b2{\missingcharmsg{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{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
-+ \gdef^^cb{\"E}
-+ \gdef^^cc{\v E}
-+ \gdef^^cd{\'I}
-+ \gdef^^ce{\^I}
-+ \gdef^^cf{\v D}
-+ %
-+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
-+ \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{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
-+ \gdef^^eb{\"e}
-+ \gdef^^ec{\v e}
-+ \gdef^^ed{\'\i}
-+ \gdef^^ee{\^\i}
-+ \gdef^^ef{\v d}
-+ %
-+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
-+ \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{}}
++ /* 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
+}
+
-+% 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
++char *
++strendzap (char *str, const char *pat)
++{
++ size_t len, patlen;
+
-+\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}
++ assert (str != NULL);
++ assert (pat != NULL);
+
-+\gdef\UTFviiiDefined#1{%
-+ \ifx #1\relax
-+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
-+ \else
-+ \expandafter #1%
-+ \fi
-+}
++ len = strlen (str);
++ patlen = strlen (pat);
+
-+\begingroup
-+ \catcode`\~13
-+ \catcode`\"12
++ if (patlen <= len)
++ {
++ str += len - patlen;
++ if (strcmp (str, pat) == 0)
++ *str = '\0';
++ }
++ return str;
++}
+
-+ \def\UTFviiiLoop{%
-+ \global\catcode\countUTFx\active
-+ \uccode`\~\countUTFx
-+ \uppercase\expandafter{\UTFviiiTmp}%
-+ \advance\countUTFx by 1
-+ \ifnum\countUTFx < \countUTFy
-+ \expandafter\UTFviiiLoop
-+ \fi}
++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);
++ }
++}
+
-+ \countUTFx = "C2
-+ \countUTFy = "E0
-+ \def\UTFviiiTmp{%
-+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
-+ \UTFviiiLoop
++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");
+
-+ \countUTFx = "E0
-+ \countUTFy = "F0
-+ \def\UTFviiiTmp{%
-+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
-+ \UTFviiiLoop
++ if (exit_status >= 0)
++ exit (exit_status);
++}
+
-+ \countUTFx = "F0
-+ \countUTFy = "F4
-+ \def\UTFviiiTmp{%
-+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
-+ \UTFviiiLoop
-+\endgroup
++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);
++}
+
-+\begingroup
-+ \catcode`\"=12
-+ \catcode`\<=12
-+ \catcode`\.=12
-+ \catcode`\,=12
-+ \catcode`\;=12
-+ \catcode`\!=12
-+ \catcode`\~=13
++static const char *
++nonnull (const char *s)
++{
++ return s ? s : "(null)";
++}
+
-+ \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}
++static const char *
++nonempty (const char *s)
++{
++ return (s && !*s) ? "(empty)" : nonnull (s);
++}
+
-+ \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
++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
+ }
++}
+
-+ \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}
++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;
++}
+
-+ \gdef\parseUTFviiiB#1#2#3#4{%
-+ \advance\countUTFz by "#10\relax
-+ \uccode `#3\countUTFz
-+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
-+\endgroup
++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));
+
-+\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}{\={ }}
++ 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);
++ }
++}
+
-+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
-+ \DeclareUnicodeCharacter{00B4}{\'{ }}
-+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
-+ \DeclareUnicodeCharacter{00BA}{\ordm}
-+ \DeclareUnicodeCharacter{00BB}{\guillemetright}
-+ \DeclareUnicodeCharacter{00BF}{\questiondown}
++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));
+
-+ \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}
++ if (name && *name && value && *value)
++ {
++ char *new_value = lt_extend_str (getenv (name), value, 0);
++ lt_setenv (name, new_value);
++ XFREE (new_value);
++ }
++}
+
-+ \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{00DF}{\ss}
++EOF
++ case $host_os in
++ mingw*)
++ cat <<"EOF"
+
-+ \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}}}
++/* 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;
+
-+ \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{00FF}{\"y}
++ /* Count number of arguments. */
++ for (argc = 0; argv[argc] != NULL; argc++)
++ ;
+
-+ \DeclareUnicodeCharacter{0100}{\=A}
-+ \DeclareUnicodeCharacter{0101}{\=a}
-+ \DeclareUnicodeCharacter{0102}{\u{A}}
-+ \DeclareUnicodeCharacter{0103}{\u{a}}
-+ \DeclareUnicodeCharacter{0106}{\'C}
-+ \DeclareUnicodeCharacter{0107}{\'c}
-+ \DeclareUnicodeCharacter{0108}{\^C}
-+ \DeclareUnicodeCharacter{0109}{\^c}
-+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
-+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
-+ \DeclareUnicodeCharacter{010C}{\v{C}}
-+ \DeclareUnicodeCharacter{010D}{\v{c}}
-+ \DeclareUnicodeCharacter{010E}{\v{D}}
++ /* Allocate new argument vector. */
++ new_argv = XMALLOC (char *, argc + 1);
+
-+ \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}}
++ /* Put quoted arguments into the new argument vector. */
++ for (i = 0; i < argc; i++)
++ {
++ const char *string = argv[i];
+
-+ \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}}}
++ 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;
+
-+ \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}
++ 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;
+
-+ \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}}
++ quoted_string = XMALLOC (char, length + 1);
+
-+ \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}}
++ 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';
+
-+ \DeclareUnicodeCharacter{0160}{\v{S}}
-+ \DeclareUnicodeCharacter{0161}{\v{s}}
-+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
-+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
-+ \DeclareUnicodeCharacter{0164}{\v{T}}
++ new_argv[i] = quoted_string;
++ }
++ else
++ new_argv[i] = (char *) string;
++ }
++ new_argv[argc] = NULL;
+
-+ \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}}
++ return new_argv;
++}
++EOF
++ ;;
++ esac
+
-+ \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}}
++ cat <<"EOF"
++void lt_dump_script (FILE* f)
++{
++EOF
++ func_emit_wrapper yes |
++ $SED -e 's/\([\\"]\)/\\\1/g' \
++ -e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
+
-+ \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}}
++ cat <<"EOF"
++}
++EOF
++}
++# end: func_emit_cwrapperexe_src
+
-+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
-+ \DeclareUnicodeCharacter{01D1}{\v{O}}
-+ \DeclareUnicodeCharacter{01D2}{\v{o}}
-+ \DeclareUnicodeCharacter{01D3}{\v{U}}
-+ \DeclareUnicodeCharacter{01D4}{\v{u}}
++# 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*)
++ *-*-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 invokation.
++ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+@@ -812,10 +5100,10 @@
+ allow_undefined=yes
+ ;;
+ esac
+- libtool_args="$nonopt"
+- base_compile="$nonopt"
+- compile_command="$nonopt"
+- finalize_command="$nonopt"
++ libtool_args=$nonopt
++ base_compile="$nonopt $@"
++ compile_command=$nonopt
++ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+@@ -829,8 +5117,11 @@
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
++ inst_prefix_dir=
++ new_inherited_linker_flags=
+
+ avoid_version=no
++ bindir=
+ dlfiles=
+ dlprefiles=
+ dlself=no
+@@ -844,6 +5135,7 @@
+ no_install=no
+ objs=
+ non_pic_objects=
++ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+@@ -855,27 +5147,47 @@
+ 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
+- -all-static | -static)
+- if test "X$arg" = "X-all-static"; then
++ -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
+- $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
++ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- else
++ prefer_static_libs=yes
++ ;;
++ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+- 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
+- prefer_static_libs=yes
+ break
+ ;;
+ esac
+@@ -885,33 +5197,33 @@
+ 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
++ while test "$#" -gt 0; do
+ arg="$1"
+- base_compile="$base_compile $arg"
+ shift
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+- ;;
+- *) qarg=$arg ;;
+- esac
+- libtool_args="$libtool_args $qarg"
++ 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)
+- compile_command="$compile_command @OUTPUT@"
+- finalize_command="$finalize_command @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.
+- compile_command="$compile_command @SYMFILE@"
+- finalize_command="$finalize_command @SYMFILE@"
++ func_append compile_command " @SYMFILE@"
++ func_append finalize_command " @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+@@ -938,9 +5250,9 @@
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+- dlfiles="$dlfiles $arg"
++ func_append dlfiles " $arg"
+ else
+- dlprefiles="$dlprefiles $arg"
++ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+@@ -949,10 +5261,8 @@
+ ;;
+ expsyms)
+ export_symbols="$arg"
+- if test ! -f "$arg"; then
+- $echo "$modename: symbol file \`$arg' does not exist"
+- exit 1
+- fi
++ test -f "$arg" \
++ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+@@ -961,115 +5271,127 @@
+ prev=
+ continue
+ ;;
+- release)
+- release="-$arg"
++ 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
++ save_arg=$arg
+ moreargs=
+- for fil in `cat $save_arg`
++ for fil in `cat "$save_arg"`
+ do
+-# moreargs="$moreargs $fil"
+- arg=$fil
+- # A libtool-controlled object.
++# func_append moreargs " $fil"
++ arg=$fil
++ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+- pic_object=
+- non_pic_object=
+-
+- # Read the .lo file
+- # If there is no directory component, then add one.
+- case $arg in
+- */* | *\\*) . $arg ;;
+- *) . ./$arg ;;
+- esac
++ if func_lalib_unsafe_p "$arg"; then
++ pic_object=
++ non_pic_object=
+
+- if test -z "$pic_object" || \
+- test -z "$non_pic_object" ||
+- test "$pic_object" = none && \
+- test "$non_pic_object" = none; then
+- $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+- exit 1
+- fi
++ # Read the .lo file
++ func_source "$arg"
+
+- # Extract subdirectory from the argument.
+- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$xdir" = "X$arg"; then
+- xdir=
+- else
+- xdir="$xdir/"
+- fi
++ 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
+
+- if test "$pic_object" != none; then
+- # Prepend the subdirectory the object is found in.
+- pic_object="$xdir$pic_object"
++ # Extract subdirectory from the argument.
++ func_dirname "$arg" "/" ""
++ xdir="$func_dirname_result"
+
+- if test "$prev" = dlfiles; then
+- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+- dlfiles="$dlfiles $pic_object"
+- prev=
+- continue
+- else
+- # If libtool objects are unsupported, then we need to preload.
+- prev=dlprefiles
+- fi
+- fi
++ if test "$pic_object" != none; then
++ # Prepend the subdirectory the object is found in.
++ pic_object="$xdir$pic_object"
+
+- # CHECK ME: I think I busted this. -Ossama
+- if test "$prev" = dlprefiles; then
+- # Preload the old-style object.
+- dlprefiles="$dlprefiles $pic_object"
+- prev=
+- fi
++ 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
+
+- # A PIC object.
+- libobjs="$libobjs $pic_object"
+- arg="$pic_object"
+- 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
+
+- # 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 PIC object.
++ func_append libobjs " $pic_object"
++ arg="$pic_object"
++ fi
+
+- # A standard non-PIC object
+- non_pic_objects="$non_pic_objects $non_pic_object"
+- if test -z "$pic_object" || test "$pic_object" = none ; then
+- arg="$non_pic_object"
+- fi
+- fi
+- else
+- # Only an error if not doing a dry-run.
+- if test -z "$run"; then
+- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+- exit 1
+- else
+- # Dry-run case.
++ # 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"
+
+- # Extract subdirectory from the argument.
+- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$xdir" = "X$arg"; then
+- xdir=
+- else
+- xdir="$xdir/"
+- fi
++ # 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"
+
+- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+- libobjs="$libobjs $pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+- fi
++ 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
+- $echo "$modename: link input file \`$save_arg' does not exist"
+- exit 1
++ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+- arg=$save_arg
++ arg=$save_arg
++ prev=
++ continue
++ ;;
++ precious_regex)
++ precious_files_regex="$arg"
++ prev=
++ continue
++ ;;
++ release)
++ release="-$arg"
+ prev=
+ continue
+ ;;
+@@ -1078,37 +5400,54 @@
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+- $echo "$modename: only absolute run-paths are allowed" 1>&2
+- exit 1
++ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+- *) rpath="$rpath $arg" ;;
++ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+- *) xrpath="$xrpath $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)
+- compiler_flags="$compiler_flags $qarg"
++ func_append compiler_flags " $qarg"
+ prev=
+- compile_command="$compile_command $qarg"
+- finalize_command="$finalize_command $qarg"
++ func_append compile_command " $qarg"
++ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+- linker_flags="$linker_flags $qarg"
+- compiler_flags="$compiler_flags $wl$qarg"
++ func_append linker_flags " $qarg"
++ func_append compiler_flags " $wl$qarg"
+ prev=
+- compile_command="$compile_command $wl$qarg"
+- finalize_command="$finalize_command $wl$qarg"
++ func_append compile_command " $wl$qarg"
++ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+@@ -1117,23 +5456,23 @@
+ continue
+ ;;
+ esac
+- fi # test -n $prev
++ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+- compile_command="$compile_command $link_static_flag"
+- finalize_command="$finalize_command $link_static_flag"
++ # 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.
+- $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+- continue
++ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+@@ -1141,6 +5480,11 @@
+ continue
+ ;;
+
++ -bindir)
++ prev=bindir
++ continue
++ ;;
+
-+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
-+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
-+ \DeclareUnicodeCharacter{01E6}{\v{G}}
-+ \DeclareUnicodeCharacter{01E7}{\v{g}}
-+ \DeclareUnicodeCharacter{01E8}{\v{K}}
-+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+ -dlopen)
+ prev=dlfiles
+ continue
+@@ -1158,8 +5502,7 @@
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+- $echo "$modename: more than one -exported-symbols argument is not allowed"
+- exit 1
++ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+@@ -1169,44 +5512,74 @@
+ continue
+ ;;
+
++ -framework)
++ prev=framework
++ continue
++ ;;
+
-+ \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}}
++ -inst-prefix-dir)
++ prev=inst_prefix
++ continue
++ ;;
+
-+ \DeclareUnicodeCharacter{021E}{\v{H}}
-+ \DeclareUnicodeCharacter{021F}{\v{h}}
+ # 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*)
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
++ no/*-*-irix* | /*-*-irix*)
++ func_append compile_command " $arg"
++ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+- dir=`$echo "X$arg" | $Xsed -e 's/^-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`
+- if test -z "$absdir"; then
+- $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+- exit 1
+- fi
++ test -z "$absdir" && \
++ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+- *" -L$dir "*) ;;
++ *" -L$dir "* | *" $arg "*)
++ # Will only happen for absolute or sysroot arguments
++ ;;
+ *)
+- deplibs="$deplibs -L$dir"
+- lib_search_path="$lib_search_path $dir"
++ # 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*)
++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
++ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$dir";;
++ ::) dllsearchpath=$dir;;
++ *) func_append dllsearchpath ":$dir";;
++ esac
++ case :$dllsearchpath: in
++ *":$testbindir:"*) ;;
++ ::) dllsearchpath=$testbindir;;
++ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+@@ -1216,17 +5589,41 @@
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+- *-*-cygwin* | *-*-pw32* | *-*-beos*)
++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+- *-*-mingw* | *-*-os2*)
++ *-*-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
+- deplibs="$deplibs $arg"
++ func_append deplibs " $arg"
+ continue
+ ;;
+
+@@ -1235,6 +5632,33 @@
+ 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
++ ;;
+
-+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
-+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
-+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
-+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
-+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
-+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
++ 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
++ ;;
+
-+ \DeclareUnicodeCharacter{0232}{\=Y}
-+ \DeclareUnicodeCharacter{0233}{\=y}
-+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
++ -multi_module)
++ single_module="${wl}-multi_module"
++ continue
++ ;;
+
-+ \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}}
+ -no-fast-install)
+ fast_install=no
+ continue
+@@ -1242,11 +5666,11 @@
+
+ -no-install)
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+- # in order for the loader to find any dlls it needs.
+- $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+- $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
++ # 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 ;;
+@@ -1266,6 +5690,11 @@
+
+ -o) prev=output ;;
+
++ -precious-files-regex)
++ prev=precious_regex
++ continue
++ ;;
+
-+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
-+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+ -release)
+ prev=release
+ continue
+@@ -1282,23 +5711,37 @@
+ ;;
+
+ -R*)
+- dir=`$echo "X$arg" | $Xsed -e 's/^-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
++ ;;
+ *)
+- $echo "$modename: only absolute run-paths are allowed" 1>&2
+- exit 1
++ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+- *) xrpath="$xrpath $dir" ;;
++ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+
+- -static)
++ -shared)
++ # The effects of -shared are defined in a previous loop.
++ continue
++ ;;
+
-+ \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}
++ -shrext)
++ prev=shrext
++ continue
++ ;;
+
-+ \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}
++ -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
+@@ -1317,41 +5760,48 @@
+ continue
+ ;;
+
++ -version-number)
++ prev=vinfo
++ vinfo_number=yes
++ continue
++ ;;
+
-+ \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}}
++ -weak)
++ prev=weak
++ continue
++ ;;
+
-+ \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}}
+ -Wc,*)
+- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
++ func_stripname '-Wc,' '' "$arg"
++ args=$func_stripname_result
+ arg=
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
++ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+- case $flag in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- flag="\"$flag\""
+- ;;
+- esac
+- arg="$arg $wl$flag"
+- compiler_flags="$compiler_flags $flag"
++ 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"
+- arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
++ func_stripname ' ' '' "$arg"
++ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
++ func_stripname '-Wl,' '' "$arg"
++ args=$func_stripname_result
+ arg=
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
++ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+- case $flag in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- flag="\"$flag\""
+- ;;
+- esac
+- arg="$arg $wl$flag"
+- compiler_flags="$compiler_flags $wl$flag"
+- linker_flags="$linker_flags $flag"
++ 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"
+- arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
++ func_stripname ' ' '' "$arg"
++ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+@@ -1364,136 +5814,156 @@
+ continue
+ ;;
+
++ -XCClinker)
++ prev=xcclinker
++ continue
++ ;;
+
-+ \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}}
++ # -msg_* for osf cc
++ -msg_*)
++ func_quote_for_eval "$arg"
++ arg="$func_quote_for_eval_result"
++ ;;
+
-+ \DeclareUnicodeCharacter{1E7C}{\~V}
-+ \DeclareUnicodeCharacter{1E7D}{\~v}
-+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
-+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
++ # 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
++ ;;
+
-+ \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}}
+ # Some other compiler flag.
+ -* | +*)
+- # Unknown arguments in both finalize_command and compile_command need
+- # to be aesthetically quoted because they are evaled later.
+- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- arg="\"$arg\""
+- ;;
+- esac
++ func_quote_for_eval "$arg"
++ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+- objs="$objs $arg"
++ func_append objs " $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+- pic_object=
+- non_pic_object=
++ if func_lalib_unsafe_p "$arg"; then
++ pic_object=
++ non_pic_object=
+
+- # Read the .lo file
+- # If there is no directory component, then add one.
+- case $arg in
+- */* | *\\*) . $arg ;;
+- *) . ./$arg ;;
+- esac
++ # 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
+- $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+- exit 1
+- fi
++ 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.
+- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$xdir" = "X$arg"; then
+- xdir=
+- else
+- xdir="$xdir/"
+- fi
++ func_dirname "$arg" "/" ""
++ xdir="$func_dirname_result"
+
+- if test "$pic_object" != none; then
+- # Prepend the subdirectory the object is found in.
++ 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
+- dlfiles="$dlfiles $pic_object"
+- prev=
+- continue
++ func_append dlfiles " $pic_object"
++ prev=
++ continue
+ else
+- # If libtool objects are unsupported, then we need to preload.
+- prev=dlprefiles
++ # 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
++ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+- dlprefiles="$dlprefiles $pic_object"
++ func_append dlprefiles " $pic_object"
+ prev=
+- fi
++ fi
+
+- # A PIC object.
+- libobjs="$libobjs $pic_object"
++ # A PIC object.
++ func_append libobjs " $pic_object"
+ arg="$pic_object"
+- fi
++ fi
+
+- # Non-PIC object.
+- if test "$non_pic_object" != none; then
+- # Prepend the subdirectory the object is found in.
++ # 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
+- non_pic_objects="$non_pic_objects $non_pic_object"
+- if test -z "$pic_object" || test "$pic_object" = none ; then
+- arg="$non_pic_object"
+- fi
+- fi
+- else
+- # Only an error if not doing a dry-run.
+- if test -z "$run"; then
+- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+- exit 1
+- else
+- # Dry-run case.
+-
+- # Extract subdirectory from the argument.
+- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$xdir" = "X$arg"; then
+- xdir=
+- else
+- xdir="$xdir/"
++ # 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"
+
+- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+- libobjs="$libobjs $pic_object"
+- non_pic_objects="$non_pic_objects $non_pic_object"
+- fi
++ 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.
+- deplibs="$deplibs $arg"
+- old_deplibs="$old_deplibs $arg"
++ 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.
+- dlfiles="$dlfiles $arg"
++ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+- dlprefiles="$dlprefiles $arg"
++ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+- deplibs="$deplibs $arg"
++ func_append deplibs " $func_resolve_sysroot_result"
+ fi
+ continue
+ ;;
+@@ -1502,113 +5972,53 @@
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+- arg="\"$arg\""
+- ;;
+- esac
++ 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
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
++ func_append compile_command " $arg"
++ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+- if test -n "$prev"; then
+- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- # 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 link
+- # command doesn't match the default compiler.
+- if test -n "$available_tags" && test -z "$tagname"; then
+- case $base_compile in
+- "$CC "*) ;;
+- # Blanks in the command may have been stripped by the calling shell,
+- # but not from the CC environment variable when ltconfig was run.
+- "`$echo $CC` "*) ;;
+- *)
+- for z in $available_tags; do
+- if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+- # Evaluate the configuration.
+- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+- case $base_compile in
+- "$CC "*)
+- # The compiler in $compile_command matches
+- # the one in the tagged configuration.
+- # Assume this is the tagged configuration we want.
+- tagname=$z
+- break
+- ;;
+- "`$echo $CC` "*)
+- tagname=$z
+- break
+- ;;
+- esac
+- fi
+- done
+- # If $tagname still isn't set, then no tagged configuration
+- # was found and let the user know that the "--tag" command
+- # line option must be used.
+- if test -z "$tagname"; then
+- echo "$modename: unable to infer tagged configuration"
+- echo "$modename: specify a tag with \`--tag'" 1>&2
+- exit 1
+-# else
+-# echo "$modename: using $tagname tagged configuration"
+- fi
+- ;;
+- esac
+- fi
++ 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\"
+- compile_command="$compile_command $arg"
+- finalize_command="$finalize_command $arg"
++ func_append compile_command " $arg"
++ func_append finalize_command " $arg"
+ fi
+
++ oldlibs=
+ # calculate the name of the file, without its directory
+- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
++ 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 \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
++ 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\"
+
+- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$output_objdir" = "X$output"; then
+- output_objdir="$objdir"
+- else
+- output_objdir="$output_objdir/$objdir"
+- fi
++ 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.
+- if test ! -d $output_objdir; then
+- $show "$mkdir $output_objdir"
+- $run $mkdir $output_objdir
+- status=$?
+- if test $status -ne 0 && test ! -d $output_objdir; then
+- exit $status
+- fi
+- fi
++ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+- $echo "$modename: you must specify an output file" 1>&2
+- $echo "$help" 1>&2
+- exit 1
++ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+@@ -1617,29 +6027,34 @@
+ esac
+
+ specialdeplibs=
+
-+ \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}}
+ 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
+- case "$libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+- esac
+- libs="$libs $deplib"
++ 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
++ 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=
+- for pre_post_dep in $predeps $postdeps; do
+- case "$pre_post_deps " in
+- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+- esac
+- pre_post_deps="$pre_post_deps $pre_post_dep"
+- done
++ 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
+
+@@ -1649,15 +6064,15 @@
+ 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
+
-+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
-+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+ case $linkmode in
+ lib)
+- passes="conv link"
++ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+- $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+- exit 1
++ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
+@@ -1673,40 +6088,105 @@
+ *) passes="conv"
+ ;;
+ esac
+
-+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
-+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
-+ \DeclareUnicodeCharacter{1EBC}{\~E}
-+ \DeclareUnicodeCharacter{1EBD}{\~e}
+ for pass in $passes; do
+- if test $linkmode = prog; then
+- # Determine which files to process
++ # 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
+
-+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
-+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
-+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
-+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
++ 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"
+- save_deplibs="$deplibs" # Collect dlpreopened libraries
+- deplibs=
+- ;;
++ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
++ if test "$linkmode,$pass" = "lib,dlpreopen"; then
++ # Collect and forward deplibs of preopened libtool libs
++ for lib in $dlprefiles; do
++ # Ignore non-libtool-libs
++ dependency_libs=
++ func_resolve_sysroot "$lib"
++ case $lib in
++ *.la) func_source "$func_resolve_sysroot_result" ;;
++ esac
+
-+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
-+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
++ # 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
+
-+ \DeclareUnicodeCharacter{1EF2}{\`Y}
-+ \DeclareUnicodeCharacter{1EF3}{\`y}
-+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
++ 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 = oldlib && test $linkmode = obj; then
+- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
++ if test "$linkmode" != lib && test "$linkmode" != prog; then
++ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+- if test $pass = conv; then
+- deplibs="$deplib $deplibs"
+- continue
++ 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
+- name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+- for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+- # Search the libtool library
+- lib="$searchdir/lib${name}.la"
+- if test -f "$lib"; then
+- found=yes
+- break
+- 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
+@@ -1715,74 +6195,153 @@
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+- test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
++ 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
++ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
++ 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
++ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+- if test $pass = scan; then
++ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ 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"
+ ;;
+ *)
+- $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
++ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+- if test $pass = link; then
+- dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
++ 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 "*) ;;
+- *) xrpath="$xrpath $dir" ;;
++ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+- *.la) lib="$deplib" ;;
++ *.la)
++ func_resolve_sysroot "$deplib"
++ lib=$func_resolve_sysroot_result
++ ;;
+ *.$libext)
+- if test $pass = conv; then
++ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+- if test "$deplibs_check_method" != pass_all; then
+- echo
+- echo "*** Warning: This library needs some functionality provided by $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."
+- else
+- echo
+- echo "*** Warning: Linking the shared library $output against the"
+- echo "*** static library $deplib is not portable!"
+- deplibs="$deplib $deplibs"
+- fi
++ # 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
++ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+@@ -1793,14 +6352,18 @@
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+- 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.
+- newdlprefiles="$newdlprefiles $deplib"
+- compile_deplibs="$deplib $compile_deplibs"
+- finalize_deplibs="$deplib $finalize_deplibs"
+- else
+- newdlfiles="$newdlfiles $deplib"
++ 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
+ ;;
+@@ -1809,21 +6372,18 @@
+ continue
+ ;;
+ esac # case $deplib
+- if test $found = yes || test -f "$lib"; then :
+
-+ \DeclareUnicodeCharacter{1EF8}{\~Y}
-+ \DeclareUnicodeCharacter{1EF9}{\~y}
++ if test "$found" = yes || test -f "$lib"; then :
+ else
+- $echo "$modename: cannot find the library \`$lib'" 1>&2
+- exit 1
++ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+- else
+- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+- exit 1
+- fi
++ func_lalib_unsafe_p "$lib" \
++ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+- ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+- test "X$ladir" = "X$lib" && ladir="."
++ func_dirname "$lib" "" "."
++ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+@@ -1831,72 +6391,92 @@
+ libdir=
+ library_names=
+ old_library=
++ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+- # it will not redefine variable installed.
++ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
++ shouldnotlink=no
++ avoidtemprpath=
+
-+ \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}
+
+ # Read the .la file
+- case $lib in
+- */* | *\\*) . $lib ;;
+- *) . ./$lib ;;
+- esac
++ 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 = oldlib && test $linkmode = obj; }; then
+- # Add dl[pre]opened files of deplib
+- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
++ { 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
++ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+- exit 1
++ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+- convenience="$convenience $ladir/$objdir/$old_library"
+- old_convenience="$old_convenience $ladir/$objdir/$old_library"
+- tmp_libs=
+- for deplib in $dependency_libs; do
+- deplibs="$deplib $deplibs"
++ func_append convenience " $ladir/$objdir/$old_library"
++ func_append old_convenience " $ladir/$objdir/$old_library"
++ elif test "$linkmode" != prog && test "$linkmode" != lib; then
++ func_fatal_error "\`$lib' is not a convenience library"
++ fi
++ tmp_libs=
++ for deplib in $dependency_libs; do
++ deplibs="$deplib $deplibs"
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+- tmp_libs="$tmp_libs $deplib"
+- done
+- elif test $linkmode != prog && test $linkmode != lib; then
+- $echo "$modename: \`$lib' is not a convenience library" 1>&2
+- exit 1
+- fi
++ fi
++ func_append tmp_libs " $deplib"
++ done
+ continue
+ fi # $pass = conv
+
+
-+ \DeclareUnicodeCharacter{2192}{\expansion}
-+ \DeclareUnicodeCharacter{21D2}{\result}
+ # Get the name of the library we link against.
+ linklib=
+- for l in $old_library $library_names; do
+- linklib="$l"
+- done
++ 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
+- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+- exit 1
++ 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 "$pass" = dlopen; then
+ if test -z "$libdir"; then
+- $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+- exit 1
++ 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 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.
+- dlprefiles="$dlprefiles $lib"
++ # 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
+- newdlfiles="$newdlfiles $lib"
++ func_append newdlfiles " $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+@@ -1907,66 +6487,106 @@
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+- $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
++ 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
+- laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
++ func_basename "$lib"
++ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+- $echo "$modename: warning: library \`$lib' was moved." 1>&2
++ 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="$libdir"
+- absdir="$libdir"
++ dir="$lt_sysroot$libdir"
++ absdir="$lt_sysroot$libdir"
+ fi
++ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+- dir="$ladir/$objdir"
+- absdir="$abs_ladir/$objdir"
+- # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
++ 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
+- name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
++ func_stripname 'lib' '.la' "$laname"
++ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+- if test $pass = dlpreopen; then
+- if test -z "$libdir"; then
+- $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+- exit 1
+- fi
+- # Prefer using a static library (so that no silly _DYNAMIC symbols
+- # are required to link).
+- if test -n "$old_library"; then
+- newdlprefiles="$newdlprefiles $dir/$old_library"
+- # Otherwise, use the dlname, so that lt_dlopen finds it.
+- elif test -n "$dlname"; then
+- newdlprefiles="$newdlprefiles $dir/$dlname"
+- else
+- newdlprefiles="$newdlprefiles $dir/$linklib"
++ 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
++ 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"
++ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+- if test $linkmode = prog && test $pass != link; then
+- newlib_search_path="$newlib_search_path $ladir"
+
-+ \DeclareUnicodeCharacter{2212}{\minus}
-+ \DeclareUnicodeCharacter{2217}{\point}
-+ \DeclareUnicodeCharacter{2261}{\equiv}
-+}% end of \utfeightchardefs
++ if test "$linkmode" = prog && test "$pass" != link; then
++ func_append newlib_search_path " $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+@@ -1978,31 +6598,43 @@
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+- -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
++ -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
++ 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
+- case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+- esac
+- tmp_libs="$tmp_libs $deplib"
++ 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...
+
+- link_static=no # Whether the deplib will be linked statically
+- if test -n "$library_names" &&
+- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+- # Link against this shared library
++ 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
+
+- if test "$linkmode,$pass" = "prog,link" ||
+- { 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.
+@@ -2011,7 +6643,7 @@
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+- *) compile_rpath="$compile_rpath $absdir"
++ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+@@ -2020,21 +6652,10 @@
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir"
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+- if test $linkmode = prog; then
+- # We need to hardcode the library path
+- if test -n "$shlibpath_var"; then
+- # Make sure the rpath contains only unique directories.
+- case "$temp_rpath " in
+- *" $dir "*) ;;
+- *" $absdir "*) ;;
+- *) temp_rpath="$temp_rpath $dir" ;;
+- esac
+- fi
+- fi
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+@@ -2044,26 +6665,89 @@
+ # We only need to search for static libraries
+ continue
+ fi
++ fi
+
+- if test "$installed" = no; then
+- notinst_deplibs="$notinst_deplibs $lib"
+- need_relink=yes
++ 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
+- realname="$2"
+- shift; shift
+- libname=`eval \\$echo \"$libname_spec\"`
++ shift
++ realname="$1"
++ shift
++ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+- *cygwin*)
+- major=`expr $current - $age`
++ *cygwin* | mingw* | *cegcc*)
++ func_arith $current - $age
++ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+@@ -2074,41 +6758,29 @@
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+- soname=`echo $soroot | sed -e 's/^.*\///'`
+- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
++ func_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
+- $show "extracting exported symbol list from \`$soname'"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- eval cmds=\"$extract_expsyms_cmds\"
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
++ 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
+- $show "generating import library for \`$soname'"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- eval cmds=\"$old_archive_from_expsyms_cmds\"
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
++ 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
++ fi # test -n "$old_archive_from_expsyms_cmds"
+
+- if test $linkmode = prog || test "$mode" != relink; then
++ if test "$linkmode" = prog || test "$opt_mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+@@ -2117,6 +6789,30 @@
+ 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" ;;
+@@ -2131,10 +6827,19 @@
+ fi
+ ;;
+ relink)
+- if test "$hardcode_direct" = yes; then
++ if test "$hardcode_direct" = yes &&
++ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
++ # Try looking first in the location we're being installed to.
++ if test -n "$inst_prefix_dir"; then
++ case $libdir in
++ [\\/]*)
++ func_append add_dir " -L$inst_prefix_dir$libdir"
++ ;;
++ esac
++ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+@@ -2147,39 +6852,39 @@
+ esac
+
+ if test "$lib_linked" != yes; then
+- $echo "$modename: configuration error: unsupported hardcode properties"
+- exit 1
++ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
++ *) func_append compile_shlibpath "$add_shlibpath:" ;;
+ esac
+ fi
+- if test $linkmode = prog; then
++ 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 && \
++ if test "$hardcode_direct" != yes &&
++ test "$hardcode_minus_L" != yes &&
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
++ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+- if test $linkmode = prog || test "$mode" = relink; then
++ 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; then
++ 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"
+@@ -2187,16 +6892,31 @@
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+- *) finalize_shlibpath="$finalize_shlibpath$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
++ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+@@ -2204,16 +6924,7 @@
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+- elif test $linkmode = prog; then
+- 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
+-
+- # Try to link the static library
++ 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.
+@@ -2234,101 +6945,133 @@
+ # 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 library needs some functionality provided by $lib."
++ $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 "*** Therefore, libtool will create a static module, that should work "
+- echo "*** as long as the dlopening application is linked with the -dlopen flag."
++ 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."
++ 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
++ build_libtool_libs=module
++ build_old_libs=yes
+ else
+- build_libtool_libs=no
++ build_libtool_libs=no
+ fi
+ fi
+ else
+- convenience="$convenience $dir/$old_library"
+- old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+- if test $linkmode = lib; then
++ 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
++ { test "$hardcode_into_libs" != yes ||
++ test "$build_old_libs" = yes ||
++ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+- -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
++ -R*) func_stripname '-R' '' "$libdir"
++ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+- *) xrpath="$xrpath $temp_xrpath";;
++ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+- *) temp_deplibs="$temp_deplibs $libdir";;
++ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+- newlib_search_path="$newlib_search_path $absdir"
++ 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 "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+- esac
+- tmp_libs="$tmp_libs $deplib"
++ 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
++ 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)
+- dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+- test "X$dir" = "X$deplib" && dir="."
++ 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
+- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
++ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+- if grep "^installed=no" $deplib > /dev/null; then
++ 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`
+- if test -z "$libdir"; then
+- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+- exit 1
+- fi
+- if test "$absdir" != "$libdir"; then
+- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+- fi
++ 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"
+
-+% US-ASCII character definitions.
-+\def\asciichardefs{% nothing need be done
-+ \relax
-+}
+ path="-L$absdir"
+ fi
+ ;;
+- *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+@@ -2338,21 +7081,29 @@
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+- if test $pass = dlpreopen; then
++ 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
+- test $pass != scan && dependency_libs="$newdependency_libs"
+- if test $pass != conv; then
++ if test "$pass" != dlopen; then
++ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+- *) lib_search_path="$lib_search_path $dir" ;;
++ *) func_append lib_search_path " $dir" ;;
+ esac
+ done
+ newlib_search_path=
+@@ -2368,9 +7119,30 @@
+ 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" ;;
+ *)
+@@ -2389,171 +7161,216 @@
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+- *) tmp_libs="$tmp_libs $deplib" ;;
++ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+- *) tmp_libs="$tmp_libs $deplib" ;;
++ *) func_append tmp_libs " $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+- if test "$pass" = "conv" &&
+- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+- libs="$deplibs" # reset libs
+- deplibs=
+- 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
++ 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
+- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
++ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+- if test -n "$rpath"; then
+- $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+- fi
++ case " $deplibs" in
++ *\ -l* | *\ -L*)
++ func_warning "\`-l' and \`-L' are ignored for archives" ;;
++ esac
+
+- if test -n "$xrpath"; then
+- $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+- fi
++ test -n "$rpath" && \
++ func_warning "\`-rpath' is ignored for archives"
+
+- if test -n "$vinfo"; then
+- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+- fi
++ test -n "$xrpath" && \
++ func_warning "\`-R' is ignored for archives"
+
+- if test -n "$release"; then
+- $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+- fi
++ test -n "$vinfo" && \
++ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+- $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+- fi
++ test -n "$release" && \
++ func_warning "\`-release' is ignored for archives"
+
-+% Make non-ASCII characters printable again for compatibility with
-+% existing Texinfo documents that may use them, even without declaring a
-+% document encoding.
-+%
-+\setnonasciicharscatcode \other
++ 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"
+- objs="$objs$old_deplibs"
++ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
++ func_stripname 'lib' '.la' "$outputname"
++ name=$func_stripname_result
++ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+- if test "$module" = no; then
+- $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
++ 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
+- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
++ func_stripname '' '.la' "$outputname"
++ name=$func_stripname_result
++ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+- libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
++ func_stripname '' '.la' "$outputname"
++ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+- exit 1
++ 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!"
+- libobjs="$libobjs $objs"
++ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
++ $ECHO "*** objects $objs is not portable!"
++ func_append libobjs " $objs"
+ fi
+ fi
+
+- if test "$dlself" != no; then
+- $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+- fi
++ test "$dlself" != no && \
++ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+- if test $# -gt 2; then
+- $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+- fi
+- install_libdir="$2"
++ shift
++ test "$#" -gt 1 && \
++ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
-+\message{formatting,}
++ 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.
++ # 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
+
+- if test -n "$vinfo"; then
+- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+- fi
++ test -n "$vinfo" && \
++ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+- if test -n "$release"; then
+- $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+- fi
++ test -n "$release" && \
++ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
++ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
++ shift
+ IFS="$save_ifs"
+
+- if test -n "$8"; then
+- $echo "$modename: too many parameters to \`-version-info'" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
++ test -n "$7" && \
++ func_fatal_help "too many parameters to \`-version-info'"
+
+- current="$2"
+- revision="$3"
+- age="$4"
++ # convert absolute version numbers to libtool ages
++ # this retains compatibility with .la files and attempts
++ # to make the code below a bit more comprehensible
+
- \newdimen\defaultparindent \defaultparindent = 15pt
++ 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
++ darwin|linux|osf|windows|none)
++ func_arith $number_major + $number_minor
++ current=$func_arith_result
++ age="$number_minor"
++ revision="$number_revision"
++ ;;
++ freebsd-aout|freebsd-elf|qnx|sunos)
++ current="$number_major"
++ revision="$number_minor"
++ age="0"
++ ;;
++ irix|nonstopux)
++ func_arith $number_major + $number_minor
++ current=$func_arith_result
++ age="$number_minor"
++ revision="$number_minor"
++ lt_irix_increment=no
++ ;;
++ esac
++ ;;
++ no)
++ current="$1"
++ revision="$2"
++ age="$3"
++ ;;
++ esac
- \chapheadingskip = 15pt plus 4pt minus 2pt
-@@ -5695,7 +8621,7 @@
- % Don't be so finicky about underfull hboxes, either.
- \hbadness = 2000
+ # 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]) ;;
++ 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]) ;;
+ *)
+- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+- exit 1
++ func_error "CURRENT \`$current' must be a nonnegative integer"
++ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
--% Following George Bush, just get rid of widows and orphans.
-+% Following George Bush, get rid of widows and orphans.
- \widowpenalty=10000
- \clubpenalty=10000
+ case $revision in
+- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
++ 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]) ;;
+ *)
+- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+- exit 1
++ func_error "REVISION \`$revision' must be a nonnegative integer"
++ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
-@@ -5713,11 +8639,14 @@
- \fi
- }
+ case $age in
+- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
++ 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]) ;;
+ *)
+- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+- exit 1
++ func_error "AGE \`$age' must be a nonnegative integer"
++ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
--% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
--% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can
--% set \parskip and call \setleading for \baselineskip.
-+% Parameters in order: 1) textheight; 2) textwidth;
-+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
-+% 7) physical page height; 8) physical page width.
- %
--\def\internalpagesizes#1#2#3#4#5#6{%
-+% 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
-@@ -5736,6 +8665,17 @@
- \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
- }
-@@ -5743,76 +8683,140 @@
- % @letterpaper (the default).
- \def\letterpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
-- \setleading{13.2pt}%
-+ \textleading = 13.2pt
- %
- % If page is nothing but text, make it come out even.
-- \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
-+ \internalpagesizes{607.2pt}{6in}% that's 46 lines
-+ {\voffset}{.25in}%
-+ {\bindingoffset}{36pt}%
-+ {11in}{8.5in}%
- }}
+- if test $age -gt $current; then
+- $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+- exit 1
++ 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
--% Use @smallbook to reset parameters for 7x9.5 (or so) format.
-+% Use @smallbook to reset parameters for 7x9.25 trim size.
- \def\smallbook{{\globaldefs = 1
- \parskip = 2pt plus 1pt
-- \setleading{12pt}%
-+ \textleading = 12pt
- %
-- \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
-+ \internalpagesizes{7.5in}{5in}%
-+ {-.2in}{0in}%
-+ {\bindingoffset}{16pt}%
-+ {9.25in}{7in}%
- %
- \lispnarrowing = 0.3in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
-- \deftypemargin = 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
- %
-- \let\smalldisplay = \smalldisplayx
-- \let\smallexample = \smalllispx
-- \let\smallformat = \smallformatx
-- \let\smalllisp = \smalllispx
-+ \internalpagesizes{7.4in}{4.8in}%
-+ {-.2in}{-.4in}%
-+ {0pt}{14pt}%
-+ {9in}{6in}%
-+ %
-+ \lispnarrowing = 0.25in
-+ \tolerance = 700
-+ \hfuzz = 1pt
-+ \contentsrightmargin = 0pt
-+ \defbodyindent = .4cm
- }}
+ # Calculate the version variables.
+@@ -2566,10 +7383,13 @@
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+- major=.`expr $current - $age`
++ func_arith $current - $age
++ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+- minor_current=`expr $current + 1`
++ 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"
+ ;;
- % Use @afourpaper to print on European A4 paper.
- \def\afourpaper{{\globaldefs = 1
-- \setleading{12pt}%
- \parskip = 3pt plus 2pt minus 1pt
-+ \textleading = 13.2pt
- %
-- \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
-+ % 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
- }}
+@@ -2580,19 +7400,31 @@
--% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
--% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
--\def\afourlatex{{\globaldefs = 1
-- \setleading{13.6pt}%
-+% 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
-+}}
+ freebsd-elf)
+ major=".$current"
+- versuffix=".$current";
++ versuffix=".$current"
+ ;;
+
+- irix)
+- major=`expr $current - $age + 1`
+- verstring="sgi$major.$revision"
++ 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
+
-+% A specific text layout, 24x15cm overall, intended for A4 paper.
-+\def\afourlatex{{\globaldefs = 1
- \afourpaper
-- \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
-+ \internalpagesizes{237mm}{150mm}%
-+ {\voffset}{4.6mm}%
-+ {\bindingoffset}{7mm}%
-+ {297mm}{210mm}%
- %
-+ % Must explicitly reset to 0 because we call \afourpaper.
- \globaldefs = 0
- }}
++ case $version_type in
++ nonstopux) verstring_prefix=nonstopux ;;
++ *) verstring_prefix=sgi ;;
++ esac
++ verstring="$verstring_prefix$major.$revision"
--% Use @afourwide to print on European A4 paper in wide format.
--\def\afourwide{%
-+% Use @afourwide to print on A4 paper in landscape format.
-+\def\afourwide{{\globaldefs = 1
- \afourpaper
-- \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
-- %
-+ \internalpagesizes{241mm}{165mm}%
-+ {\voffset}{-2.95mm}%
-+ {\bindingoffset}{7mm}%
-+ {297mm}{210mm}%
- \globaldefs = 0
--}
-+}}
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+- while test $loop != 0; do
+- iface=`expr $revision - $loop`
+- loop=`expr $loop - 1`
+- verstring="sgi$major.$iface:$verstring"
++ 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
- % @pagesizes TEXTHEIGHT[,TEXTWIDTH]
- % Perhaps we should allow setting the margins, \topskip, \parskip,
- % and/or leading, also. Or perhaps we should compute them somehow.
- %
--\def\pagesizes{\parsearg\pagesizesxxx}
--\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
-+\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{13.2pt}%
-+ \setleading{\textleading}%
- %
-- \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
-+ \dimen0 = #1\relax
-+ \advance\dimen0 by \voffset
-+ %
-+ \dimen2 = \hsize
-+ \advance\dimen2 by \normaloffset
-+ %
-+ \internalpagesizes{#1}{\hsize}%
-+ {\voffset}{\normaloffset}%
-+ {\bindingoffset}{44pt}%
-+ {\dimen0}{\dimen2}%
- }}
+ # Before this point, $major must not contain `.'.
+@@ -2601,25 +7433,34 @@
+ ;;
- % Set default to letter.
-@@ -5840,10 +8844,10 @@
- \def\normalless{<}
- \def\normalgreater{>}
- \def\normalplus{+}
--\def\normaldollar{$}
-+\def\normaldollar{$}%$ font-lock fix
+ linux)
+- major=.`expr $current - $age`
++ func_arith $current - $age
++ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
--% This macro is used to make a character print one way in ttfont
--% where it can probably just be output, and another way in other fonts,
-+% 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
-@@ -5875,8 +8879,9 @@
+ osf)
+- major=`expr $current - $age`
++ func_arith $current - $age
++ major=.$func_arith_result
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
- \catcode`\_=\active
- \def_{\ifusingtt\normalunderscore\_}
-+\let\realunder=_
- % Subroutine for the previous macro.
--\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+- while test $loop != 0; do
+- iface=`expr $current - $loop`
+- loop=`expr $loop - 1`
++ 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
- \catcode`\|=\active
- \def|{{\tt\char124}}
-@@ -5889,16 +8894,7 @@
- \catcode`\+=\active
- \def+{{\tt \char 43}}
- \catcode`\$=\active
--\def${\ifusingit{{\sl\$}}\normaldollar}
--%\catcode 27=\active
--%\def^^[{$\diamondsuit$}
--
--% Set up an active definition for =, but don't enable it most of the time.
--{\catcode`\==\active
--\global\def={{\tt \char 61}}}
--
--\catcode`+=\active
--\catcode`\_=\active
-+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+ # Make executables depend on our current version.
+- verstring="$verstring:${current}.0"
++ func_append verstring ":${current}.0"
++ ;;
++
++ qnx)
++ major=".$current"
++ versuffix=".$current"
+ ;;
- % 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.
-@@ -5906,46 +8902,53 @@
- % \otherifyactive is called near the end of this file.
- \def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+ sunos)
+@@ -2630,21 +7471,29 @@
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+- major=`expr $current - $age`
++ func_arith $current - $age
++ major=$func_arith_result
+ versuffix="-$major"
+ ;;
--\catcode`\@=0
-+% Used sometimes to turn off (effectively) the active characters even after
-+% parsing them.
-+\def\turnoffactive{%
-+ \normalturnoffactive
-+ \otherbackslash
-+}
+ *)
+- $echo "$modename: unknown library version type \`$version_type'" 1>&2
+- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit 1
++ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ esac
--% \rawbackslashxx output one backslash character in current font
--\global\chardef\rawbackslashxx=`\\
--%{\catcode`\\=\other
--%@gdef at rawbackslashxx{\}}
-+\catcode`\@=0
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+- verstring="0.0"
++ 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
+@@ -2662,7 +7511,7 @@
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+- $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
++ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+@@ -2670,55 +7519,65 @@
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
++
+ fi
--% \rawbackslash redefines \ as input to do \rawbackslashxx.
--{\catcode`\\=\active
-- at gdef@rawbackslash{@let\=@rawbackslashxx }}
-+% \backslashcurfont outputs one backslash character in current font,
-+% as in \char`\\.
-+\global\chardef\backslashcurfont=`\\
-+\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+- if test "$mode" != relink; then
++ 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/*"`
++ # may have been created when compiling PIC objects.
++ removelist=
++ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+- case $p in
+- *.$objext)
+- ;;
+- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+- removelist="$removelist $p"
+- ;;
+- *) ;;
+- esac
+- done
+- if test -n "$removelist"; then
+- $show "${rm}r $removelist"
+- $run ${rm}r $removelist
+- fi
++ 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
--% \normalbackslash outputs one backslash in fixed width font.
--\def\normalbackslash{{\tt\rawbackslashxx}}
-+% \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{\\}}
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+- oldlibs="$oldlibs $output_objdir/$libname.$libext"
++ func_append oldlibs " $output_objdir/$libname.$libext"
--% \catcode 17=0 % Define control-q
-+% In texinfo, backslash is an active character; it prints the backslash
-+% in fixed width font.
- \catcode`\\=\active
-+ at def@normalbackslash{{@tt at backslashcurfont}}
-+% On startup, @fixbackslash assigns:
-+% @let \ = @normalbackslash
+ # Transform .lo files to .o files.
+- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
++ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+ fi
--% Used sometimes to turn off (effectively) the active characters
--% even after parsing them.
-- at def@turnoffactive{@let"=@normaldoublequote
-- at let\=@realbackslash
-- at let~=@normaltilde
-- at let^=@normalcaret
-- at let_=@normalunderscore
-- at let|=@normalverticalbar
-- at let<=@normalless
-- at let>=@normalgreater
-- at let+=@normalplus
-- at let$=@normaldollar}
-+% \rawbackslash defines an active \ to do \backslashcurfont.
-+% \otherbackslash defines an active \ to be a literal `\' character with
-+% catcode other.
-+ at gdef@rawbackslash{@let\=@backslashcurfont}
-+ at gdef@otherbackslash{@let\=@realbackslash}
+ # Eliminate all temporary directories.
+- for path in $notinst_path; do
+- lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
+- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
+- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+- done
++ #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
-- at def@normalturnoffactive{@let"=@normaldoublequote
-- at let\=@normalbackslash
-- at let~=@normaltilde
-- at let^=@normalcaret
-- at let_=@normalunderscore
-- at let|=@normalverticalbar
-- at let<=@normalless
-- at let>=@normalgreater
-- at let+=@normalplus
-- at let$=@normaldollar}
-+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-+% the literal character `\'.
-+%
-+ at def@normalturnoffactive{%
-+ @let\=@normalbackslash
-+ @let"=@normaldoublequote
-+ @let~=@normaltilde
-+ @let^=@normalcaret
-+ @let_=@normalunderscore
-+ @let|=@normalverticalbar
-+ @let<=@normalless
-+ @let>=@normalgreater
-+ @let+=@normalplus
-+ @let$=@normaldollar %$ font-lock fix
-+ @unsepspaces
-+}
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+- temp_xrpath="$temp_xrpath -R$libdir"
++ func_replace_sysroot "$libdir"
++ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir" ;;
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+- if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
++ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+@@ -2729,7 +7588,7 @@
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+- *) dlfiles="$dlfiles $lib" ;;
++ *) func_append dlfiles " $lib" ;;
+ esac
+ done
- % Make _ and + \other characters, temporarily.
- % This is canceled by @fixbackslash.
-@@ -5959,9 +8962,9 @@
- @global at let\ = @eatinput
+@@ -2739,27 +7598,36 @@
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+- *) dlprefiles="$dlprefiles $lib" ;;
++ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
- % 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
-+% 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 back turn on active characters that might appear in the input
-+% Also turn back on active characters that might appear in the input
- % file name, in case not using a pre-dumped format.
- %
- @gdef at fixbackslash{%
-@@ -5973,15 +8976,11 @@
- % Say @foo, not \foo, in error messages.
- @escapechar = `@@
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
++ *-*-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
+- deplibs="$deplibs -framework System"
++ 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
+- deplibs="$deplibs -lc"
++ if test "$build_libtool_need_lc" = "yes"; then
++ func_append deplibs " -lc"
+ fi
+ ;;
+ esac
+@@ -2785,7 +7653,7 @@
+ # 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 behaviour.
++ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+@@ -2793,90 +7661,139 @@
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+- $rm conftest.c
++ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+ EOF
+- $rm conftest
+- $LTCC -o conftest conftest.c $deplibs
+- if test $? -eq 0 ; then
++ $opt_dry_run || $RM conftest
++ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+- name="`expr $i : '-l\(.*\)'`"
+- # If $name is empty we are operating on a -L argument.
+- if test -n "$name" && test "$name" != "0"; then
+- libname=`eval \\$echo \"$libname_spec\"`
+- deplib_matches=`eval \\$echo \"$library_names_spec\"`
+- set dummy $deplib_matches
+- deplib_match=$2
+- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+- newdeplibs="$newdeplibs $i"
+- else
+- droppeddeps=yes
+- echo
+- echo "*** Warning: This library needs some functionality provided by $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."
++ 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
+- else
+- newdeplibs="$newdeplibs $i"
+- fi
+- done
+- else
+- # Error occured in the first compile. Let's try to salvage the situation:
+- # Compile a seperate program for each library.
+- for i in $deplibs; do
+- name="`expr $i : '-l\(.*\)'`"
+- # If $name is empty we are operating on a -L argument.
+- if test -n "$name" && test "$name" != "0"; then
+- $rm conftest
+- $LTCC -o conftest conftest.c $i
+- # Did it work?
+- if test $? -eq 0 ; then
+- ldd_output=`ldd conftest`
+- libname=`eval \\$echo \"$libname_spec\"`
+- deplib_matches=`eval \\$echo \"$library_names_spec\"`
+- set dummy $deplib_matches
+- deplib_match=$2
++ 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
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+- echo "*** Warning: This library needs some functionality provided by $i."
++ $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 "*** 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 "*** 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
+- else
+- newdeplibs="$newdeplibs $i"
+- fi
++ ;;
++ *)
++ func_append newdeplibs " $i"
++ ;;
++ esac
+ done
+ fi
+ ;;
+ file_magic*)
+- set dummy $deplibs_check_method
+- file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
++ set dummy $deplibs_check_method; shift
++ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name="`expr $a_deplib : '-l\(.*\)'`"
+- # If $name is empty we are operating on a -L argument.
+- if test -n "$name" && test "$name" != "0"; then
+- 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
++ 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
++ if ls -lLd "$potent_lib" 2>/dev/null |
++ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+@@ -2886,81 +7803,110 @@
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
++ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
++ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+- # It is ok to link against an archive when
+- # building a shared library.
+- if $AR -t $potlib > /dev/null 2>&1; then
+- newdeplibs="$newdeplibs $a_deplib"
+- a_deplib=""
+- break 2
+- fi
+- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+- | sed 10q \
+- | egrep "$file_magic_regex" > /dev/null; then
+- newdeplibs="$newdeplibs $a_deplib"
++ 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
++ done
++ done
++ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ echo
+- echo "*** Warning: This library needs some functionality provided by $a_deplib."
++ $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 "*** 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
+- else
++ ;;
++ *)
+ # Add a -L argument.
+- newdeplibs="$newdeplibs $a_deplib"
+- fi
++ func_append newdeplibs " $a_deplib"
++ ;;
++ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+- set dummy $deplibs_check_method
+- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
++ set dummy $deplibs_check_method; shift
++ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+- name="`expr $a_deplib : '-l\(.*\)'`"
+- # If $name is empty we are operating on a -L argument.
+- if test -n "$name" && test "$name" != "0"; then
+- 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
+- if eval echo \"$potent_lib\" 2>/dev/null \
+- | sed 10q \
+- | egrep "$match_pattern_regex" > /dev/null; then
+- newdeplibs="$newdeplibs $a_deplib"
+- a_deplib=""
+- break 2
+- fi
++ 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
+- done
++ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ echo
+- echo "*** Warning: This library needs some functionality provided by $a_deplib."
++ $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 "*** 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
+- else
++ ;;
++ *)
+ # Add a -L argument.
+- newdeplibs="$newdeplibs $a_deplib"
+- fi
++ func_append newdeplibs " $a_deplib"
++ ;;
++ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
+- grep . >/dev/null; then
++ 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."
+@@ -2969,7 +7915,8 @@
+ fi
+ echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+- fi
++ ;;
++ esac
+ ;;
+ esac
+ versuffix=$versuffix_save
+@@ -2980,8 +7927,8 @@
--% These look ok in all fonts, so just make them not special.
-+% These look ok in all fonts, so just make them not special.
- @catcode`@& = @other
- @catcode`@# = @other
- @catcode`@% = @other
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+- # On Rhapsody replace the C library is the System framework
+- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
++ # On Rhapsody replace the C library with the System framework
++ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
-- at c Set initial fonts.
-- at textfonts
-- at rm
--
+@@ -2989,7 +7936,7 @@
+ 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 "*** 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
+@@ -3011,7 +7958,7 @@
+ echo "*** automatically added whenever a program is linked with this library"
+ echo "*** or is declared to -dlopen it."
- @c Local variables:
- @c eval: (add-hook 'write-file-hooks 'time-stamp)
-@@ -5990,3 +8989,9 @@
- @c time-stamp-format: "%:y-%02m-%02d.%02H"
- @c time-stamp-end: "}"
- @c End:
-+
-+ at c vim:sw=2:
+- if test $allow_undefined = no; then
++ 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"
+@@ -3030,6 +7977,41 @@
+ # 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
+
-+ at ignore
-+ arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-+ at end ignore
---- ./configure.in.orig 2012-01-09 20:21:02.000000000 -0700
-+++ ./configure.in 2012-01-09 20:41:39.017551755 -0700
-@@ -1,4 +1,4 @@
--AC_INIT()
-+AC_INIT
- AC_PREREQ([2.61])
- AC_CONFIG_HEADER(h/gclincl.h)
-
-@@ -445,7 +445,7 @@
- AC_MSG_CHECKING([for CFLAG $TMPF])
- CFLAGS_ORI=$CFLAGS
- CFLAGS="$CFLAGS $TMPF"
-- AC_TRY_RUN([int main() {return 0;}],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no))
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([],[[return 0;]])],TCFLAGS="$TCFLAGS $TMPF";AC_MSG_RESULT(yes),AC_MSG_RESULT(no))
- CFLAGS=$CFLAGS_ORI
-
- else
-@@ -629,9 +629,6 @@
- AC_MSG_CHECKING([system version (for dynamic loading)])
- if machine=`uname -m` ; then true; else machine=unknown ; fi
-
--AC_CHECK_PROGS(MAKEINFO,makeinfo,"false")
--AC_SUBST(MAKEINFO)
--
- if test -f /usr/lib/NextStep/software_version; then
- system=NEXTSTEP-`${AWK} '/3/,/3/' /usr/lib/NextStep/software_version`
- else
-@@ -672,21 +669,24 @@
-
- AC_CHECK_HEADER(unistd.h,
- AC_CHECK_LIB(c,sysconf,
-- AC_MSG_CHECKING("for _SC_CLK_TCK")
-- AC_TRY_RUN([#include <unistd.h>
-+ AC_MSG_CHECKING([for _SC_CLK_TCK])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <unistd.h>
- #include <stdio.h>
-- int
-- main() {
-+ ]],[[
- FILE *fp=fopen("conftest1","w");
- fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
- fclose(fp);
- return 0;
-- }],
-+ ]])],
- hz=`cat conftest1`
- AC_DEFINE_UNQUOTED(HZ,$hz)
- ,hz=0,hz=0)
- [AC_MSG_RESULT($hz)]))
-
-+AC_PROG_EGREP
-+AC_CHECK_PROGS(MAKEINFO,makeinfo,"false")
-+AC_SUBST(MAKEINFO)
-
- #MY_SUBDIRS=
++ # 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"
-@@ -703,17 +703,19 @@
- if test "$enable_dynsysgmp" = "yes" ; then
- AC_CHECK_HEADER(gmp.h,
- AC_CHECK_LIB(gmp,__gmpz_init,
-- AC_MSG_CHECKING("for external gmp version")
-- AC_TRY_RUN([#include <gmp.h>
-- int main() {
-+ AC_MSG_CHECKING([for external gmp version])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <gmp.h>
-+ ]],[[
- #if __GNU_MP_VERSION == 4 || __GNU_MP_VERSION == 5
- return 0;
- #else
- return -1;
- #endif
-- }],
-+ ]])],
- # MPFILES=$GMPDIR/mpn/mul_n.o
- # PATCHED_SYMBOLS=__gmpn_toom3_mul_n
-+ AC_MSG_RESULT([4/5])
- MPFILES=
- PATCHED_SYMBOLS=
- # if test "$use" = "m68k-linux" ; then
-@@ -725,7 +727,8 @@
- echo "int main() {return 0;}" >>foo.c
- MP_INCLUDE=`cpp foo.c | grep /gmp.h | head -n 1 | $AWK '{print $3}' | tr -d '"'`
- rm -f foo.c,
-- echo "Cannot use dynamic gmp lib" , echo "Cannot use dynamic gmp lib" ),
-+ AC_MSG_RESULT([Cannot use dynamic gmp lib]),
-+ AC_MSG_RESULT([Cannot use dynamic gmp lib])),
- echo "Cannot use dynamic gmp lib" ,),
- echo "Cannot use dynamic gmp lib" ,)
- fi
-@@ -772,7 +775,7 @@
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+@@ -3038,15 +8020,17 @@
- fi
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+- if test $hardcode_into_libs = yes; then
++ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+- test "$mode" != relink && rpath="$compile_rpath$rpath"
++ 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
+@@ -3055,18 +8039,18 @@
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+- dep_rpath="$dep_rpath $flag"
++ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+- *) perm_rpath="$perm_rpath $libdir" ;;
++ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+@@ -3074,13 +8058,17 @@
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+- eval dep_rpath=\"$hardcode_libdir_flag_spec\"
++ if test -n "$hardcode_libdir_flag_spec_ld"; then
++ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
++ else
++ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
++ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+@@ -3088,140 +8076,222 @@
+ fi
--AC_MSG_CHECKING("for leading underscore in object symbols")
-+AC_MSG_CHECKING([for leading underscore in object symbols])
- cat>foo.c <<EOFF
- #include <math.h>
- #include <stdio.h>
-@@ -782,60 +785,62 @@
- if nm foo.o |grep " U " | grep "_cos" >/dev/null || nm foo.o |grep " U " | grep " _getc" >/dev/null ; then
- LEADING_UNDERSCORE=1
- AC_DEFINE(LEADING_UNDERSCORE)
-- AC_MSG_RESULT("yes")
-+ AC_MSG_RESULT([yes])
- else
- LEADING_UNDERSCORE=""
-- AC_MSG_RESULT("no")
-+ AC_MSG_RESULT([no])
- fi
--AC_MSG_CHECKING("for GNU ld option -Map")
-+AC_MSG_CHECKING([for GNU ld option -Map])
- touch map
- $CC -o foo [ -Wl,-Map ] map foo.o >/dev/null 2>&1
- if test `cat map | wc -l` != "0" ; then
-- AC_MSG_RESULT("yes")
-+ AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_GNU_LD)
- GNU_LD=1
- else
-- AC_MSG_RESULT("no")
-+ AC_MSG_RESULT([no])
- GNU_LD=
- fi
- rm -f foo.c foo.o foo map
+ shlibpath="$finalize_shlibpath"
+- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
++ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
-- AC_MSG_CHECKING("for size of gmp limbs")
-- AC_TRY_RUN([#include <stdio.h>
-+ AC_MSG_CHECKING([for size of gmp limbs])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <stdio.h>
- #include "$MP_INCLUDE"
-- int main() {
-+ ]],[[
- FILE *fp=fopen("conftest1","w");
- fprintf(fp,"%u",sizeof(mp_limb_t));
- fclose(fp);
- return 0;
-- }],mpsize=`cat conftest1`,mpsize=0,mpsize=0)
-+ ]])],mpsize=`cat conftest1`,mpsize=0,mpsize=0)
- if test "$mpsize" = "0" ; then
-- echo "Cannot determine mpsize"
-- exit 1
-+ AC_MSG_ERROR([Cannot determine mpsize], 1)
- fi
- AC_DEFINE_UNQUOTED(MP_LIMB_BYTES,$mpsize)
- AC_MSG_RESULT($mpsize)
+ # Get the real and link names of the library.
++ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+- realname="$2"
+- shift; shift
++ shift
++ realname="$1"
++ shift
-- AC_MSG_CHECKING("_SHORT_LIMB")
-- AC_TRY_RUN([#include <stdio.h>
-+ AC_MSG_CHECKING([_SHORT_LIMB])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <stdio.h>
- #include "$MP_INCLUDE"
-- int main() {
-+ ]],[[
- #ifdef _SHORT_LIMB
- return 0;
- #else
- return 1;
- #endif
-- }],AC_DEFINE(__SHORT_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
-- AC_MSG_CHECKING("_LONG_LONG_LIMB")
-- AC_TRY_RUN([#include <stdio.h>
-+ ]])],AC_DEFINE(__SHORT_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
-+ AC_MSG_CHECKING([_LONG_LONG_LIMB])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <stdio.h>
- #include "$MP_INCLUDE"
-- int main() {
-+ ]],[[
- #ifdef _LONG_LONG_LIMB
- return 0;
- #else
- return 1;
- #endif
-- }],AC_DEFINE(__LONG_LONG_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
-+ ]])],AC_DEFINE(__LONG_LONG_LIMB) AC_MSG_RESULT(yes),AC_MSG_RESULT(no),AC_MSG_RESULT(no))
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+- test -z "$dlname" && dlname=$soname
++ if test -z "$dlname"; then
++ dlname=$soname
++ fi
- GMP=1
- AC_DEFINE(GMP)
-@@ -891,10 +896,9 @@
+ lib="$output_objdir/$realname"
++ linknames=
+ for link
+ do
+- linknames="$linknames $link"
++ func_append linknames " $link"
+ done
- AC_CHECK_LIB(dl,dlopen,have_dl=1,have_dl=0)
- if test "$have_dl" = "0" ; then
-- echo "Cannot find dlopen in -dl"
-- exit 1
-+ AC_MSG_ERROR([Cannot find dlopen in -dl], 1)
- fi
--dnl AC_SEARCH_LIBS(dlopen, dl, have_dl=1, AC_ERROR(dlopen not found))
-+dnl AC_SEARCH_LIBS(dlopen, dl, have_dl=1, AC_MSG_ERROR([dlopen not found]))
- dnl LIBS and TLIBS - why not merged from the beginning?
+-# # Ensure that we have .o objects for linkers which dislike .lo
+-# # (e.g. aix) in case we are running --disable-static
+-# for obj in $libobjs; do
+-# xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+-# if test "X$xdir" = "X$obj"; then
+-# xdir="."
+-# else
+-# xdir="$xdir"
+-# fi
+-# baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+-# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+-# if test ! -f $xdir/$oldobj && test "$baseobj" != "$oldobj"; then
+-# $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+-# $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+-# fi
+-# done
+-
+ # Use standard objects if they are pic
+- test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
++ 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 1q $export_symbols`" != xEXPORTS; then
++ # and it's NOT already a .def file. Must figure out
++ # which of the given symbols are data symbols and tag
++ # them as such. So, trigger use of export_symbols_cmds.
++ # export_symbols gets reassigned inside the "prepare
++ # the list of exported symbols" if statement, so the
++ # include_expsyms logic still works.
++ orig_export_symbols="$export_symbols"
++ export_symbols=
++ always_export_symbols=yes
++ fi
++ fi
++ ;;
++ esac
- TLIBS="$TLIBS -ldl -rdynamic"
-@@ -908,15 +912,17 @@
- #
- # Old binutils appear to need CONST defined to const
- #
-- AC_MSG_CHECKING(if need to define CONST for bfd)
-- AC_TRY_RUN([#define IN_GCC
-+ AC_MSG_CHECKING([if need to define CONST for bfd])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #define IN_GCC
- #include <bfd.h>
-- int main() { symbol_info t; return 0;}],
-+ ]],[[symbol_info t; return 0;]])],
- AC_MSG_RESULT(no),
-- AC_TRY_RUN([#define CONST const
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #define CONST const
- #define IN_GCC
- #include <bfd.h>
-- int main() {symbol_info t; return 0;}],
-+ ]],[[symbol_info t; return 0;]])],
- AC_MSG_RESULT(yes)
- AC_DEFINE(NEED_CONST),
- AC_MSG_ERROR([cannot use bfd]),
-@@ -930,11 +936,12 @@
- # BFD boolean syntax
- #
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+- $show "generating symbol list for \`$libname.la'"
++ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+- $run $rm $export_symbols
+- eval cmds=\"$export_symbols_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
++ $opt_dry_run || $RM $export_symbols
++ cmds=$export_symbols_cmds
++ save_ifs="$IFS"; IFS='~'
++ for cmd1 in $cmds; do
+ IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
++ # 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"; then
+- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+- $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+- $run eval '$mv "${export_symbols}T" "$export_symbols"'
++ 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
-- AC_MSG_CHECKING(for useable bfd_boolean)
-- AC_TRY_RUN([#define IN_GCC
-+ AC_MSG_CHECKING([for usable bfd_boolean])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #define IN_GCC
- #include <bfd.h>
- bfd_boolean foo() {return FALSE;}
-- int main() {return 0;}],
-+ ]],[[return 0;]])],
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_BFD_BOOLEAN),
- AC_MSG_RESULT(no),
-@@ -945,10 +952,11 @@
- # bfd_link_info.output_bfd minimal configure change check
- #
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+- $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
++ 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
-- AC_MSG_CHECKING(for bfd_link_info.output_bfd)
-- AC_TRY_RUN([#include <bfd.h>
-+ AC_MSG_CHECKING([for bfd_link_info.output_bfd])
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <bfd.h>
- #include <bfdlink.h>
-- int main() {struct bfd_link_info i;i.output_bfd=0;return 0;}],
-+ ]],[[struct bfd_link_info i;i.output_bfd=0;return 0;]])],
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_OUTPUT_BFD),
- AC_MSG_RESULT(no),
-@@ -1056,45 +1064,47 @@
- # mechanism, in the PAGE macro. This offset is subtracted from
- # addresses, in calculating a page for an address in the heap.
++ 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"
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- $show "$mkdir $gentop"
+- $run $mkdir "$gentop"
+- status=$?
+- if test $status -ne 0 && test ! -d "$gentop"; then
+- exit $status
+- fi
+- generated="$generated $gentop"
+-
+- for xlib in $convenience; do
+- # Extract the objects.
+- case $xlib in
+- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+- *) xabs=`pwd`"/$xlib" ;;
+- esac
+- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+- xdir="$gentop/$xlib"
+-
+- $show "${rm}r $xdir"
+- $run ${rm}r "$xdir"
+- $show "$mkdir $xdir"
+- $run $mkdir "$xdir"
+- status=$?
+- if test $status -ne 0 && test ! -d "$xdir"; then
+- exit $status
+- fi
+- $show "(cd $xdir && $AR x $xabs)"
+- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ func_append generated " $gentop"
--AC_CHECK_SIZEOF(long,0)
-+AC_CHECK_SIZEOF(long)
- AC_MSG_CHECKING(sizeof struct contblock)
+- libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+- done
++ func_extract_archives $gentop $convenience
++ func_append libobjs " $func_extract_archives_result"
++ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
- # work around MSYS pwd result incompatibility
- if test "$use" = "mingw" ; then
--AC_TRY_RUN([#include <stdio.h>
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <stdio.h>
- #define EXTER
- #include "$MP_INCLUDE"
- #include "h/enum.h"
- #include "h/object.h"
-- int main(int argc,char **argv,char **envp) {
-+ ]],[[
- FILE *f=fopen("conftest1","w");
- fprintf(f,"%u",sizeof(struct contblock));
- fclose(f);
- return 0;
-- }],sizeof_contblock=`cat conftest1`,
-- echo Cannot find sizeof struct contblock;exit 1,
-- echo Cannot find sizeof struct contblock;exit 1)
-+ ]])],sizeof_contblock=`cat conftest1`,
-+ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1),
-+ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1))
- else
--AC_TRY_RUN([#include <stdio.h>
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <stdio.h>
- #define EXTER
- #include "$MP_INCLUDE"
- #include "`pwd`/h/enum.h"
- #include "`pwd`/h/object.h"
-- int main(int argc,char **argv,char **envp) {
-+ ]],[[
- FILE *f=fopen("conftest1","w");
- fprintf(f,"%u",sizeof(struct contblock));
- fclose(f);
- return 0;
-- }],sizeof_contblock=`cat conftest1`,
-- echo Cannot find sizeof struct contblock;exit 1,
-- echo Cannot find sizeof struct contblock;exit 1)
-+ ]])],sizeof_contblock=`cat conftest1`,
-+ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1),
-+ AC_MSG_ERROR([Cannot find sizeof struct contblock], 1))
- fi
- AC_MSG_RESULT($sizeof_contblock)
- AC_DEFINE_UNQUOTED(SIZEOF_CONTBLOCK,$sizeof_contblock)
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+- linker_flags="$linker_flags $flag"
++ func_append linker_flags " $flag"
+ fi
+ # Make a backup of the uninstalled library when relinking
+- if test "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
++ if test "$opt_mode" = relink; then
++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
--AC_MSG_CHECKING(for word order)
--AC_TRY_RUN([int main () {
-+AC_MSG_CHECKING([for word order])
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([],[[
- /* Are we little or big endian? Adapted from Harbison&Steele. */
- union
- {
-@@ -1103,7 +1113,7 @@
- } u;
- u.d = 1.0;
- return u.l[sizeof(double)/sizeof(int)-1] ? 0 : 1;
--}],AC_MSG_RESULT(little)
-+]])],AC_MSG_RESULT(little)
- AC_DEFINE(LITTLE_END),
- AC_MSG_RESULT(big),
- AC_MSG_RESULT([WARNING: ASSUMING LITTLE ENDIAN FOR CROSS COMPILING !!!]
-@@ -1116,15 +1126,16 @@
+ # Do each of the archive commands.
+- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+- eval cmds=\"$archive_expsym_cmds\"
++ 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
+- eval cmds=\"$archive_cmds\"
++ 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 len=`expr "X$cmds" : ".*"` &&
+- test $len -le $max_cmd_len; then
+- :
+- else
+- # The command line is too long to link in one step, link piecewise.
+- $echo "creating reloadable object files..."
++
++ 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.
- AC_MSG_CHECKING([for sbrk])
- HAVE_SBRK=""
--AC_TRY_RUN([#include <unistd.h>
-- #include <stdio.h>
-- int main() {
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <unistd.h>
-+ #include <stdio.h>
-+ ]],[[
- FILE *f;
- if (!(f=fopen("conftest1","w")))
- return -1;
- fprintf(f,"%u",sbrk(0));
- return 0;
-- }],
-+ ]])],
- HAVE_SBRK=1
- AC_MSG_RESULT(yes),
- AC_MSG_RESULT([no: WARNING you must be able to emulate sbrk: as on mingw or macosx]),
-@@ -1136,14 +1147,15 @@
- # AC_MSG_RESULT(sys/personality.h not found))
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+@@ -3234,109 +8304,255 @@
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+- save_output=$output
++ save_output=$output
++ func_basename "$output"
++ output_la=$func_basename_result
- AC_MSG_CHECKING([for ADDR_NO_RANDOMIZE constant])
-- AC_TRY_RUN([#include <sys/personality.h>
-- #include <stdio.h>
-- int main(int argc,char *argv[],char *envp[]) {
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <sys/personality.h>
-+ #include <stdio.h>
-+ ]],[[
- FILE *f;
- if (!(f=fopen("conftest1","w"))) return -1;
- fprintf(f,"%x",ADDR_NO_RANDOMIZE);
- return 0;
-- }],
-+ ]])],
- ADDR_NO_RANDOMIZE=`cat conftest1`,ADDR_NO_RANDOMIZE=0,ADDR_NO_RANDOMIZE=0)
- if test "$ADDR_NO_RANDOMIZE" = "0" ; then
- AC_MSG_RESULT([no, assuming 0x40000])
-@@ -1153,10 +1165,11 @@
- fi
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+- test_cmds=
+- concat_cmds=
+- objlist=
+- delfiles=
+- last_robj=
+- k=1
+- output=$output_objdir/$save_output-${k}.$objext
+- # Loop over the list of objects to be linked.
+- for obj in $save_libobjs
+- do
+- eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+- if test "X$objlist" = X ||
+- { len=`expr "X$test_cmds" : ".*"` &&
+- test $len -le $max_cmd_len; }; then
+- objlist="$objlist $obj"
+- else
+- # The command $test_cmds is almost too long, add a
+- # command to the queue.
+- if test $k -eq 1 ; then
+- # The first file doesn't have a previous command to add.
+- eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+- else
+- # All subsequent reloadable object files will link in
+- # the last one created.
+- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+- fi
+- last_robj=$output_objdir/$save_output-${k}.$objext
+- k=`expr $k + 1`
+- output=$output_objdir/$save_output-${k}.$objext
+- objlist=$obj
+- len=1
+- fi
+- done
+- # Handle the remaining objects by creating one last
+- # reloadable object file. All subsequent reloadable object
+- # files will link in the last one created.
+- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
++ test_cmds=
++ concat_cmds=
++ objlist=
++ last_robj=
++ k=1
- AC_MSG_CHECKING([for personality(ADDR_NO_RANDOMIZE) support])
-- AC_TRY_RUN([void gprof_cleanup() {};
-+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
-+ void gprof_cleanup() {}
- int main(int argc,char *argv[],char *envp[]) {
- #include "h/unrandomize.h"
-- return 0;}],CAN_UNRANDOMIZE_SBRK=1,CAN_UNRANDOMIZE_SBRK=0,CAN_UNRANDOMIZE_SBRK=0)
-+ return 0;}]])],CAN_UNRANDOMIZE_SBRK=1,CAN_UNRANDOMIZE_SBRK=0,CAN_UNRANDOMIZE_SBRK=0)
+- # Set up a command to remove the reloadale object files
+- # after they are used.
+- i=0
+- while test $i -lt $k
+- do
+- i=`expr $i + 1`
+- delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+- done
++ 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
- if test "$CAN_UNRANDOMIZE_SBRK" != 0 ; then
- AC_MSG_RESULT(yes)
-@@ -1166,8 +1179,9 @@
- fi
+- $echo "creating a temporary reloadable object file: $output"
++ # 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"
- AC_MSG_CHECKING([that sbrk is (now) non-random])
-- AC_TRY_RUN([#include <stdio.h>
-- void gprof_cleanup() {};
-+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
-+ #include <stdio.h>
-+ void gprof_cleanup() {}
- int main(int argc,char * argv[],char * envp[]) {
- FILE *f;
- #ifdef CAN_UNRANDOMIZE_SBRK
-@@ -1175,13 +1189,13 @@
- #endif
- if (!(f=fopen("conftest1","w"))) return -1;
- fprintf(f,"%u",sbrk(0));
-- return 0;}],SBRK=`cat conftest1`,SBRK=0,SBRK=0)
-+ return 0;}]])],SBRK=`cat conftest1`,SBRK=0,SBRK=0)
- if test "$SBRK" = "0" ; then
-- AC_MSG_RESULT(cannot trap sbrk)
-- exit 1
-+ AC_MSG_ERROR([cannot trap sbrk], 1)
- fi
-- AC_TRY_RUN([#include <stdio.h>
-- void gprof_cleanup() {};
-+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
-+ #include <stdio.h>
-+ void gprof_cleanup() {}
- int main(int argc,char * argv[],char * envp[]) {
- FILE *f;
- #ifdef CAN_UNRANDOMIZE_SBRK
-@@ -1189,10 +1203,9 @@
- #endif
- if (!(f=fopen("conftest1","w"))) return -1;
- fprintf(f,"%u",sbrk(0));
-- return 0;}],SBRK1=`cat conftest1`,SBRK1=0,SBRK1=0)
-+ return 0;}]])],SBRK1=`cat conftest1`,SBRK1=0,SBRK1=0)
- if test "$SBRK1" = "0" ; then
-- AC_MSG_RESULT(cannot trap sbrk)
-- exit 1
-+ AC_MSG_ERROR([cannot trap sbrk], 1)
- fi
- if test "$SBRK" = "$SBRK1" ; then
- AC_MSG_RESULT(yes)
-@@ -1207,15 +1220,17 @@
- fi
+- # Loop through the commands generated above and execute them.
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $concat_cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
++ else
++ output=
++ fi
+
+- libobjs=$output
++ 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
++ output=$save_output
- # pagewidth
--AC_MSG_CHECKING(for pagewidth)
--AC_TRY_RUN([#include <stdio.h>
-+AC_MSG_CHECKING([for pagewidth])
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <stdio.h>
- #include <unistd.h>
--int main() {size_t i=getpagesize(),j;
-+ ]],[[
-+ size_t i=getpagesize(),j;
- FILE *fp=fopen("conftest1","w");
- for (j=0;i>>=1;j++);
- if (j<12) {printf("pagewidth %u is too small\n",j);return -1;}
- fprintf(fp,"%u",j);
-- return 0;}],PAGEWIDTH=`cat conftest1`,PAGEWIDTH=0,PAGEWIDTH=0)
-+ return 0;]])],PAGEWIDTH=`cat conftest1`,PAGEWIDTH=0,PAGEWIDTH=0)
- AC_MSG_RESULT($PAGEWIDTH)
- AC_DEFINE_UNQUOTED(PAGEWIDTH,$PAGEWIDTH)
- AC_SUBST(PAGEWIDTH)
-@@ -1223,11 +1238,12 @@
+ 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.
- old_LDFLAGS="$LDFLAGS"
- LDFLAGS="$TLDFLAGS"
--AC_MSG_CHECKING("finding DBEGIN")
--AC_TRY_RUN([#include <stdio.h>
-- #include <stdlib.h>
-+AC_MSG_CHECKING([finding DBEGIN])
-+AC_RUN_IFELSE([AC_LANG_SOURCE([[
-+#include <stdio.h>
-+#include <stdlib.h>
+ # Do each of the archive commands.
+- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+- eval cmds=\"$archive_expsym_cmds\"
+- else
+- eval cmds=\"$archive_cmds\"
+- fi
++ 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
--void gprof_cleanup() {};
-+void gprof_cleanup() {}
- int
- main(int argc,char * argv[],char *envp[])
- {
-@@ -1252,36 +1268,35 @@
- #endif
- fclose(fp);
- return 0;
--}],dbegin=`cat conftest1`,dbegin=0,dbegin=0)
-+}]])],dbegin=`cat conftest1`,dbegin=0,dbegin=0)
- AC_DEFINE_UNQUOTED(DBEGIN,$dbegin /* where data begins */)
- AC_MSG_RESULT(got $dbegin)
- LDFLAGS="$old_LDFLAGS"
+- # Append the command to remove the reloadable object files
+- # to the just-reset $cmds.
+- eval cmds=\"\$cmds~$rm $delfiles\"
+- fi
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
++ 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 "$mode" = relink; then
+- $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+- exit 0
++ 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
--AC_MSG_CHECKING("finding CSTACK_ADDRESS")
--AC_TRY_RUN([#include <stdio.h>
--main()
--{
-+AC_MSG_CHECKING([finding CSTACK_ADDRESS])
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+#include <stdio.h>
-+]],[[
- char *b ;
- FILE *fp = fopen("conftest1","w");
- fprintf(fp,"%ld",((long) &b));
- fclose(fp);
- return 0;
--}],cstack_address=`cat conftest1`,cstack_address=0,cstack_address=0)
-+]])],cstack_address=`cat conftest1`,cstack_address=0,cstack_address=0)
- AC_DEFINE_UNQUOTED(CSTACK_ADDRESS,$cstack_address \
- )
- AC_MSG_RESULT(got $cstack_address)
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+- $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+- $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
++ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+@@ -3349,38 +8565,35 @@
+ ;;
+ obj)
+- if test -n "$deplibs"; then
+- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+- fi
+-
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+- $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
++ func_warning "\`-dlopen' is ignored for objects"
+ fi
--AC_MSG_CHECKING("sizeof long long int")
--AC_TRY_RUN([#include <stdio.h>
--main()
--{
-+AC_MSG_CHECKING([sizeof long long int])
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+#include <stdio.h>
-+]],[[
- if (sizeof(long long int) == 2*sizeof(long)) return 0;
- return 1;
--}
--],[AC_DEFINE(HAVE_LONG_LONG)
-+]])],[AC_DEFINE(HAVE_LONG_LONG)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no),
- AC_MSG_RESULT(no)
-@@ -1450,7 +1465,6 @@
- # To get around this problem, check for both libraries together
- # if -lsocket doesn't work by itself.
- #--------------------------------------------------------------------
--AC_MSG_CHECKING([for sockets])
- tcl_checkBoth=0
- AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
- if test "$tcl_checkSocket" = 1; then
-@@ -1487,8 +1501,8 @@
- AC_SUBST(RL_OBJS)
- AC_SUBST(RL_LIB)
+- if test -n "$rpath"; then
+- $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+- fi
++ case " $deplibs" in
++ *\ -l* | *\ -L*)
++ func_warning "\`-l' and \`-L' are ignored for objects" ;;
++ esac
--AC_MSG_CHECKING(For network code for nsocket.c)
--AC_TRY_LINK([
-+AC_MSG_CHECKING([for network code for nsocket.c])
-+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <sys/time.h>
- #include <sys/types.h>
- #include <unistd.h>
-@@ -1505,24 +1519,25 @@
- #include <netinet/in.h> /* struct in_addr, struct sockaddr_in */
- #include <arpa/inet.h> /* inet_ntoa() */
- #include <netdb.h> /* gethostbyname() */
--],[ connect(0,(struct sockaddr *)0,0);
-+]],[[connect(0,(struct sockaddr *)0,0);
- gethostbyname("jil");
- socket(AF_INET, SOCK_STREAM, 0);
-- ],
-+ ]])],
- [AC_DEFINE(HAVE_NSOCKET)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
+- if test -n "$xrpath"; then
+- $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+- fi
++ test -n "$rpath" && \
++ func_warning "\`-rpath' is ignored for objects"
+- if test -n "$vinfo"; then
+- $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+- fi
++ test -n "$xrpath" && \
++ func_warning "\`-R' is ignored for objects"
--AC_MSG_CHECKING(check for listen using fcntl)
--AC_TRY_COMPILE([#include <stdio.h>
-+AC_MSG_CHECKING([for listen using fcntl])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+#include <stdio.h>
- #include <fcntl.h>
--],
--[FILE *fp=fopen("configure.in","r");
-+]],
-+[[FILE *fp=fopen("configure.in","r");
- int orig;
- orig = fcntl(fileno(fp), F_GETFL);
- if (! (orig & O_NONBLOCK )) return 0;
--],
-+]])],
- [AC_DEFINE(LISTEN_USE_FCNTL)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
-@@ -1543,7 +1558,7 @@
- AC_SUBST(USE_CLEANUP)
- gcl_ok=no
+- if test -n "$release"; then
+- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+- fi
++ test -n "$vinfo" && \
++ func_warning "\`-version-info' is ignored for objects"
++
++ test -n "$release" && \
++ func_warning "\`-release' is ignored for objects"
--AC_HEADER_EGREP(LITTLE_ENDIAN, ctype.h, gcl_ok=yes, gcl_ok=noo)
-+AC_EGREP_HEADER(LITTLE_ENDIAN, ctype.h, gcl_ok=yes, gcl_ok=no)
- if test $gcl_ok = yes ; then
- AC_DEFINE(ENDIAN_ALREADY_DEFINED)
- fi
-@@ -1575,32 +1590,32 @@
- esac
+ case $output in
+ *.lo)
+- if test -n "$objs$old_deplibs"; then
+- $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+- exit 1
+- fi
+- libobj="$output"
+- obj=`$echo "X$output" | $Xsed -e "$lo2o"`
++ 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=
+@@ -3389,7 +8602,7 @@
+ esac
+ # Delete the old objects.
+- $run $rm $obj $libobj
++ $opt_dry_run || $RM $obj $libobj
--AC_MSG_CHECKING(check for SV_ONSTACK)
--AC_TRY_COMPILE([#include <signal.h>
--int joe=SV_ONSTACK;
--],
--[],
-+AC_MSG_CHECKING([for SV_ONSTACK])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+#include <signal.h>
-+]],
-+[[return SV_ONSTACK;]])],
- [AC_DEFINE(HAVE_SV_ONSTACK)
- AC_SUBST(HAVE_SV_ONSTACK)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+@@ -3398,150 +8611,141 @@
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+- # -Wl from whole_archive_flag_spec
++ # -Wl from whole_archive_flag_spec and hope we can get by with
++ # turning comma into space..
+ wl=
--AC_MSG_CHECKING(check for SIGSYS)
--AC_TRY_COMPILE([#include <signal.h>
--int joe=SIGSYS;
--],
--[],
-+AC_MSG_CHECKING([for SIGSYS])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+#include <signal.h>
-+]],
-+[[return SIGSYS;]])],
- [AC_DEFINE(HAVE_SIGSYS)
- AC_SUBST(HAVE_SIGSYS)
- AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no))
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
++ 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"
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- $show "$mkdir $gentop"
+- $run $mkdir "$gentop"
+- status=$?
+- if test $status -ne 0 && test ! -d "$gentop"; then
+- exit $status
+- fi
+- generated="$generated $gentop"
+-
+- for xlib in $convenience; do
+- # Extract the objects.
+- case $xlib in
+- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+- *) xabs=`pwd`"/$xlib" ;;
+- esac
+- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+- xdir="$gentop/$xlib"
+-
+- $show "${rm}r $xdir"
+- $run ${rm}r "$xdir"
+- $show "$mkdir $xdir"
+- $run $mkdir "$xdir"
+- status=$?
+- if test $status -ne 0 && test ! -d "$xdir"; then
+- exit $status
+- fi
+- $show "(cd $xdir && $AR x $xabs)"
+- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ func_append generated " $gentop"
+- reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+- done
++ func_extract_archives $gentop $convenience
++ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
--AC_MSG_CHECKING(check for SIGEMT)
--AC_TRY_COMPILE([#include <signal.h>
--int joe=SIGEMT;
--],
--[],
-+AC_MSG_CHECKING([for SIGEMT])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+#include <signal.h>
-+]],
-+[[return SIGEMT;]])],
- [AC_DEFINE(HAVE_SIGEMT)
- AC_SUBST(HAVE_SIGEMT)
- AC_MSG_RESULT(yes)],
-@@ -1612,12 +1627,13 @@
- #if test $use = "386-linux" ; then
- AC_CHECK_HEADERS(asm/sigcontext.h)
- AC_CHECK_HEADERS(asm/signal.h)
-- AC_MSG_CHECKING([for sigcontext...])
-- AC_TRY_COMPILE([#include <signal.h>
-- ],
-- [
-+ AC_MSG_CHECKING([for sigcontext])
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+ #include <signal.h>
-+ ]],
-+ [[
- struct sigcontext foo;
-- ],
-+ ]])],
- [
- sigcontext_works=1;
- AC_DEFINE(SIGNAL_H_HAS_SIGCONTEXT)
-@@ -1628,18 +1644,19 @@
- AC_MSG_RESULT(sigcontext NOT in signal.h)]
- )
- if test "$sigcontext_works" = 0 ; then
-- AC_MSG_CHECKING([for sigcontext...])
-- AC_TRY_COMPILE([#include <signal.h>
-+ AC_MSG_CHECKING([for sigcontext])
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+ #include <signal.h>
- #ifdef HAVE_ASM_SIGCONTEXT_H
- #include <asm/sigcontext.h>
- #endif
- #ifdef HAVE_ASM_SIGNAL_H
- #include <asm/signal.h>
- #endif
-- ],
-- [
-+ ]],
-+ [[
- struct sigcontext foo;
-- ],
-+ ]])],
- [
- AC_DEFINE(HAVE_SIGCONTEXT)
- AC_MSG_RESULT(sigcontext in asm files)
-@@ -1749,6 +1766,8 @@
++ # 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 "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
++ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
- if test "$enable_tcltk" = "yes" ; then
+ output="$obj"
+- eval cmds=\"$reload_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
++ func_execute_cmds "$reload_cmds" 'exit $?'
-+AC_CHECK_LIB(ieee,main,have_ieee=1,have_ieee=0)
-+AC_CHECK_PROG(TCLSH,tclsh,tclsh,${TCLSH})
- AC_MSG_CHECKING([for tcl/tk])
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+- $show "${rm}r $gentop"
+- $run ${rm}r $gentop
++ func_show_eval '${RM}r "$gentop"'
+ fi
+- exit 0
++ exit $EXIT_SUCCESS
+ fi
-@@ -1769,9 +1788,6 @@
- EOF
- #cp conftest.tcl foo.tcl
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+- $show "${rm}r $gentop"
+- $run ${rm}r $gentop
++ func_show_eval '${RM}r "$gentop"'
+ fi
--AC_CHECK_PROG(TCLSH,tclsh,tclsh,${TCLSH})
--#AC_CHECK_PROG(TCLSH,tclsh8.0,tclsh8.0,${TCLSH})
--
- if test "${TCLSH}" = "" ; then true ; else
- TCL_CONFIG_PREFIX=`${TCLSH} < conftest.tcl`
- fi
-@@ -1845,7 +1861,6 @@
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+- # $run eval "echo timestamp > $libobj" || exit $?
+- exit 0
++ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
++ exit $EXIT_SUCCESS
+ fi
- 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"
+- eval cmds=\"$reload_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
+-# else
+-# # Just create a symlink.
+-# $show $rm $libobj
+-# $run $rm $libobj
+-# xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+-# if test "X$xdir" = "X$libobj"; then
+-# xdir="."
+-# else
+-# xdir="$xdir"
+-# fi
+-# baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+-# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+-# $show "(cd $xdir && $LN_S $oldobj $baseobj)"
+-# $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
++ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
--AC_CHECK_LIB(lieee,main,have_ieee=1,have_ieee=0)
- if test "$have_ieee" = "0" ; then
- TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
- fi
-@@ -1889,15 +1904,18 @@
+ if test -n "$gentop"; then
+- $show "${rm}r $gentop"
+- $run ${rm}r $gentop
++ func_show_eval '${RM}r "$gentop"'
+ fi
- # the time handling for unixtime, add timezone
+- exit 0
++ exit $EXIT_SUCCESS
+ ;;
--AC_MSG_CHECKING([alloca])
--AC_TRY_RUN([int main() { exit(alloca(500) != NULL ? 0 : 1);}],
-+# alloca
-+
-+AC_MSG_CHECKING([for alloca])
-+AC_RUN_IFELSE([AC_LANG_PROGRAM([],[[exit(alloca(500) != NULL ? 0 : 1);]])],
- ,gcl_ok=yes, gcl_ok=no,gcl_ok=no)
- if test $gcl_ok = yes ; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_ALLOCA)
- else
-- AC_TRY_RUN([#include <alloca.h>
-- int main() { exit(alloca(500) != NULL ? 0 : 1);}],
-+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-+ #include <alloca.h>
-+ ]],[[exit(alloca(500) != NULL ? 0 : 1);]])],
- ,gcl_ok=yes, gcl_ok=no,gcl_ok=no)
- if test $gcl_ok = yes ; then
- AC_MSG_RESULT(yes)
-@@ -1916,8 +1934,6 @@
+ prog)
+ case $host in
+- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
++ *cygwin*) func_stripname '' '.exe' "$output"
++ output=$func_stripname_result.exe;;
+ esac
+- if test -n "$vinfo"; then
+- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+- fi
++ test -n "$vinfo" && \
++ func_warning "\`-version-info' is ignored for programs"
+- if test -n "$release"; then
+- $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+- fi
++ test -n "$release" && \
++ func_warning "\`-release' is ignored for programs"
+- if test "$preload" = yes; then
+- if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+- test "$dlopen_self_static" = unknown; then
+- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+- fi
+- fi
++ 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."
--# alloca
--
- # dlopen etc
- # idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
- # then dlload("foo.o") a lisp file can refer to things in libX.so
-@@ -1941,7 +1957,7 @@
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
++ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
++ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
- # redhat/cygnus released for some reason a buggy version of gcc,
- # which no one else released. Catch that here.
--AC_MSG_CHECKING([Checking for buggy gcc version from redhat])
-+AC_MSG_CHECKING([for buggy gcc version from redhat])
- if 2>&1 $CC -v | fgrep "gcc version 2.96" > /dev/null
- then
- BROKEN_O4_OPT=1
-@@ -1976,7 +1992,8 @@
- if test -f h/$use.defs ; then
+- compile_command="$compile_command $compile_deplibs"
+- finalize_command="$finalize_command $finalize_deplibs"
++ 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"
- AC_SUBST(use)
-- AC_OUTPUT(makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp )
-+ AC_CONFIG_FILES(makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp )
-+ AC_OUTPUT
- echo makedefc
- cat makedefc
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+@@ -3549,7 +8753,7 @@
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir" ;;
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ fi
+@@ -3568,25 +8772,32 @@
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+- rpath="$rpath $flag"
++ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+- *) perm_rpath="$perm_rpath $libdir" ;;
++ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
++ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+- *) dllsearchpath="$dllsearchpath:$libdir";;
++ ::) dllsearchpath=$libdir;;
++ *) func_append dllsearchpath ":$libdir";;
++ esac
++ case :$dllsearchpath: in
++ *":$testbindir:"*) ;;
++ ::) dllsearchpath=$testbindir;;
++ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+@@ -3612,18 +8823,18 @@
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+- rpath="$rpath $flag"
++ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
++ *) func_append finalize_perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+@@ -3635,227 +8846,57 @@
+ fi
+ finalize_rpath="$rpath"
---- ./configure.orig 2012-01-09 20:21:02.000000000 -0700
-+++ ./configure 2012-01-09 20:41:41.703495184 -0700
-@@ -651,10 +651,10 @@
- XMKMF
- GMPDIR
- GMP
-+MAKEINFO
- HAVE_MALLOC_ZONE_MEMALIGN
- EGREP
- GREP
--MAKEINFO
- AWK
- CPP
- OBJEXT
-@@ -4023,7 +4023,14 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int main() {return 0;}
-+
-+int
-+main ()
-+{
-+return 0;
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- TCFLAGS="$TCFLAGS $TMPF";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-@@ -4269,51 +4276,6 @@
- $as_echo_n "checking system version (for dynamic loading)... " >&6; }
- if machine=`uname -m` ; then true; else machine=unknown ; fi
+- dlsyms=
+- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+- if test -n "$NM" && test -n "$global_symbol_pipe"; then
+- dlsyms="${outputname}S.c"
+- else
+- $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+- fi
++ 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
--for ac_prog in makeinfo
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
--$as_echo_n "checking for $ac_word... " >&6; }
--if ${ac_cv_prog_MAKEINFO+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- if test -n "$MAKEINFO"; then
-- ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-- ac_cv_prog_MAKEINFO="$ac_prog"
-- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
-- done
--IFS=$as_save_IFS
+- if test -n "$dlsyms"; then
+- case $dlsyms in
+- "") ;;
+- *.c)
+- # Discover the nlist of each of the dlfiles.
+- nlist="$output_objdir/${outputname}.nm"
-
--fi
--fi
--MAKEINFO=$ac_cv_prog_MAKEINFO
--if test -n "$MAKEINFO"; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
--$as_echo "$MAKEINFO" >&6; }
--else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--$as_echo "no" >&6; }
--fi
+- $show "$rm $nlist ${nlist}S ${nlist}T"
+- $run $rm "$nlist" "${nlist}S" "${nlist}T"
-
+- # Parse the name list into a source file.
+- $show "creating $output_objdir/$dlsyms"
-
-- test -n "$MAKEINFO" && break
--done
--test -n "$MAKEINFO" || MAKEINFO=""false""
+- test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+-/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+-/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
-
+-#ifdef __cplusplus
+-extern \"C\" {
+-#endif
-
+-/* Prevent the only kind of declaration conflicts we can make. */
+-#define lt_preloaded_symbols some_other_symbol
-
- if test -f /usr/lib/NextStep/software_version; then
- system=NEXTSTEP-`${AWK} '/3/,/3/' /usr/lib/NextStep/software_version`
- else
-@@ -4711,22 +4673,29 @@
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_sysconf" >&5
- $as_echo "$ac_cv_lib_c_sysconf" >&6; }
- if test "x$ac_cv_lib_c_sysconf" = xyes; then :
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for _SC_CLK_TCK\"" >&5
--$as_echo_n "checking \"for _SC_CLK_TCK\"... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _SC_CLK_TCK" >&5
-+$as_echo_n "checking for _SC_CLK_TCK... " >&6; }
- if test "$cross_compiling" = yes; then :
- hz=0
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <unistd.h>
-+
-+ #include <unistd.h>
- #include <stdio.h>
-- int
-- main() {
-+
-+int
-+main ()
-+{
-+
- FILE *fp=fopen("conftest1","w");
- fprintf(fp,"%lu\n",sysconf(_SC_CLK_TCK));
- fclose(fp);
- return 0;
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- hz=`cat conftest1`
-@@ -4750,6 +4719,117 @@
+-/* External symbol declarations for the compiler. */\
+-"
+-
+- if test "$dlself" = yes; then
+- $show "generating symbol list for \`$output'"
+-
+- test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+-
+- # Add our own program objects to the symbol list.
+- progfiles="$objs$old_deplibs"
+- for arg in $progfiles; do
+- $show "extracting global C symbols from \`$arg'"
+- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+- done
+-
+- if test -n "$exclude_expsyms"; then
+- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+- $run eval '$mv "$nlist"T "$nlist"'
+- fi
+-
+- if test -n "$export_symbols_regex"; then
+- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+- $run eval '$mv "$nlist"T "$nlist"'
+- fi
+-
+- # Prepare the list of exported symbols
+- if test -z "$export_symbols"; then
+- export_symbols="$output_objdir/$output.exp"
+- $run $rm $export_symbols
+- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+- else
+- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+- $run eval 'mv "$nlist"T "$nlist"'
+- fi
+- fi
+-
+- for arg in $dlprefiles; do
+- $show "extracting global C symbols from \`$arg'"
+- name=`echo "$arg" | sed -e 's%^.*/%%'`
+- $run eval 'echo ": $name " >> "$nlist"'
+- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+- done
+-
+- if test -z "$run"; then
+- # 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" | sort +2 | 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/$dlsyms"'
+- else
+- echo '/* NONE */' >> "$output_objdir/$dlsyms"
+- fi
+-
+- $echo >> "$output_objdir/$dlsyms" "\
+-
+-#undef lt_preloaded_symbols
+-
+-#if defined (__STDC__) && __STDC__
+-# define lt_ptr_t void *
+-#else
+-# define lt_ptr_t char *
+-# define const
+-#endif
+-
+-/* The mapping between symbol names and symbols. */
+-const struct {
+- const char *name;
+- lt_ptr_t address;
+-}
+-lt_preloaded_symbols[] =
+-{\
+-"
+-
+- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
+- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
+- < "$nlist" >> "$output_objdir/$dlsyms"
+-
+- $echo >> "$output_objdir/$dlsyms" "\
+- {0, (lt_ptr_t) 0}
+-};
+-
+-/* This works around a problem in FreeBSD linker */
+-#ifdef FREEBSD_WORKAROUND
+-static const void *lt_preloaded_setup() {
+- return lt_preloaded_symbols;
+-}
+-#endif
+-
+-#ifdef __cplusplus
+-}
+-#endif\
+-"
+- fi
+-
+- pic_flag_for_symtable=
+- case $host in
+- # compiling the symbol table file with pic_flag works around
+- # a FreeBSD bug that causes programs to crash when -lm is
+- # linked before any other PIC object. But we must not use
+- # pic_flag when linking with -static. The problem exists in
+- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+- case "$compile_command " in
+- *" -static "*) ;;
+- *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+- esac;;
+- *-*-hpux*)
+- case "$compile_command " in
+- *" -static "*) ;;
+- *) pic_flag_for_symtable=" $pic_flag";;
+- esac
+- esac
+-
+- # Now compile the dynamic symbol file.
+- $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+- $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+-
+- # Clean up the generated files.
+- $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+- $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+-
+- # Transform the symbol file into the correct name.
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- ;;
+- *)
+- $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+- exit 1
+- ;;
+- 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.
++ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+- # Nullify the symbol file.
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
++ # template prelinking step
++ if test -n "$prelink_cmds"; then
++ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+- if test $need_relink = no || test "$build_libtool_libs" != yes; then
++ 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 "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
++ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-+$as_echo_n "checking for egrep... " >&6; }
-+if ${ac_cv_path_EGREP+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-+ then ac_cv_path_EGREP="$GREP -E"
-+ else
-+ if test -z "$EGREP"; then
-+ ac_path_EGREP_found=false
-+ # Loop through the user's path and test for each of PROGNAME-LIST
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_prog in egrep; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-+# Check for GNU ac_path_EGREP and select it if it is found.
-+ # Check for GNU $ac_path_EGREP
-+case `"$ac_path_EGREP" --version 2>&1` in
-+*GNU*)
-+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-+*)
-+ ac_count=0
-+ $as_echo_n 0123456789 >"conftest.in"
-+ while :
-+ do
-+ cat "conftest.in" "conftest.in" >"conftest.tmp"
-+ mv "conftest.tmp" "conftest.in"
-+ cp "conftest.in" "conftest.nl"
-+ $as_echo 'EGREP' >> "conftest.nl"
-+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-+ as_fn_arith $ac_count + 1 && ac_count=$as_val
-+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-+ # Best one so far, save it but keep looking for a better one
-+ ac_cv_path_EGREP="$ac_path_EGREP"
-+ ac_path_EGREP_max=$ac_count
-+ fi
-+ # 10*(2^10) chars as input seems more than enough
-+ test $ac_count -gt 10 && break
-+ done
-+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-+esac
-+
-+ $ac_path_EGREP_found && break 3
-+ done
-+ done
-+ done
-+IFS=$as_save_IFS
-+ if test -z "$ac_cv_path_EGREP"; then
-+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-+ fi
-+else
-+ ac_cv_path_EGREP=$EGREP
-+fi
-+
-+ fi
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-+$as_echo "$ac_cv_path_EGREP" >&6; }
-+ EGREP="$ac_cv_path_EGREP"
-+
-+
-+for ac_prog in makeinfo
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MAKEINFO+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test -n "$MAKEINFO"; then
-+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_MAKEINFO="$ac_prog"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MAKEINFO=$ac_cv_prog_MAKEINFO
-+if test -n "$MAKEINFO"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
-+$as_echo "$MAKEINFO" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+ test -n "$MAKEINFO" && break
-+done
-+test -n "$MAKEINFO" || MAKEINFO=""false""
-+
-+
+ # We have no uninstalled library dependencies, so finalize right now.
+- $show "$link_command"
+- $run eval "$link_command"
+- status=$?
++ exit_status=0
++ func_show_eval "$link_command" 'exit_status=$?'
- #MY_SUBDIRS=
+- # Delete the generated files.
+- if test -n "$dlsyms"; then
+- $show "$rm $output_objdir/${outputname}S.${objext}"
+- $run $rm "$output_objdir/${outputname}S.${objext}"
++ 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
-@@ -4803,25 +4883,36 @@
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_init" >&5
- $as_echo "$ac_cv_lib_gmp___gmpz_init" >&6; }
- if test "x$ac_cv_lib_gmp___gmpz_init" = xyes; then :
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for external gmp version\"" >&5
--$as_echo_n "checking \"for external gmp version\"... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for external gmp version" >&5
-+$as_echo_n "checking for external gmp version... " >&6; }
- if test "$cross_compiling" = yes; then :
-- echo "Cannot use dynamic gmp lib"
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cannot use dynamic gmp lib" >&5
-+$as_echo "Cannot use dynamic gmp lib" >&6; }
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <gmp.h>
-- int main() {
-+
-+ #include <gmp.h>
-+
-+int
-+main ()
-+{
+- exit $status
+- fi
++ # Delete the generated files.
++ if test -f "$output_objdir/${outputname}S.${objext}"; then
++ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
++ fi
+
+- if test -n "$shlibpath_var"; then
+- # We should set the shlibpath_var
+- rpath=
+- for dir in $temp_rpath; do
+- case $dir in
+- [\\/]* | [A-Za-z]:[\\/]*)
+- # Absolute path.
+- rpath="$rpath$dir:"
+- ;;
+- *)
+- # Relative path: add a thisdir entry.
+- rpath="$rpath\$thisdir/$dir:"
+- ;;
+- esac
+- done
+- temp_rpath="$rpath"
++ exit $exit_status
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+@@ -3872,7 +8913,7 @@
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+@@ -3880,7 +8921,7 @@
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+@@ -3890,13 +8931,19 @@
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
++ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+- $run $rm $output
++ $opt_dry_run || $RM $output
+ # Link the executable and exit
+- $show "$link_command"
+- $run eval "$link_command" || exit $?
+- exit 0
++ func_show_eval "$link_command" 'exit $?'
+
- #if __GNU_MP_VERSION == 4 || __GNU_MP_VERSION == 5
- return 0;
- #else
- return -1;
- #endif
-- }
++ 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
+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- # MPFILES=$GMPDIR/mpn/mul_n.o
- # PATCHED_SYMBOLS=__gmpn_toom3_mul_n
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 4/5" >&5
-+$as_echo "4/5" >&6; }
- MPFILES=
- PATCHED_SYMBOLS=
- # if test "$use" = "m68k-linux" ; then
-@@ -4834,7 +4925,8 @@
- MP_INCLUDE=`cpp foo.c | grep /gmp.h | head -n 1 | $AWK '{print $3}' | tr -d '"'`
- rm -f foo.c
- else
-- echo "Cannot use dynamic gmp lib"
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cannot use dynamic gmp lib" >&5
-+$as_echo "Cannot use dynamic gmp lib" >&6; }
- fi
- rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-@@ -4894,8 +4986,8 @@
++ exit $EXIT_SUCCESS
+ fi
- fi
+ if test "$hardcode_action" = relink; then
+@@ -3904,13 +8951,13 @@
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for leading underscore in object symbols\"" >&5
--$as_echo_n "checking \"for leading underscore in object symbols\"... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for leading underscore in object symbols" >&5
-+$as_echo_n "checking for leading underscore in object symbols... " >&6; }
- cat>foo.c <<EOFF
- #include <math.h>
- #include <stdio.h>
-@@ -4906,45 +4998,53 @@
- LEADING_UNDERSCORE=1
- $as_echo "#define LEADING_UNDERSCORE 1" >>confdefs.h
+- $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+- $echo "$modename: \`$output' will be relinked during installation" 1>&2
++ 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 "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
++ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+@@ -3922,246 +8969,99 @@
+ fi
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
--$as_echo "\"yes\"" >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
- else
- LEADING_UNDERSCORE=""
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
--$as_echo "\"no\"" >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
- fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for GNU ld option -Map\"" >&5
--$as_echo_n "checking \"for GNU ld option -Map\"... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld option -Map" >&5
-+$as_echo_n "checking for GNU ld option -Map... " >&6; }
- touch map
- $CC -o foo -Wl,-Map map foo.o >/dev/null 2>&1
- if test `cat map | wc -l` != "0" ; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
--$as_echo "\"yes\"" >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
- $as_echo "#define HAVE_GNU_LD 1" >>confdefs.h
+ # Replace the output file specification.
+- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
++ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
- GNU_LD=1
- else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
--$as_echo "\"no\"" >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
- GNU_LD=
- fi
- rm -f foo.c foo.o foo map
+ # Delete the old output files.
+- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
++ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"for size of gmp limbs\"" >&5
--$as_echo_n "checking \"for size of gmp limbs\"... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for size of gmp limbs" >&5
-+$as_echo_n "checking for size of gmp limbs... " >&6; }
- if test "$cross_compiling" = yes; then :
- mpsize=0
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-+
-+ #include <stdio.h>
- #include "$MP_INCLUDE"
-- int main() {
-+
-+int
-+main ()
-+{
-+
- FILE *fp=fopen("conftest1","w");
- fprintf(fp,"%u",sizeof(mp_limb_t));
- fclose(fp);
- return 0;
-- }
+- $show "$link_command"
+- $run eval "$link_command" || exit $?
++ func_show_eval "$link_command" 'exit $?'
+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- mpsize=`cat conftest1`
-@@ -4956,8 +5056,7 @@
- fi
++ 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
- if test "$mpsize" = "0" ; then
-- echo "Cannot determine mpsize"
+ # Now create the wrapper script.
+- $show "creating $output"
++ 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}\" || unset $var || { $var=; export $var; }; }; $relink_command"
++ 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
+- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+- relink_command="$var=\"$var_value\"; export $var; $relink_command"
++ 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+- fi
+-
+- # Quote $echo for shipping.
+- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+- case $0 in
+- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+- *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+- esac
+- qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+- else
+- qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
++ relink_command="(cd `pwd`; $relink_command)"
++ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ fi
+
+- # Only actually do things if our run command is non-null.
+- if test -z "$run"; then
++ # Only actually do things if not in dry run mode.
++ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
++ *.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 ;;
++ *cygwin*)
++ exeext=.exe
++ func_stripname '' '.exe' "$outputname"
++ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+- $rm $output
+- trap "$rm $output; exit 1" 1 2 15
+-
+- $echo > $output "\
+-#! $SHELL
+-
+-# $output - temporary wrapper script for $objdir/$outputname
+-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+-#
+-# The $output program cannot be directly executed until all the libtool
+-# libraries that it depends on are installed.
+-#
+-# This wrapper script should never be moved out of the build directory.
+-# If it is, it will not operate correctly.
+-
+-# Sed substitution that helps us do robust quoting. It backslashifies
+-# metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
+-sed_quote_subst='$sed_quote_subst'
+-
+-# The HP-UX ksh and POSIX shell print the target directory to stdout
+-# if CDPATH is set.
+-if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+-
+-relink_command=\"$relink_command > /dev/null 2>&1\"
+-
+-# This environment variable determines our operation mode.
+-if test \"\$libtool_install_magic\" = \"$magic\"; then
+- # install mode needs the following variable:
+- notinst_deplibs='$notinst_deplibs'
+-else
+- # When we are sourced in execute mode, \$file and \$echo are already set.
+- if test \"\$libtool_execute_magic\" != \"$magic\"; then
+- echo=\"$qecho\"
+- file=\"\$0\"
+- # Make sure echo works.
+- if test \"X\$1\" = X--no-reexec; then
+- # Discard the --no-reexec flag, and continue.
+- shift
+- elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+- # Yippee, \$echo works!
+- :
+- else
+- # Restart under the correct shell, and then maybe \$echo will work.
+- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+- fi
+- fi\
+-"
+- $echo >> $output "\
+-
+- # Find the directory that this script lives in.
+- thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+- done
+-
+- # Try to get the absolute directory name.
+- absdir=\`cd \"\$thisdir\" && pwd\`
+- test -n \"\$absdir\" && thisdir=\"\$absdir\"
+-"
+-
+- if test "$fast_install" = yes; then
+- echo >> $output "\
+- program=lt-'$outputname'$exeext
+- progdir=\"\$thisdir/$objdir\"
+-
+- if test ! -f \"\$progdir/\$program\" || \\
+- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/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 >> $output "\
+-
+- # 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
-+ as_fn_error 1 "Cannot determine mpsize" "$LINENO" 5
- fi
- cat >>confdefs.h <<_ACEOF
- #define MP_LIMB_BYTES $mpsize
-@@ -4966,23 +5065,31 @@
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mpsize" >&5
- $as_echo "$mpsize" >&6; }
-
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"_SHORT_LIMB\"" >&5
--$as_echo_n "checking \"_SHORT_LIMB\"... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking _SHORT_LIMB" >&5
-+$as_echo_n "checking _SHORT_LIMB... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-+
-+ #include <stdio.h>
- #include "$MP_INCLUDE"
-- int main() {
-+
-+int
-+main ()
-+{
-+
- #ifdef _SHORT_LIMB
- return 0;
- #else
- return 1;
- #endif
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- $as_echo "#define __SHORT_LIMB 1" >>confdefs.h
-@@ -4996,23 +5103,31 @@
- conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
-
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"_LONG_LONG_LIMB\"" >&5
--$as_echo_n "checking \"_LONG_LONG_LIMB\"... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking _LONG_LONG_LIMB" >&5
-+$as_echo_n "checking _LONG_LONG_LIMB... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-+
-+ #include <stdio.h>
- #include "$MP_INCLUDE"
-- int main() {
-+
-+int
-+main ()
-+{
-+
- #ifdef _LONG_LONG_LIMB
- return 0;
- #else
- return 1;
- #endif
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- $as_echo "#define __LONG_LONG_LIMB 1" >>confdefs.h
-@@ -5351,8 +5466,7 @@
- fi
+- fi
+- fi
+-
+- $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+- { $rm \"\$progdir/\$program\";
+- $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+- $rm \"\$progdir/\$file\"
+- fi"
+- else
+- echo >> $output "\
+- program='$outputname'
+- progdir=\"\$thisdir/$objdir\"
+-"
+- fi
+-
+- echo >> $output "\
+-
+- if test -f \"\$progdir/\$program\"; then"
+-
+- # Export our shlibpath_var if we have one.
+- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+- $echo >> $output "\
+- # Add our own library path to $shlibpath_var
+- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+-
+- # Some systems cannot cope with colon-terminated $shlibpath_var
+- # The second colon is a workaround for a bug in BeOS R4 sed
+- $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+-
+- export $shlibpath_var
+-"
+- fi
++ 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
- if test "$have_dl" = "0" ; then
-- echo "Cannot find dlopen in -dl"
-- exit 1
-+ as_fn_error 1 "Cannot find dlopen in -dl" "$LINENO" 5
- fi
+- # fixup the dll searchpath if we need to.
+- if test -n "$dllsearchpath"; then
+- $echo >> $output "\
+- # Add the dll search path components to the executable PATH
+- PATH=$dllsearchpath:\$PATH
+-"
+- fi
++ func_emit_cwrapperexe_src > $cwrappersource
- TLIBS="$TLIBS -ldl -rdynamic"
-@@ -5410,9 +5524,17 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#define IN_GCC
-+
-+ #define IN_GCC
- #include <bfd.h>
-- int main() { symbol_info t; return 0;}
-+
-+int
-+main ()
-+{
-+symbol_info t; return 0;
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-@@ -5423,10 +5545,18 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#define CONST const
-+
-+ #define CONST const
- #define IN_GCC
- #include <bfd.h>
-- int main() {symbol_info t; return 0;}
-+
-+int
-+main ()
-+{
-+symbol_info t; return 0;
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-@@ -5459,18 +5589,26 @@
- # BFD boolean syntax
- #
+- $echo >> $output "\
+- if test \"\$libtool_execute_magic\" != \"$magic\"; then
+- # Run the actual program with our arguments.
+-"
+- case $host in
+- # win32 systems need to use the prog path for dll
+- # lookup to work
+- *-*-cygwin* | *-*-pw32*)
+- $echo >> $output "\
+- exec \$progdir/\$program \${1+\"\$@\"}
+-"
+- ;;
++ # 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
++ }
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for useable bfd_boolean" >&5
--$as_echo_n "checking for useable bfd_boolean... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable bfd_boolean" >&5
-+$as_echo_n "checking for usable bfd_boolean... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#define IN_GCC
-+
-+ #define IN_GCC
- #include <bfd.h>
- bfd_boolean foo() {return FALSE;}
-- int main() {return 0;}
-+
-+int
-+main ()
-+{
-+return 0;
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-@@ -5499,9 +5637,17 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <bfd.h>
-+
-+ #include <bfd.h>
- #include <bfdlink.h>
-- int main() {struct bfd_link_info i;i.output_bfd=0;return 0;}
-+
-+int
-+main ()
-+{
-+struct bfd_link_info i;i.output_bfd=0;return 0;
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-@@ -5783,26 +5929,34 @@
- # work around MSYS pwd result incompatibility
- if test "$use" = "mingw" ; then
- if test "$cross_compiling" = yes; then :
-- echo Cannot find sizeof struct contblock;exit 1
-+ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-+
-+ #include <stdio.h>
- #define EXTER
- #include "$MP_INCLUDE"
- #include "h/enum.h"
- #include "h/object.h"
-- int main(int argc,char **argv,char **envp) {
-+
-+int
-+main ()
-+{
-+
- FILE *f=fopen("conftest1","w");
- fprintf(f,"%u",sizeof(struct contblock));
- fclose(f);
- return 0;
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- sizeof_contblock=`cat conftest1`
- else
-- echo Cannot find sizeof struct contblock;exit 1
-+ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
- fi
- rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-@@ -5810,26 +5964,34 @@
+- # Backslashes separate directories on plain windows
+- *-*-mingw | *-*-os2*)
+- $echo >> $output "\
+- exec \$progdir\\\\\$program \${1+\"\$@\"}
+-"
++ # 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
- else
- if test "$cross_compiling" = yes; then :
-- echo Cannot find sizeof struct contblock;exit 1
-+ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-+
-+ #include <stdio.h>
- #define EXTER
- #include "$MP_INCLUDE"
- #include "`pwd`/h/enum.h"
- #include "`pwd`/h/object.h"
-- int main(int argc,char **argv,char **envp) {
-+
-+int
-+main ()
-+{
-+
- FILE *f=fopen("conftest1","w");
- fprintf(f,"%u",sizeof(struct contblock));
- fclose(f);
- return 0;
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- sizeof_contblock=`cat conftest1`
- else
-- echo Cannot find sizeof struct contblock;exit 1
-+ as_fn_error 1 "Cannot find sizeof struct contblock" "$LINENO" 5
- fi
- rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-@@ -5856,7 +6018,11 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int main () {
-+
-+int
-+main ()
-+{
-+
- /* Are we little or big endian? Adapted from Harbison&Steele. */
- union
- {
-@@ -5865,6 +6031,9 @@
- } u;
- u.d = 1.0;
- return u.l[sizeof(double)/sizeof(int)-1] ? 0 : 1;
-+
-+ ;
-+ return 0;
- }
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
-@@ -5895,15 +6064,23 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <unistd.h>
-- #include <stdio.h>
-- int main() {
-+
-+ #include <unistd.h>
-+ #include <stdio.h>
-+
-+int
-+main ()
-+{
-+
- FILE *f;
- if (!(f=fopen("conftest1","w")))
- return -1;
- fprintf(f,"%u",sbrk(0));
- return 0;
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- HAVE_SBRK=1
-@@ -5930,14 +6107,22 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <sys/personality.h>
-- #include <stdio.h>
-- int main(int argc,char *argv[],char *envp[]) {
-+
-+ #include <sys/personality.h>
-+ #include <stdio.h>
-+
-+int
-+main ()
-+{
-+
- FILE *f;
- if (!(f=fopen("conftest1","w"))) return -1;
- fprintf(f,"%x",ADDR_NO_RANDOMIZE);
- return 0;
-- }
-+
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- ADDR_NO_RANDOMIZE=`cat conftest1`
-@@ -5967,7 +6152,8 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--void gprof_cleanup() {};
+- *)
+- $echo >> $output "\
+- # Export the path to the program.
+- PATH=\"\$progdir:\$PATH\"
+- export PATH
+-
+- exec \$program \${1+\"\$@\"}
+-"
++ func_emit_wrapper no > $output
++ chmod +x $output
+ ;;
+ esac
+- $echo >> $output "\
+- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+- exit 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\
+-"
+- chmod +x $output
+- fi
+- exit 0
++ }
++ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+@@ -4169,7 +9069,7 @@
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+- oldobjs="$libobjs_save"
++ oldobjs="$libobjs_save $symfileobj"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+@@ -4177,146 +9077,177 @@
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+- oldobjs="$objs$old_deplibs $non_pic_objects"
++ 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"
+- $show "${rm}r $gentop"
+- $run ${rm}r "$gentop"
+- $show "$mkdir $gentop"
+- $run $mkdir "$gentop"
+- status=$?
+- if test $status -ne 0 && test ! -d "$gentop"; then
+- exit $status
+- fi
+- generated="$generated $gentop"
+-
+- # Add in members from convenience archives.
+- for xlib in $addlibs; do
+- # Extract the objects.
+- case $xlib in
+- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+- *) xabs=`pwd`"/$xlib" ;;
+- esac
+- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+- xdir="$gentop/$xlib"
+-
+- $show "${rm}r $xdir"
+- $run ${rm}r "$xdir"
+- $show "$mkdir $xdir"
+- $run $mkdir "$xdir"
+- status=$?
+- if test $status -ne 0 && test ! -d "$xdir"; then
+- exit $status
+- fi
+- $show "(cd $xdir && $AR x $xabs)"
+- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
++ func_append generated " $gentop"
+
+- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print | $NL2SP`
+- done
++ 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
+- eval cmds=\"$old_archive_from_new_cmds\"
++ cmds=$old_archive_from_new_cmds
+ else
+-# # Ensure that we have .o objects in place in case we decided
+-# # not to build a shared library, and have fallen back to building
+-# # static libs even though --disable-static was passed!
+-# for oldobj in $oldobjs; do
+-# if test ! -f $oldobj; then
+-# xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+-# if test "X$xdir" = "X$oldobj"; then
+-# xdir="."
+-# else
+-# xdir="$xdir"
+-# fi
+-# baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+-# obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+-# $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+-# $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+-# fi
+-# done
+
+- eval cmds=\"$old_archive_cmds\"
++ # Add any objects from preloaded convenience libraries
++ if test -n "$dlprefiles"; then
++ gentop="$output_objdir/${outputname}x"
++ func_append generated " $gentop"
+
+- if len=`expr "X$cmds" : ".*"` &&
+- test $len -le $max_cmd_len; then
+- :
+- else
+- # the command line is too long to link in one step, link in parts
+- $echo "using piecewise archive linking..."
++ func_extract_archives $gentop $dlprefiles
++ func_append oldobjs " $func_extract_archives_result"
++ fi
+
-+ void gprof_cleanup() {}
- int main(int argc,char *argv[],char *envp[]) {
- #include "h/unrandomize.h"
- return 0;}
-@@ -5999,8 +6185,9 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-- void gprof_cleanup() {};
++ # 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
++ eval cmds=\"$old_archive_cmds\"
+
-+ #include <stdio.h>
-+ void gprof_cleanup() {}
- int main(int argc,char * argv[],char * envp[]) {
- FILE *f;
- #ifdef CAN_UNRANDOMIZE_SBRK
-@@ -6020,17 +6207,16 @@
- fi
++ 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
+- for obj in $save_oldobjs
+- do
+- oldobjs="$objlist $obj"
+- objlist="$objlist $obj"
+- eval test_cmds=\"$old_archive_cmds\"
+- if len=`expr "X$test_cmds" : ".*"` &&
+- test $len -le $max_cmd_len; then
+- :
+- else
+- # the above command should be used before it gets too long
+- oldobjs=$objlist
++ 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=
+- fi
+- done
++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
++ objlist=
++ len=$len0
++ fi
++ done
+ RANLIB=$save_RANLIB
+- oldobjs=$objlist
+- eval cmds=\"\$concat_cmds~$old_archive_cmds\"
+- fi
++ oldobjs=$objlist
++ if test "X$oldobjs" = "X" ; then
++ eval cmds=\"\$concat_cmds\"
++ else
++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
++ fi
++ fi
+ fi
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
++ func_execute_cmds "$cmds" 'exit $?'
+ done
- if test "$SBRK" = "0" ; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot trap sbrk" >&5
--$as_echo "cannot trap sbrk" >&6; }
-- exit 1
-+ as_fn_error 1 "cannot trap sbrk" "$LINENO" 5
- fi
- if test "$cross_compiling" = yes; then :
- SBRK1=0
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-- void gprof_cleanup() {};
-+
-+ #include <stdio.h>
-+ void gprof_cleanup() {}
- int main(int argc,char * argv[],char * envp[]) {
- FILE *f;
- #ifdef CAN_UNRANDOMIZE_SBRK
-@@ -6050,9 +6236,7 @@
- fi
+- if test -n "$generated"; then
+- $show "${rm}r$generated"
+- $run ${rm}r$generated
+- fi
++ test -n "$generated" && \
++ func_show_eval "${RM}r$generated"
- if test "$SBRK1" = "0" ; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot trap sbrk" >&5
--$as_echo "cannot trap sbrk" >&6; }
-- exit 1
-+ as_fn_error 1 "cannot trap sbrk" "$LINENO" 5
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+- $show "creating $output"
++ 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}\" || unset $var || { $var=; export $var; }; }; $relink_command"
++ 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
+- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+- relink_command="$var=\"$var_value\"; export $var; $relink_command"
++ func_quote_for_eval "$var_value"
++ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
fi
- if test "$SBRK" = "$SBRK1" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-@@ -6076,14 +6260,23 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <stdio.h>
-+
-+ #include <stdio.h>
- #include <unistd.h>
--int main() {size_t i=getpagesize(),j;
-+
-+int
-+main ()
-+{
-+
-+ size_t i=getpagesize(),j;
- FILE *fp=fopen("conftest1","w");
- for (j=0;i>>=1;j++);
- if (j<12) {printf("pagewidth %u is too small\n",j);return -1;}
- fprintf(fp,"%u",j);
-- return 0;}
-+ return 0;
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- PAGEWIDTH=`cat conftest1`
-@@ -6105,17 +6298,18 @@
+ done
+ # Quote the link command for shipping.
+- tagopts=
+- for tag in $taglist; do
+- tagopts="$tagopts --tag $tag"
+- done
+- relink_command="(cd `pwd`; $SHELL $0$tagopts --mode=relink $libtool_args)"
+- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
++ 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
- old_LDFLAGS="$LDFLAGS"
- LDFLAGS="$TLDFLAGS"
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"finding DBEGIN\"" >&5
--$as_echo_n "checking \"finding DBEGIN\"... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking finding DBEGIN" >&5
-+$as_echo_n "checking finding DBEGIN... " >&6; }
- if test "$cross_compiling" = yes; then :
- dbegin=0
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
+ # Only create the output if not a dry run.
+- if test -z "$run"; then
++ $opt_dry_run || {
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+@@ -4328,50 +9259,108 @@
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+- name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+- if test -z "$libdir"; then
+- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+- exit 1
+- fi
+- newdependency_libs="$newdependency_libs $libdir/$name"
++ func_basename "$deplib"
++ name="$func_basename_result"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++ test -z "$libdir" && \
++ func_fatal_error "\`$deplib' is not a valid libtool archive"
++ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+- *) newdependency_libs="$newdependency_libs $deplib" ;;
++ -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=
+
- #include <stdio.h>
-- #include <stdlib.h>
-+#include <stdlib.h>
-
--void gprof_cleanup() {};
-+void gprof_cleanup() {}
- int
- main(int argc,char * argv[],char *envp[])
- {
-@@ -6160,21 +6354,28 @@
- LDFLAGS="$old_LDFLAGS"
-
+ for lib in $dlfiles; do
+- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+- if test -z "$libdir"; then
+- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+- exit 1
+- fi
+- newdlfiles="$newdlfiles $libdir/$name"
++ 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
+- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+- if test -z "$libdir"; then
+- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+- exit 1
+- fi
+- newdlprefiles="$newdlprefiles $libdir/$name"
++ 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
++ $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) tdlname=../bin/$dlname ;;
++ *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 "\
++ $ECHO > $output "\
+ # $outputname - a libtool library file
+-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+ #
+ # Please DO NOT delete this file!
+ # It is necessary for linking the library.
+@@ -4385,9 +9374,15 @@
+ # The name of the static archive.
+ old_library='$old_library'
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"finding CSTACK_ADDRESS\"" >&5
--$as_echo_n "checking \"finding CSTACK_ADDRESS\"... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking finding CSTACK_ADDRESS" >&5
-+$as_echo_n "checking finding CSTACK_ADDRESS... " >&6; }
- if test "$cross_compiling" = yes; then :
- cstack_address=0
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+
- #include <stdio.h>
--main()
++# Linker flags that can not go in dependency_libs.
++inherited_linker_flags='$new_inherited_linker_flags'
+
-+int
-+main ()
- {
+ # Libraries that this one depends upon.
+ dependency_libs='$dependency_libs'
+
++# Names of additional weak libraries provided by this library
++weak_library_names='$weak_libs'
+
- char *b ;
- FILE *fp = fopen("conftest1","w");
- fprintf(fp,"%ld",((long) &b));
- fclose(fp);
- return 0;
+ # Version information for $libname.
+ current=$current
+ age=$age
+@@ -4396,692 +9391,39 @@
+ # Is this an already installed library?
+ installed=$installed
+
++# Should we warn about portability when linking against -modules?
++shouldnotlink=$module
+
-+ ;
-+ return 0;
- }
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
-@@ -6196,8 +6397,8 @@
+ # 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 "\
++ if test "$installed" = no && test "$need_relink" = yes; then
++ $ECHO >> $output "\
+ relink_command=\"$relink_command\""
+ fi
+ done
+- fi
++ }
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+- $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+- ;;
+- esac
+- exit 0
+- ;;
+-
+- # libtool install mode
+- install)
+- modename="$modename: install"
+-
+- # There may be an optional sh(1) argument at the beginning of
+- # install_prog (especially on Windows NT).
+- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+- # Allow the use of GNU shtool's install command.
+- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+- # Aesthetically quote it.
+- arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+- arg="\"$arg\""
+- ;;
+- esac
+- install_prog="$arg "
+- arg="$1"
+- shift
+- else
+- install_prog=
+- arg="$nonopt"
+- fi
+-
+- # The real first argument should be the name of the installation program.
+- # Aesthetically quote it.
+- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+- arg="\"$arg\""
+- ;;
+- esac
+- install_prog="$install_prog$arg"
+-
+- # We need to accept at least all the BSD install flags.
+- dest=
+- files=
+- opts=
+- prev=
+- install_type=
+- isdir=no
+- stripme=
+- for arg
+- do
+- if test -n "$dest"; then
+- files="$files $dest"
+- dest="$arg"
+- continue
+- fi
+-
+- case $arg in
+- -d) isdir=yes ;;
+- -f) prev="-f" ;;
+- -g) prev="-g" ;;
+- -m) prev="-m" ;;
+- -o) prev="-o" ;;
+- -s)
+- stripme=" -s"
+- continue
+- ;;
+- -*) ;;
+-
+- *)
+- # If the previous option needed an argument, then skip it.
+- if test -n "$prev"; then
+- prev=
+- else
+- dest="$arg"
+- continue
+- fi
+- ;;
+- esac
+-
+- # Aesthetically quote the argument.
+- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+- case $arg in
+- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+- arg="\"$arg\""
+- ;;
+- esac
+- install_prog="$install_prog $arg"
+- done
+-
+- if test -z "$install_prog"; then
+- $echo "$modename: you must specify an install program" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- if test -n "$prev"; then
+- $echo "$modename: the \`$prev' option requires an argument" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- if test -z "$files"; then
+- if test -z "$dest"; then
+- $echo "$modename: no file or destination specified" 1>&2
+- else
+- $echo "$modename: you must specify a destination" 1>&2
+- fi
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- # Strip any trailing slash from the destination.
+- dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+-
+- # Check to see that the destination is a directory.
+- test -d "$dest" && isdir=yes
+- if test "$isdir" = yes; then
+- destdir="$dest"
+- destname=
+- else
+- destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+- test "X$destdir" = "X$dest" && destdir=.
+- destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+-
+- # Not a directory, so check to see that there is only one file specified.
+- set dummy $files
+- if test $# -gt 2; then
+- $echo "$modename: \`$dest' is not a directory" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+- fi
+- case $destdir in
+- [\\/]* | [A-Za-z]:[\\/]*) ;;
+- *)
+- for file in $files; do
+- case $file in
+- *.lo) ;;
+- *)
+- $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- ;;
+- esac
+- done
++ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
++ exit $EXIT_SUCCESS
++}
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking \"sizeof long long int\"" >&5
--$as_echo_n "checking \"sizeof long long int\"... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sizeof long long int" >&5
-+$as_echo_n "checking sizeof long long int... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
-@@ -6205,13 +6406,19 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+
- #include <stdio.h>
--main()
-+
-+int
-+main ()
- {
-+
- if (sizeof(long long int) == 2*sizeof(long)) return 0;
- return 1;
--}
+- # 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.
+- staticlibs="$staticlibs $file"
+- ;;
+-
+- *.la)
+- # Check to see that this really is a libtool archive.
+- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+- else
+- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- library_names=
+- old_library=
+- relink_command=
+- # If there is no directory component, then add one.
+- case $file in
+- */* | *\\*) . $file ;;
+- *) . ./$file ;;
+- esac
+-
+- # Add the libdir to current_libdirs if it is the destination.
+- if test "X$destdir" = "X$libdir"; then
+- case "$current_libdirs " in
+- *" $libdir "*) ;;
+- *) current_libdirs="$current_libdirs $libdir" ;;
+- esac
+- else
+- # Note the libdir as a future libdir.
+- case "$future_libdirs " in
+- *" $libdir "*) ;;
+- *) future_libdirs="$future_libdirs $libdir" ;;
+- esac
+- fi
+-
+- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+- test "X$dir" = "X$file/" && dir=
+- dir="$dir$objdir"
+-
+- if test -n "$relink_command"; then
+- $echo "$modename: warning: relinking \`$file'" 1>&2
+- $show "$relink_command"
+- if $run eval "$relink_command"; then :
+- else
+- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+- exit 1
+- fi
+- fi
+-
+- # See the names of the shared library.
+- set dummy $library_names
+- if test -n "$2"; then
+- realname="$2"
+- shift
+- shift
+-
+- srcname="$realname"
+- test -n "$relink_command" && srcname="$realname"T
+-
+- # Install the shared library and build the symlinks.
+- $show "$install_prog $dir/$srcname $destdir/$realname"
+- $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+- if test -n "$stripme" && test -n "$striplib"; then
+- $show "$striplib $destdir/$realname"
+- $run eval "$striplib $destdir/$realname" || exit $?
+- fi
+-
+- if test $# -gt 0; then
+- # Delete the old symlinks, and create new ones.
+- for linkname
+- do
+- if test "$linkname" != "$realname"; then
+- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+- fi
+- done
+- fi
+-
+- # Do each command in the postinstall commands.
+- lib="$destdir/$realname"
+- eval cmds=\"$postinstall_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
+- fi
+-
+- # Install the pseudo-library for information purposes.
+- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+- instname="$dir/$name"i
+- $show "$install_prog $instname $destdir/$name"
+- $run eval "$install_prog $instname $destdir/$name" || exit $?
+-
+- # Maybe install the static library, too.
+- test -n "$old_library" && staticlibs="$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
+- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+- destfile="$destdir/$destfile"
+- fi
+-
+- # Deduce the name of the destination old-style object file.
+- case $destfile in
+- *.lo)
+- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+- ;;
+- *.$objext)
+- staticdest="$destfile"
+- destfile=
+- ;;
+- *)
+- $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- ;;
+- esac
+-
+- # Install the libtool object if requested.
+- if test -n "$destfile"; then
+- $show "$install_prog $file $destfile"
+- $run eval "$install_prog $file $destfile" || exit $?
+- fi
+-
+- # Install the old object if enabled.
+- if test "$build_old_libs" = yes; then
+- # Deduce the name of the old-style object file.
+- staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+-
+- $show "$install_prog $staticobj $staticdest"
+- $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+- fi
+- exit 0
+- ;;
+-
+- *)
+- # Figure out destination file name, if it wasn't already specified.
+- if test -n "$destname"; then
+- destfile="$destdir/$destname"
+- else
+- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+- destfile="$destdir/$destfile"
+- fi
+-
+- # Do a test to see if this is really a libtool program.
+- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+- notinst_deplibs=
+- relink_command=
+-
+- # If there is no directory component, then add one.
+- case $file in
+- */* | *\\*) . $file ;;
+- *) . ./$file ;;
+- esac
+-
+- # Check the variables that should have been set.
+- if test -z "$notinst_deplibs"; then
+- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+- exit 1
+- fi
+-
+- finalize=yes
+- for lib in $notinst_deplibs; do
+- # Check to see that each library is installed.
+- libdir=
+- if test -f "$lib"; then
+- # If there is no directory component, then add one.
+- case $lib in
+- */* | *\\*) . $lib ;;
+- *) . ./$lib ;;
+- esac
+- fi
+- libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+- if test -n "$libdir" && test ! -f "$libfile"; then
+- $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+- finalize=no
+- fi
+- done
+-
+- relink_command=
+- # If there is no directory component, then add one.
+- case $file in
+- */* | *\\*) . $file ;;
+- *) . ./$file ;;
+- esac
+-
+- outputname=
+- if test "$fast_install" = no && test -n "$relink_command"; then
+- if test "$finalize" = yes && test -z "$run"; then
+- tmpdir="/tmp"
+- test -n "$TMPDIR" && tmpdir="$TMPDIR"
+- tmpdir="$tmpdir/libtool-$$"
+- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+- else
+- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+- continue
+- fi
+- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+- outputname="$tmpdir/$file"
+- # Replace the output file specification.
+- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+-
+- $show "$relink_command"
+- if $run eval "$relink_command"; then :
+- else
+- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+- ${rm}r "$tmpdir"
+- continue
+- fi
+- file="$outputname"
+- else
+- $echo "$modename: warning: cannot relink \`$file'" 1>&2
+- fi
+- else
+- # Install the binary that we compiled earlier.
+- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+- fi
+- fi
+-
+-
+- # remove .exe since cygwin /usr/bin/install will append another
+- # one anyways
+- case $install_prog,$host in
+- */usr/bin/install*,*cygwin*)
+- case $file:$destfile in
+- *.exe:*.exe)
+- # this is ok
+- ;;
+- *.exe:*)
+- destfile=$destfile.exe
+- ;;
+- *:*.exe)
+- destfile=`echo $destfile | sed -e 's,.exe$,,'`
+- ;;
+- esac
+- ;;
+- esac
+-
+- $show "$install_prog$stripme $file $destfile"
+- $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+- test -n "$outputname" && ${rm}r "$tmpdir"
+- ;;
+- esac
+- done
+-
+- for file in $staticlibs; do
+- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+-
+- # Set up the ranlib parameters.
+- oldlib="$destdir/$name"
+-
+- $show "$install_prog $file $oldlib"
+- $run eval "$install_prog \$file \$oldlib" || exit $?
+-
+- if test -n "$stripme" && test -n "$striplib"; then
+- $show "$old_striplib $oldlib"
+- $run eval "$old_striplib $oldlib" || exit $?
+- fi
+-
+- # Do each command in the postinstall commands.
+- eval cmds=\"$old_postinstall_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || exit $?
+- done
+- IFS="$save_ifs"
+- done
+-
+- if test -n "$future_libdirs"; then
+- $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+- fi
+-
+- if test -n "$current_libdirs"; then
+- # Maybe just do a dry run.
+- test -n "$run" && current_libdirs=" -n$current_libdirs"
+- exec_cmd='$SHELL $0 --finish$current_libdirs'
+- else
+- exit 0
+- fi
+- ;;
+-
+- # libtool finish mode
+- finish)
+- modename="$modename: finish"
+- libdirs="$nonopt"
+- admincmds=
+-
+- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+- for dir
+- do
+- libdirs="$libdirs $dir"
+- done
+-
+- for libdir in $libdirs; do
+- if test -n "$finish_cmds"; then
+- # Do each command in the finish commands.
+- eval cmds=\"$finish_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd" || admincmds="$admincmds
+- $cmd"
+- done
+- IFS="$save_ifs"
+- fi
+- if test -n "$finish_eval"; then
+- # Do the single finish_eval.
+- eval cmds=\"$finish_eval\"
+- $run eval "$cmds" || admincmds="$admincmds
+- $cmds"
+- fi
+- done
+- fi
+-
+- # Exit here if they wanted silent mode.
+- test "$show" = ":" && exit 0
+-
+- 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"
+- echo "more information, such as the ld(1) and ld.so(8) manual pages."
+- echo "----------------------------------------------------------------------"
+- exit 0
+- ;;
+-
+- # libtool execute mode
+- execute)
+- modename="$modename: execute"
+-
+- # The first argument is the command name.
+- cmd="$nonopt"
+- if test -z "$cmd"; then
+- $echo "$modename: you must specify a COMMAND" 1>&2
+- $echo "$help"
+- exit 1
+- fi
+-
+- # Handle -dlopen flags immediately.
+- for file in $execute_dlfiles; do
+- if test ! -f "$file"; then
+- $echo "$modename: \`$file' is not a file" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- dir=
+- case $file in
+- *.la)
+- # Check to see that this really is a libtool archive.
+- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+- else
+- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
+-
+- # Read the libtool library.
+- dlname=
+- library_names=
+-
+- # If there is no directory component, then add one.
+- case $file in
+- */* | *\\*) . $file ;;
+- *) . ./$file ;;
+- esac
+-
+- # Skip this library if it cannot be dlopened.
+- if test -z "$dlname"; then
+- # Warn if it was a shared library.
+- test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+- continue
+- fi
+-
+- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+- test "X$dir" = "X$file" && dir=.
+-
+- if test -f "$dir/$objdir/$dlname"; then
+- dir="$dir/$objdir"
+- else
+- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+- exit 1
+- fi
+- ;;
+-
+- *.lo)
+- # Just add the directory containing the .lo file.
+- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+- test "X$dir" = "X$file" && dir=.
+- ;;
+-
+- *)
+- $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+- 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
+- -*) ;;
+- *)
+- # Do a test to see if this is really a libtool program.
+- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+- # If there is no directory component, then add one.
+- case $file in
+- */* | *\\*) . $file ;;
+- *) . ./$file ;;
+- esac
+-
+- # Transform arg to wrapped name.
+- file="$progdir/$program"
+- fi
+- ;;
+- esac
+- # Quote arguments (to preserve shell metacharacters).
+- file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+- args="$args \"$file\""
+- done
+-
+- if test -z "$run"; then
+- if test -n "$shlibpath_var"; then
+- # Export the shlibpath_var.
+- eval "export $shlibpath_var"
+- fi
+-
+- # Restore saved enviroment variables
+- if test "${save_LC_ALL+set}" = set; then
+- LC_ALL="$save_LC_ALL"; export LC_ALL
+- fi
+- if test "${save_LANG+set}" = set; then
+- LANG="$save_LANG"; export LANG
+- fi
++{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
++ func_mode_link ${1+"$@"}
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
- $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
-@@ -6752,8 +6959,6 @@
- # To get around this problem, check for both libraries together
- # if -lsocket doesn't work by itself.
- #--------------------------------------------------------------------
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockets" >&5
--$as_echo_n "checking for sockets... " >&6; }
- tcl_checkBoth=0
- ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
- if test "x$ac_cv_func_connect" = xyes; then :
-@@ -6965,8 +7170,8 @@
+- # 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 0
+- fi
+- ;;
+- # libtool clean and uninstall mode
+- clean | uninstall)
+- modename="$modename: $mode"
+- rm="$nonopt"
++# func_mode_uninstall arg...
++func_mode_uninstall ()
++{
++ $opt_debug
++ RM="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+@@ -5093,49 +9435,47 @@
+ for arg
+ do
+ case $arg in
+- -f) rm="$rm $arg"; rmforce=yes ;;
+- -*) rm="$rm $arg" ;;
+- *) files="$files $arg" ;;
++ -f) func_append RM " $arg"; rmforce=yes ;;
++ -*) func_append RM " $arg" ;;
++ *) func_append files " $arg" ;;
+ esac
+ done
+- if test -z "$rm"; then
+- $echo "$modename: you must specify an RM program" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- fi
++ test -z "$RM" && \
++ func_fatal_help "you must specify an RM program"
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking For network code for nsocket.c" >&5
--$as_echo_n "checking For network code for nsocket.c... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for network code for nsocket.c" >&5
-+$as_echo_n "checking for network code for nsocket.c... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
+ rmdirs=
-@@ -6990,7 +7195,7 @@
- int
- main ()
- {
-- connect(0,(struct sockaddr *)0,0);
-+connect(0,(struct sockaddr *)0,0);
- gethostbyname("jil");
- socket(AF_INET, SOCK_STREAM, 0);
+ for file in $files; do
+- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+- if test "X$dir" = "X$file"; then
+- dir=.
+- objdir="$objdir"
++ func_dirname "$file" "" "."
++ dir="$func_dirname_result"
++ if test "X$dir" = X.; then
++ odir="$objdir"
+ else
+- objdir="$dir/$objdir"
++ odir="$dir/$objdir"
+ fi
+- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+- test $mode = uninstall && objdir="$dir"
++ func_basename "$file"
++ name="$func_basename_result"
++ test "$opt_mode" = uninstall && odir="$dir"
-@@ -7011,10 +7216,11 @@
- conftest$ac_exeext conftest.$ac_ext
+- # Remember objdir for removal later, being careful to avoid duplicates
+- if test $mode = clean; then
++ # Remember odir for removal later, being careful to avoid duplicates
++ if test "$opt_mode" = clean; then
+ case " $rmdirs " in
+- *" $objdir "*) ;;
+- *) rmdirs="$rmdirs $objdir" ;;
++ *" $odir "*) ;;
++ *) func_append rmdirs " $odir" ;;
+ esac
+ fi
+ # Don't error if the file doesn't exist and rm -f was used.
+- if (test -L "$file") >/dev/null 2>&1 \
+- || (test -h "$file") >/dev/null 2>&1 \
+- || test -f "$file"; then
+- :
++ if { test -L "$file"; } >/dev/null 2>&1 ||
++ { test -h "$file"; } >/dev/null 2>&1 ||
++ test -f "$file"; then
++ :
+ elif test -d "$file"; then
+- exit_status=1
++ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+- continue
++ continue
+ fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for listen using fcntl" >&5
--$as_echo_n "checking check for listen using fcntl... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for listen using fcntl" >&5
-+$as_echo_n "checking for listen using fcntl... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+
- #include <stdio.h>
- #include <fcntl.h>
+ rmfiles="$file"
+@@ -5143,312 +9483,130 @@
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+- . $dir/$name
++ if func_lalib_p "$file"; then
++ func_source $dir/$name
-@@ -7090,7 +7296,7 @@
- $EGREP "LITTLE_ENDIAN" >/dev/null 2>&1; then :
- gcl_ok=yes
- else
-- gcl_ok=noo
-+ gcl_ok=no
- fi
- rm -f conftest*
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+- rmfiles="$rmfiles $objdir/$n"
++ func_append rmfiles " $odir/$n"
+ done
+- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+- test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
++ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-@@ -7134,17 +7340,17 @@
- esac
+- if test $mode = uninstall; then
++ case "$opt_mode" in
++ clean)
++ case " $library_names " in
++ *" $dlname "*) ;;
++ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
++ esac
++ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
++ ;;
++ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+- eval cmds=\"$postuninstall_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd"
+- if test $? != 0 && test "$rmforce" != yes; then
+- exit_status=1
+- fi
+- done
+- IFS="$save_ifs"
++ 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.
+- eval cmds=\"$old_postuninstall_cmds\"
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
+- IFS="$save_ifs"
+- $show "$cmd"
+- $run eval "$cmd"
+- if test $? != 0 && test "$rmforce" != yes; then
+- exit_status=1
+- fi
+- done
+- IFS="$save_ifs"
++ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+- fi
++ ;;
++ esac
+ fi
+ ;;
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for SV_ONSTACK" >&5
--$as_echo_n "checking check for SV_ONSTACK... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SV_ONSTACK" >&5
-+$as_echo_n "checking for SV_ONSTACK... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+
- #include <signal.h>
--int joe=SV_ONSTACK;
+ *.lo)
+ # Possibly a libtool object, so verify it.
+- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
++ if func_lalib_p "$file"; then
- int
- main ()
- {
--
-+return SV_ONSTACK;
- ;
- return 0;
- }
-@@ -7161,17 +7367,17 @@
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- # Read the .lo file
+- . $dir/$name
++ # Read the .lo file
++ func_source $dir/$name
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for SIGSYS" >&5
--$as_echo_n "checking check for SIGSYS... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGSYS" >&5
-+$as_echo_n "checking for SIGSYS... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+
- #include <signal.h>
--int joe=SIGSYS;
+ # Add PIC object to the list of files to remove.
+- if test -n "$pic_object" \
+- && test "$pic_object" != none; then
+- rmfiles="$rmfiles $dir/$pic_object"
+- fi
++ if test -n "$pic_object" &&
++ test "$pic_object" != none; then
++ func_append rmfiles " $dir/$pic_object"
++ fi
- int
- main ()
- {
--
-+return SIGSYS;
- ;
- return 0;
- }
-@@ -7189,17 +7395,17 @@
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # Add non-PIC object to the list of files to remove.
+- if test -n "$non_pic_object" \
+- && test "$non_pic_object" != none; then
+- rmfiles="$rmfiles $dir/$non_pic_object"
+- fi
++ if test -n "$non_pic_object" &&
++ test "$non_pic_object" != none; then
++ func_append rmfiles " $dir/$non_pic_object"
++ fi
+ fi
+ ;;
+
+ *)
+- # Do a test to see if this is a libtool program.
+- if test $mode = clean &&
+- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+- relink_command=
+- . $dir/$file
++ 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
+- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+- if test "$fast_install" = yes && test -n "$relink_command"; then
+- rmfiles="$rmfiles $objdir/lt-$name"
++ # 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
+- $show "$rm $rmfiles"
+- $run $rm $rmfiles || exit_status=1
++ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking check for SIGEMT" >&5
--$as_echo_n "checking check for SIGEMT... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGEMT" >&5
-+$as_echo_n "checking for SIGEMT... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+
- #include <signal.h>
--int joe=SIGEMT;
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+- $show "rmdir $dir"
+- $run rmdir $dir >/dev/null 2>&1
++ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
- int
- main ()
- {
--
-+return SIGEMT;
- ;
- return 0;
- }
-@@ -7244,11 +7450,12 @@
+ exit $exit_status
+- ;;
++}
- done
+- "")
+- $echo "$modename: you must specify a MODE" 1>&2
+- $echo "$generic_help" 1>&2
+- exit 1
+- ;;
+- esac
++{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
++ func_mode_uninstall ${1+"$@"}
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
--$as_echo_n "checking for sigcontext...... " >&6; }
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext" >&5
-+$as_echo_n "checking for sigcontext... " >&6; }
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <signal.h>
+- if test -z "$exec_cmd"; then
+- $echo "$modename: invalid operation mode \`$mode'" 1>&2
+- $echo "$generic_help" 1>&2
+- exit 1
+- fi
+-fi # test -z "$show_help"
++test -z "$opt_mode" && {
++ help="$generic_help"
++ func_fatal_help "you must specify a MODE"
++}
+
-+ #include <signal.h>
++test -z "$exec_cmd" && \
++ func_fatal_help "invalid operation mode \`$opt_mode'"
- int
- main ()
-@@ -7276,11 +7483,12 @@
+ if test -n "$exec_cmd"; then
+- eval exec $exec_cmd
+- exit 1
++ eval exec "$exec_cmd"
++ exit $EXIT_FAILURE
fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test "$sigcontext_works" = 0 ; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext..." >&5
--$as_echo_n "checking for sigcontext...... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigcontext" >&5
-+$as_echo_n "checking for sigcontext... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <signal.h>
-+
-+ #include <signal.h>
- #ifdef HAVE_ASM_SIGCONTEXT_H
- #include <asm/sigcontext.h>
- #endif
-@@ -7459,26 +7667,41 @@
- if test "$enable_tcltk" = "yes" ; then
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tcl/tk" >&5
--$as_echo_n "checking for tcl/tk... " >&6; }
+-# We need to display help for each of the modes.
+-case $mode in
+-"") $echo \
+-"Usage: $modename [OPTION]... [MODE-ARG]...
+-
+-Provide generalized library-building support services.
+-
+- --config show all configuration variables
+- --debug enable verbose shell tracing
+--n, --dry-run display commands without modifying any files
+- --features display basic configuration information and exit
+- --finish same as \`--mode=finish'
+- --help display this help message and exit
+- --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+- --quiet same as \`--silent'
+- --silent don't print informational messages
+- --tag=TAG use configuration variables from tag TAG
+- --version print version information
+-
+-MODE must be one of the following:
+-
+- clean remove files from the build directory
+- compile compile a source file into a libtool object
+- execute automatically set library path, then run a program
+- finish complete the installation of libtool libraries
+- install install libraries or executables
+- link create a library or an executable
+- uninstall remove libraries from an installed directory
+-
+-MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
+-a more detailed description of MODE."
+- exit 0
+- ;;
+-
+-clean)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+-
+-Remove files from the build directory.
+-
+-RM is the name of the program to use to delete files associated with each FILE
+-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+-to RM.
+-
+-If FILE is a libtool library, object or program, all the files associated
+-with it are deleted. Otherwise, only FILE itself is deleted using RM."
+- ;;
+-
+-compile)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+-
+-Compile a source file into a libtool library object.
+-
+-This mode accepts the following additional options:
+-
+- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+- -prefer-pic try to building PIC objects only
+- -prefer-non-pic try to building non-PIC objects only
+- -static always build a \`.o' file suitable for static linking
+-
+-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+-from the given SOURCEFILE.
+-
+-The output file name is determined by removing the directory component from
+-SOURCEFILE, then substituting the C source code suffix \`.c' with the
+-library object suffix, \`.lo'."
+- ;;
+-
+-execute)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+-
+-Automatically set library path, then run a program.
+-
+-This mode accepts the following additional options:
+-
+- -dlopen FILE add the directory containing FILE to the library path
+-
+-This mode sets the library path environment variable according to \`-dlopen'
+-flags.
+-
+-If any of the ARGS are libtool executable wrappers, then they are translated
+-into their corresponding uninstalled binary, and any of their required library
+-directories are added to the library path.
+-
+-Then, COMMAND is executed, with ARGS as arguments."
+- ;;
+-
+-finish)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+-
+-Complete the installation of libtool libraries.
+-
+-Each LIBDIR is a directory that contains libtool libraries.
+-
+-The commands that this mode executes may require superuser privileges. Use
+-the \`--dry-run' option if you just want to see what would be executed."
+- ;;
+-
+-install)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+-
+-Install executables or libraries.
+-
+-INSTALL-COMMAND is the installation command. The first component should be
+-either the \`install' or \`cp' program.
+-
+-The rest of the components are interpreted as arguments to that command (only
+-BSD-compatible install options are recognized)."
+- ;;
+-
+-link)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+-
+-Link object files or libraries together to form another library, or to
+-create an executable program.
+-
+-LINK-COMMAND is a command using the C compiler that you would use to create
+-a program from several object files.
+-
+-The following components of LINK-COMMAND are treated specially:
+-
+- -all-static do not do any dynamic linking at all
+- -avoid-version do not add a version suffix if possible
+- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+- -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+- -export-symbols SYMFILE
+- try to export only the symbols listed in SYMFILE
+- -export-symbols-regex REGEX
+- try to export only the symbols matching REGEX
+- -LLIBDIR search LIBDIR for required installed libraries
+- -lNAME OUTPUT-FILE requires the installed library libNAME
+- -module build a library that can dlopened
+- -no-fast-install disable the fast-install mode
+- -no-install link a not-installable executable
+- -no-undefined declare that a library does not refer to external symbols
+- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+- -objectlist FILE Use a list of object files found in FILE to specify objects
+- -release RELEASE specify package release information
+- -rpath LIBDIR the created library will eventually be installed in LIBDIR
+- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+- -static do not do any dynamic linking of libtool libraries
+- -version-info CURRENT[:REVISION[:AGE]]
+- specify library version info [each variable defaults to 0]
-
+-All other options (arguments beginning with \`-') are ignored.
-
--if test -d "${TCL_CONFIG_PREFIX}" ; then true ; else
--rm -f conftest.tcl
--cat >> conftest.tcl <<EOF
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5
-+$as_echo_n "checking for main in -lieee... " >&6; }
-+if ${ac_cv_lib_ieee_main+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lieee $LIBS"
-+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-
--set dir [set tcl_library]
--if { [file exists [file join [set dir] tclConfig.sh]] } {
-- puts [set dir]
-- exit
-- }
--set dir [file dirname [set tcl_library]]
--if { [file exists [file join [set dir] tclConfig.sh]] } {
-- puts [set dir]
-- }
-
--EOF
--#cp conftest.tcl foo.tcl
-+int
-+main ()
-+{
-+return main ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_link "$LINENO"; then :
-+ ac_cv_lib_ieee_main=yes
-+else
-+ ac_cv_lib_ieee_main=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5
-+$as_echo "$ac_cv_lib_ieee_main" >&6; }
-+if test "x$ac_cv_lib_ieee_main" = xyes; then :
-+ have_ieee=1
-+else
-+ have_ieee=0
-+fi
-
- # Extract the first word of "tclsh", so it can be a program name with args.
- set dummy tclsh; ac_word=$2
-@@ -7518,7 +7741,26 @@
- fi
-
-
--#AC_CHECK_PROG(TCLSH,tclsh8.0,tclsh8.0,${TCLSH})
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tcl/tk" >&5
-+$as_echo_n "checking for tcl/tk... " >&6; }
-+
-+
-+if test -d "${TCL_CONFIG_PREFIX}" ; then true ; else
-+rm -f conftest.tcl
-+cat >> conftest.tcl <<EOF
-+
-+set dir [set tcl_library]
-+if { [file exists [file join [set dir] tclConfig.sh]] } {
-+ puts [set dir]
-+ exit
-+ }
-+set dir [file dirname [set tcl_library]]
-+if { [file exists [file join [set dir] tclConfig.sh]] } {
-+ puts [set dir]
-+ }
-+
-+EOF
-+#cp conftest.tcl foo.tcl
-
- if test "${TCLSH}" = "" ; then true ; else
- TCL_CONFIG_PREFIX=`${TCLSH} < conftest.tcl`
-@@ -7593,42 +7835,6 @@
-
- fi
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -llieee" >&5
--$as_echo_n "checking for main in -llieee... " >&6; }
--if ${ac_cv_lib_lieee_main+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-llieee $LIBS"
--cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h. */
+-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.
-
--int
--main ()
--{
--return main ();
-- ;
-- return 0;
--}
--_ACEOF
--if ac_fn_c_try_link "$LINENO"; then :
-- ac_cv_lib_lieee_main=yes
--else
-- ac_cv_lib_lieee_main=no
--fi
--rm -f core conftest.err conftest.$ac_objext \
-- conftest$ac_exeext conftest.$ac_ext
--LIBS=$ac_check_lib_save_LIBS
--fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lieee_main" >&5
--$as_echo "$ac_cv_lib_lieee_main" >&6; }
--if test "x$ac_cv_lib_lieee_main" = xyes; then :
-- have_ieee=1
--else
-- have_ieee=0
--fi
+-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
- if test "$have_ieee" = "0" ; then
- TCL_LIBS=`echo ${TCL_LIBS} | sed -e "s:-lieee::g" `
- fi
-@@ -7674,14 +7880,23 @@
-
- # the time handling for unixtime, add timezone
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alloca" >&5
--$as_echo_n "checking alloca... " >&6; }
-+# alloca
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-+$as_echo_n "checking for alloca... " >&6; }
- if test "$cross_compiling" = yes; then :
- gcl_ok=no
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--int main() { exit(alloca(500) != NULL ? 0 : 1);}
-+
-+int
-+main ()
-+{
-+exit(alloca(500) != NULL ? 0 : 1);
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
-
-@@ -7703,8 +7918,16 @@
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <alloca.h>
-- int main() { exit(alloca(500) != NULL ? 0 : 1);}
-+
-+ #include <alloca.h>
-+
-+int
-+main ()
-+{
-+exit(alloca(500) != NULL ? 0 : 1);
-+ ;
-+ return 0;
-+}
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
-
-@@ -7736,8 +7959,6 @@
-
+-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+-is created, otherwise an executable program is created."
+- ;;
+-
+-uninstall)
+- $echo \
+-"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+-
+-Remove libraries from an installation directory.
+-
+-RM is the name of the program to use to delete files associated with each FILE
+-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+-to RM.
+-
+-If FILE is a libtool library, all the files associated with it are deleted.
+-Otherwise, only FILE itself is deleted using RM."
+- ;;
+-
+-*)
+- $echo "$modename: invalid operation mode \`$mode'" 1>&2
+- $echo "$help" 1>&2
+- exit 1
+- ;;
+-esac
+-
+-echo
+-$echo "Try \`$modename --help' for more information about other modes."
++exit $exit_status
+-exit 0
--# alloca
--
- # dlopen etc
- # idea make it so you do something dlopen(libX.so,RTLD_GLOBAL)
- # then dlload("foo.o") a lisp file can refer to things in libX.so
-@@ -7761,8 +7982,8 @@
+ # The TAGs below are defined such that we never get into a situation
+ # in which we disable both kinds of libraries. Given conflicting
+@@ -5461,16 +9619,18 @@
+ # 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.
- # redhat/cygnus released for some reason a buggy version of gcc,
- # which no one else released. Catch that here.
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for buggy gcc version from redhat" >&5
--$as_echo_n "checking Checking for buggy gcc version from redhat... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy gcc version from redhat" >&5
-+$as_echo_n "checking for buggy gcc version from redhat... " >&6; }
- if 2>&1 $CC -v | fgrep "gcc version 2.96" > /dev/null
- then
- BROKEN_O4_OPT=1
-@@ -7802,7 +8023,7 @@
+-### BEGIN LIBTOOL TAG CONFIG: disable-shared
++# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+ build_libtool_libs=no
+ build_old_libs=yes
+-### END LIBTOOL TAG CONFIG: disable-shared
++# ### END LIBTOOL TAG CONFIG: disable-shared
- ac_config_files="$ac_config_files makedefc windows/gcl.iss windows/sysdir.bat windows/install.lsp"
+-### BEGIN LIBTOOL TAG CONFIG: disable-static
++# ### 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
++# ### END LIBTOOL TAG CONFIG: disable-static
--cat >confcache <<\_ACEOF
-+ cat >confcache <<\_ACEOF
- # This file is a shell script that caches the results of configure
- # tests run on this system so they can be shared between configure
- # scripts and configure runs, see configure's option --config-cache.
+ # Local Variables:
+ # mode:shell-script
+ # sh-indentation:2
+ # End:
++# vi:sw=2
++
diff --git a/gcl-2.6.8-unrandomize.patch b/gcl-2.6.8-unrandomize.patch
index 46b4638..84efa59 100644
--- a/gcl-2.6.8-unrandomize.patch
+++ b/gcl-2.6.8-unrandomize.patch
@@ -1,109 +1,6 @@
---- ./o/main.c.orig 2010-11-02 15:56:45.000000000 -0600
-+++ ./o/main.c 2012-01-09 20:51:43.097828330 -0700
-@@ -51,6 +51,7 @@
- #include <signal.h>
- #endif
- #include "page.h"
-+#include "unrandomize.h"
-
- bool saving_system ;
-
-@@ -146,11 +147,7 @@
- #endif
- *argv=kcl_self;
-
--#ifdef CAN_UNRANDOMIZE_SBRK
--#include <stdio.h>
--#include <stdlib.h>
--#include "unrandomize.h"
--#endif
-+ UNRANDOMIZE_SBRK;
-
- #ifdef LD_BIND_NOW
- #include <stdio.h>
---- ./h/unrandomize.h.orig 2010-01-12 07:19:15.000000000 -0700
-+++ ./h/unrandomize.h 2012-01-09 20:51:43.101828245 -0700
-@@ -1,39 +1,45 @@
-+#include <stdio.h>
-+#include <stdlib.h>
- #include <sys/personality.h>
- #include <syscall.h>
- #include <unistd.h>
- #include <alloca.h>
- #include <errno.h>
-
--
--{
-- errno=0;
--
-- {
--
-- long pers = personality(0xffffffffUL);
-- if (pers==-1) {printf("personality failure %d\n",errno);exit(-1);}
-- if (!(pers & ADDR_NO_RANDOMIZE) && !getenv("GCL_UNRANDOMIZE")) {
-- errno=0;
-- if (personality(pers | ADDR_NO_RANDOMIZE) != -1 && personality(0xffffffffUL) & ADDR_NO_RANDOMIZE) {
-- int i;
-- char **n;
-- for (i=0;envp[i];i++);
-- n=alloca((i+2)*sizeof(*n));
-- n[i+1]=0;
-- n[i--]="GCL_UNRANDOMIZE=t";
-- for (;i>=0;i--)
-- n[i]=envp[i];
--#ifdef GCL_GPROF
-- gprof_cleanup();
-+#ifdef CAN_UNRANDOMIZE_SBRK
-+# ifdef GCL_GPROF
-+# define GPROF_CLEANUP gprof_cleanup()
-+# else
-+# define GPROF_CLEANUP
-+# endif
-+# define UNRANDOMIZE_SBRK do { \
-+ errno=0; \
-+ { \
-+ long pers = personality(0xffffffffUL); \
-+ if (pers==-1) {printf("personality failure %d\n",errno);exit(-1);} \
-+ if (!(pers & ADDR_NO_RANDOMIZE) && !getenv("GCL_UNRANDOMIZE")) { \
-+ errno=0; \
-+ if (personality(pers | ADDR_NO_RANDOMIZE) != -1 && personality(0xffffffffUL) & ADDR_NO_RANDOMIZE) { \
-+ int i; \
-+ char **n; \
-+ for (i=0;envp[i];i++); \
-+ n=alloca((i+2)*sizeof(*n)); \
-+ n[i+1]=0; \
-+ n[i--]="GCL_UNRANDOMIZE=t"; \
-+ for (;i>=0;i--) \
-+ n[i]=envp[i]; \
-+ GPROF_CLEANUP; \
-+ errno=0; \
-+ execve(*argv,argv,n); \
-+ printf("execve failure %d\n",errno); \
-+ exit(-1); \
-+ } else { \
-+ printf("personality change failure %d\n",errno); \
-+ exit(-1); \
-+ } \
-+ } \
-+ } \
-+ } while (0)
-+#else
-+# define UNRANDOMIZE_SBRK
- #endif
-- errno=0;
-- execve(*argv,argv,n);
-- printf("execve failure %d\n",errno);
-- exit(-1);
-- } else {
-- printf("personality change failure %d\n",errno);
-- exit(-1);
-- }
-- }
-- }
--}
---- ./configure.in.orig 2012-01-09 20:49:21.949801255 -0700
-+++ ./configure.in 2012-01-09 20:51:43.102828225 -0700
-@@ -1167,9 +1167,11 @@
+--- ./configure.in.orig 2012-03-28 09:56:09.658231276 -0600
++++ ./configure.in 2012-03-28 09:57:37.877068843 -0600
+@@ -1184,9 +1184,11 @@
AC_MSG_CHECKING([for personality(ADDR_NO_RANDOMIZE) support])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
@@ -116,7 +13,7 @@
return 0;}]])],CAN_UNRANDOMIZE_SBRK=1,CAN_UNRANDOMIZE_SBRK=0,CAN_UNRANDOMIZE_SBRK=0)
if test "$CAN_UNRANDOMIZE_SBRK" != 0 ; then
-@@ -1182,12 +1184,11 @@
+@@ -1199,12 +1201,11 @@
AC_MSG_CHECKING([that sbrk is (now) non-random])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
@@ -131,7 +28,7 @@
if (!(f=fopen("conftest1","w"))) return -1;
fprintf(f,"%u",sbrk(0));
return 0;}]])],SBRK=`cat conftest1`,SBRK=0,SBRK=0)
-@@ -1196,12 +1197,11 @@
+@@ -1213,12 +1214,11 @@
fi
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
@@ -146,7 +43,7 @@
if (!(f=fopen("conftest1","w"))) return -1;
fprintf(f,"%u",sbrk(0));
return 0;}]])],SBRK1=`cat conftest1`,SBRK1=0,SBRK1=0)
-@@ -1243,6 +1243,7 @@
+@@ -1260,6 +1260,7 @@
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <stdlib.h>
@@ -154,7 +51,7 @@
void gprof_cleanup() {}
int
-@@ -1251,9 +1252,7 @@
+@@ -1268,9 +1269,7 @@
char *b,*b1;
FILE *fp;
@@ -165,9 +62,9 @@
b = (void *) malloc(1000);
fp = fopen("conftest1","w");
---- ./configure.orig 2012-01-09 20:49:33.805551545 -0700
-+++ ./configure 2012-01-09 20:51:54.679584389 -0700
-@@ -6946,9 +6946,11 @@
+--- ./configure.orig 2012-03-28 09:56:09.667230545 -0600
++++ ./configure 2012-03-28 09:57:37.885068193 -0600
+@@ -7062,9 +7062,11 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -180,7 +77,7 @@
return 0;}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
-@@ -6980,12 +6982,11 @@
+@@ -7096,12 +7098,11 @@
/* end confdefs.h. */
#include <stdio.h>
@@ -195,7 +92,7 @@
if (!(f=fopen("conftest1","w"))) return -1;
fprintf(f,"%u",sbrk(0));
return 0;}
-@@ -7009,12 +7010,11 @@
+@@ -7125,12 +7126,11 @@
/* end confdefs.h. */
#include <stdio.h>
@@ -210,7 +107,7 @@
if (!(f=fopen("conftest1","w"))) return -1;
fprintf(f,"%u",sbrk(0));
return 0;}
-@@ -7101,6 +7101,7 @@
+@@ -7217,6 +7217,7 @@
#include <stdio.h>
#include <stdlib.h>
@@ -218,7 +115,7 @@
void gprof_cleanup() {}
int
-@@ -7109,9 +7110,7 @@
+@@ -7225,9 +7226,7 @@
char *b,*b1;
FILE *fp;
@@ -229,3 +126,106 @@
b = (void *) malloc(1000);
fp = fopen("conftest1","w");
+--- ./o/main.c.orig 2010-11-02 15:56:45.000000000 -0600
++++ ./o/main.c 2012-01-09 20:51:43.000000000 -0700
+@@ -51,6 +51,7 @@
+ #include <signal.h>
+ #endif
+ #include "page.h"
++#include "unrandomize.h"
+
+ bool saving_system ;
+
+@@ -146,11 +147,7 @@
+ #endif
+ *argv=kcl_self;
+
+-#ifdef CAN_UNRANDOMIZE_SBRK
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include "unrandomize.h"
+-#endif
++ UNRANDOMIZE_SBRK;
+
+ #ifdef LD_BIND_NOW
+ #include <stdio.h>
+--- ./h/unrandomize.h.orig 2010-01-12 07:19:15.000000000 -0700
++++ ./h/unrandomize.h 2012-01-09 20:51:43.000000000 -0700
+@@ -1,39 +1,45 @@
++#include <stdio.h>
++#include <stdlib.h>
+ #include <sys/personality.h>
+ #include <syscall.h>
+ #include <unistd.h>
+ #include <alloca.h>
+ #include <errno.h>
+
+-
+-{
+- errno=0;
+-
+- {
+-
+- long pers = personality(0xffffffffUL);
+- if (pers==-1) {printf("personality failure %d\n",errno);exit(-1);}
+- if (!(pers & ADDR_NO_RANDOMIZE) && !getenv("GCL_UNRANDOMIZE")) {
+- errno=0;
+- if (personality(pers | ADDR_NO_RANDOMIZE) != -1 && personality(0xffffffffUL) & ADDR_NO_RANDOMIZE) {
+- int i;
+- char **n;
+- for (i=0;envp[i];i++);
+- n=alloca((i+2)*sizeof(*n));
+- n[i+1]=0;
+- n[i--]="GCL_UNRANDOMIZE=t";
+- for (;i>=0;i--)
+- n[i]=envp[i];
+-#ifdef GCL_GPROF
+- gprof_cleanup();
++#ifdef CAN_UNRANDOMIZE_SBRK
++# ifdef GCL_GPROF
++# define GPROF_CLEANUP gprof_cleanup()
++# else
++# define GPROF_CLEANUP
++# endif
++# define UNRANDOMIZE_SBRK do { \
++ errno=0; \
++ { \
++ long pers = personality(0xffffffffUL); \
++ if (pers==-1) {printf("personality failure %d\n",errno);exit(-1);} \
++ if (!(pers & ADDR_NO_RANDOMIZE) && !getenv("GCL_UNRANDOMIZE")) { \
++ errno=0; \
++ if (personality(pers | ADDR_NO_RANDOMIZE) != -1 && personality(0xffffffffUL) & ADDR_NO_RANDOMIZE) { \
++ int i; \
++ char **n; \
++ for (i=0;envp[i];i++); \
++ n=alloca((i+2)*sizeof(*n)); \
++ n[i+1]=0; \
++ n[i--]="GCL_UNRANDOMIZE=t"; \
++ for (;i>=0;i--) \
++ n[i]=envp[i]; \
++ GPROF_CLEANUP; \
++ errno=0; \
++ execve(*argv,argv,n); \
++ printf("execve failure %d\n",errno); \
++ exit(-1); \
++ } else { \
++ printf("personality change failure %d\n",errno); \
++ exit(-1); \
++ } \
++ } \
++ } \
++ } while (0)
++#else
++# define UNRANDOMIZE_SBRK
+ #endif
+- errno=0;
+- execve(*argv,argv,n);
+- printf("execve failure %d\n",errno);
+- exit(-1);
+- } else {
+- printf("personality change failure %d\n",errno);
+- exit(-1);
+- }
+- }
+- }
+-}
diff --git a/gcl.spec b/gcl.spec
index d9da709..267557c 100644
--- a/gcl.spec
+++ b/gcl.spec
@@ -3,7 +3,7 @@
%global __global_cflags %(printf %%s '%__global_cflags' | sed 's/-fstack-protector --param=ssp-buffer-size=4//')
# Prerelease of 2.6.8
-%global alphatag 20120109cvs
+%global alphatag 20120323cvs
Name: gcl
Version: 2.6.8
@@ -16,9 +16,8 @@ URL: http://www.gnu.org/software/gcl/
# The source for this package was pulled from upstream's CVS repository. Use
# the following commands to generate the tarball:
# cvs -d:pserver:anonymous at cvs.savannah.gnu.org:/sources/gcl export \
-# -r Version_2_6_8pre -D 2012-01-10 -d gcl-2.6.8 gcl
-# tar cvf gcl-2.6.8.tar gcl-2.6.8
-# xz gcl-2.6.8.tar
+# -r Version_2_6_8pre -D 2012-03-24 -d gcl-2.6.8 gcl
+# tar cvJf gcl-2.6.8.tar gcl-2.6.8
Source0: gcl-%{version}.tar.xz
Source1: gcl.el
# This is some info files that are needed for the DESCRIBE function to do
@@ -333,6 +332,9 @@ fi
%changelog
+* Wed Mar 28 2012 Jerry James <loganjerry at gmail.com> - 2.6.8-0.10.20120323cvs
+- Update to 20120323 snapshot
+
* Mon Jan 9 2012 Jerry James <loganjerry at gmail.com> - 2.6.8-0.10.20120109cvs
- Update to 20120109 snapshot
diff --git a/sources b/sources
index 328a24c..037c66f 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-bdff1c588d92a1e9f8db797fd53a9ddd gcl-2.6.8.tar.xz
+b796703820bc3f7f539a37b35a2097d0 gcl-2.6.8.tar.xz
b965d4ea561a9c3e019c65be69fcfb1e gcl-2.6.8-info.tar.xz
More information about the scm-commits
mailing list