Add autogen.sh et al to build from CVS.
authorjbj <devnull@localhost>
Wed, 19 Sep 2001 16:16:15 +0000 (16:16 +0000)
committerjbj <devnull@localhost>
Wed, 19 Sep 2001 16:16:15 +0000 (16:16 +0000)
First pass at lclint annotations.

CVS patchset: 5062
CVS date: 2001/09/19 16:16:15

72 files changed:
beecrypt/.cvsignore [new file with mode: 0644]
beecrypt/.lclintrc [new file with mode: 0644]
beecrypt/Makefile.am
beecrypt/Makefile.in
beecrypt/aclocal.m4
beecrypt/autogen.sh [new file with mode: 0755]
beecrypt/base64.c
beecrypt/base64.h
beecrypt/beecrypt.h
beecrypt/blockmode.h
beecrypt/blockpad.c
beecrypt/blockpad.h
beecrypt/blowfish.c
beecrypt/blowfish.h
beecrypt/config.gnu.h.in
beecrypt/config.guess
beecrypt/config.h
beecrypt/config.sub
beecrypt/configure
beecrypt/dhaes.c
beecrypt/dhaes.h
beecrypt/dldp.c
beecrypt/dldp.h
beecrypt/dlkp.h
beecrypt/dlpk.h
beecrypt/dlsvdp-dh.h
beecrypt/docs/.cvsignore [new file with mode: 0644]
beecrypt/docs/Makefile.in
beecrypt/elgamal.c
beecrypt/elgamal.h
beecrypt/endianness.h
beecrypt/entropy.h
beecrypt/fips180.c
beecrypt/fips180.h
beecrypt/fips186.c
beecrypt/fips186.h
beecrypt/gas/.cvsignore [new file with mode: 0644]
beecrypt/gas/Makefile.in
beecrypt/hmac.c
beecrypt/hmac.h
beecrypt/hmacmd5.h
beecrypt/hmacsha1.h
beecrypt/hmacsha256.h
beecrypt/ltmain.sh
beecrypt/masm/.cvsignore [new file with mode: 0644]
beecrypt/masm/Makefile.in
beecrypt/md5.c
beecrypt/md5.h
beecrypt/memchunk.c
beecrypt/memchunk.h
beecrypt/mp32.c
beecrypt/mp32.h
beecrypt/mp32barrett.c
beecrypt/mp32barrett.h
beecrypt/mp32number.c
beecrypt/mp32number.h
beecrypt/mp32prime.c
beecrypt/mp32prime.h
beecrypt/mtprng.h
beecrypt/mwerks/.cvsignore [new file with mode: 0644]
beecrypt/mwerks/Makefile.in
beecrypt/rsa.c
beecrypt/rsa.h
beecrypt/rsakp.c
beecrypt/rsakp.h
beecrypt/rsapk.h
beecrypt/sha256.c
beecrypt/sha256.h
beecrypt/tests/.cvsignore [new file with mode: 0644]
beecrypt/tests/Makefile.in
beecrypt/timestamp.c
beecrypt/timestamp.h

diff --git a/beecrypt/.cvsignore b/beecrypt/.cvsignore
new file mode 100644 (file)
index 0000000..10ba484
--- /dev/null
@@ -0,0 +1,22 @@
+.deps
+.depend
+.depend-done
+.libs
+Makefile
+Makefile.in
+config.cache
+config.guess
+config.gnu.h
+config.log
+config.status
+config.sub
+configure
+libtool
+ltconfig
+ltmain.sh
+*.o
+*.la
+*.lo
+*.S
+stamp-h
+stamp-h.in
diff --git a/beecrypt/.lclintrc b/beecrypt/.lclintrc
new file mode 100644 (file)
index 0000000..7f7f786
--- /dev/null
@@ -0,0 +1,104 @@
+-I. -I./build -I./lib -I./rpmdb -I./rpmio -I./popt -DHAVE_CONFIG_H -D_GNU_SOURCE
+
++partial
+#+forcehints
+
+-warnunixlib
+-warnposix
+
++unixlib
+
+-unrecogcomments       # XXX ignore doxygen markings
+
+#-deepbreak            # shortcut 485 occurences
+
++standard              # lclint level
+
+# --- not-yet at strict level
+#+ptrarith
+#+bitwisesigned
+#+strictops
+#+sizeoftype
+
+#+mod-uncon            # shortcut alloca is painful
+#+mod-nomods           # 927 occurences
++modglobsnomods
++modstrictglobsnomods
+
+#+mod-uncon-nomods     # ~118 occurences
+#+mod-internal-strict
+#+mod-file-sys         # 153 occurences
+#+globnoglobs          # 1 occurence
+#+internalglobs                # 38 occurences
+#+internalglobnoglobs          # ???
+#+modglobsunchecked    # 73 occurences
++warnmissingglobs
+#+warnmissingglobsnomods       # ???
+#+impcheckedstrictglobs        # 358 occurences
+#+impcheckedstrictstatics # 1057 occurences
+#+strictusereleas
+#+strictbranchstate
+#+strictdestroy
+#+modobserveruncon     # 192 occurences
++macroempty
+#+ansi-reserved-internal
+#+evalorderuncon       # 32 occurences
+#+elseifcomplete       # 95 occurences
+#+loopswitchbreak      # 286 occurences
+#+switchswitchbreak    # 32 occurences
+#+looploopcontinue     # 86 occurences
+#+whileblock
++forempty
+#+forblock
+#+ifblock
+#+noeffectuncon                # 228 occurences
++topuse
+#+unusedspecial
++oldstyle
+#+sys-dir-errors       # 749
+#controlnestdepth 15
+#stringliterallen 509
+#numstructfields 127
+#numenummembers 127
+
+# --- not-yet at checks level
+#-predboolptr  
+#+enumint
+#-allglobs
+#-ansi-reserved                # goofy
+#-infloopsuncon                # goofy
+
+#-proto-param-match
+
+# don't-bother-me-yet parameters
+-branchstate           # painful
+-mustfree              # alloca is painful
+
+-exportlocal           # 59 occurences
+-fcnuse                        # 131 occurences
+-usedef                        # 26 occurences
+-varuse                        # 5 occurences
+-shiftsigned           # 46 occurences
+-duplicatequals
+-compdef               # 52 occurences
+
+# --- not-yet at standard level
+-boolops               # w->n
+-predboolint           # w->n
+-type                  #
+
+# -weak paramaters
+#+boolint
+#-boolops
+#+ignorequals
+#+ignoresigns
+#-mustfree
+#+longintegral
+#+matchanyintegral
+#-nullpass
+#-observertrans
+#-predboolint
+#-predboolothers
+#-retvalint
+#-retvalother
+#-shiftsigned
index c2285d3..89a62a0 100644 (file)
@@ -53,3 +53,10 @@ libbeecrypt_la_LDFLAGS = -version-info $(LIBBEECRYPT_LT_CURRENT):$(LIBBEECRYPT_L
 pkginclude_HEADERS = base64.h beecrypt.h blockmode.h blockpad.h blowfish.h blowfishopt.h dhaes.h dldp.h dlkp.h dlpk.h dlsvdp-dh.h elgamal.h endianness.h entropy.h fips180.h fips180opt.h fips186.h hmac.h hmacmd5.h hmacsha1.h hmacsha256.h md5.h memchunk.h mp32.h mp32barrett.h mp32number.h mp32opt.h mp32prime.h mtprng.h rsa.h rsakp.h rsapk.h sha256.h timestamp.h
 
 EXTRA_DIST = BENCHMARKS BUGS CONTRIBUTORS README.DLL README.WIN32 beecrypt.def beecrypt.mcp beecrypt.rc config.h config.gas.h config.win.h javaglue.h
+
+# beecrypt.c entropy.c javaglue.c mtprng.c
+lclintfiles = base64.c blockmode.c blockpad.c blowfish.c dhaes.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c elgamal.c endianness.c fips180.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha256.c md5.c memchunk.c mp32.c mp32barrett.c mp32number.c mp32prime.c rsa.c rsakp.c rsapk.c sha256.c timestamp.c
+
+.PHONY: lclint
+lclint:
+       lclint $(DEFS) $(INCLUDES) ${lclintfiles}
index 8d5bd78..501b4e1 100644 (file)
@@ -1,7 +1,19 @@
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
 #
-# Makefile.in for the beecrypt library
+# Makefile.am contains the top-level automake definitions
 #
-# Copyright (c) 1999-2000, Virtual Unlimited B.V.
+# Copyright (c) 2001 Virtual Unlimited B.V.
 #
 # Author: Bob Deblier <bob@virtualunlimited.com>
 #
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # Lesser General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU Lesser General Public
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-# 
-
-PRODUCT=@PRODUCT@
-VERSION=@VERSION@
+#
 
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
+#
+# 1. No interfaces changes (good): Increment REVISION
+#
+# 2. Interfaces added, none removed (good): Increment CURRENT, increment AGE and REVISION to 0.
+#
+# 3. Interfaces removed (bad): Increment CURRENT, set AGE and REVISION to 0.
+#
 
-CC = @CC@
-CFLAGS = @CFLAGS@ @DEFS@ -I${srcdir}
-LDFLAGS = @LDFLAGS@ @LIBS@
 
-TARGET_OS = @target_os@
-TARGET_CPU = @target_cpu@
+SHELL = @SHELL@
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
+VPATH = @srcdir@
 prefix = @prefix@
 exec_prefix = @exec_prefix@
-includedir= @includedir@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
 libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = .
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+AS = @AS@
+CC = @CC@
+CPP = @CPP@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+EXEEXT = @EXEEXT@
+LD = @LD@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LN_S = @LN_S@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_cv_have_java = @ac_cv_have_java@
+ac_cv_have_javac = @ac_cv_have_javac@
+
+LIBBEECRYPT_LT_CURRENT = 3
+LIBBEECRYPT_LT_AGE = 1
+LIBBEECRYPT_LT_REVISION = 0
+
+AUTOMAKE_OPTIONS = gnu check-news no-dependencies
+
+SUBDIRS = docs gas masm mwerks tests
+
+BEECRYPT_OBJECTS = base64.lo beecrypt.lo blockmode.lo blockpad.lo blowfish.lo blowfishopt.lo dhaes.lo dldp.lo dlkp.lo dlpk.lo dlsvdp-dh.lo elgamal.lo endianness.lo entropy.lo fips180.lo fips180opt.lo fips186.lo hmac.lo hmacmd5.lo hmacsha1.lo hmacsha256.lo md5.lo memchunk.lo mp32.lo mp32barrett.lo mp32number.lo mp32opt.lo mp32prime.lo mtprng.lo rsa.lo rsakp.lo rsapk.lo sha256.lo timestamp.lo
+
+BEECRYPT_JAVA_OBJECTS = javaglue.lo
+
+lib_LTLIBRARIES = libbeecrypt.la
+
+libbeecrypt_la_SOURCES = base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhaes.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c elgamal.c endianness.c entropy.c fips180.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha256.c javaglue.c md5.c memchunk.c mp32.c mp32barrett.c mp32number.c mp32prime.c mtprng.c rsa.c rsakp.c rsapk.c sha256.c timestamp.c
+
+libbeecrypt_la_DEPENDENCIES = $(BEECRYPT_OBJECTS) $(BEECRYPT_JAVA_OBJECTS)
+
+libbeecrypt_la_LIBADD = blowfishopt.lo fips180opt.lo mp32opt.lo
+
+libbeecrypt_la_LDFLAGS = -version-info $(LIBBEECRYPT_LT_CURRENT):$(LIBBEECRYPT_LT_REVISION):$(LIBBEECRYPT_LT_AGE)
+
+pkginclude_HEADERS = base64.h beecrypt.h blockmode.h blockpad.h blowfish.h blowfishopt.h dhaes.h dldp.h dlkp.h dlpk.h dlsvdp-dh.h elgamal.h endianness.h entropy.h fips180.h fips180opt.h fips186.h hmac.h hmacmd5.h hmacsha1.h hmacsha256.h md5.h memchunk.h mp32.h mp32barrett.h mp32number.h mp32opt.h mp32prime.h mtprng.h rsa.h rsakp.h rsapk.h sha256.h timestamp.h
+
+EXTRA_DIST = BENCHMARKS BUGS CONTRIBUTORS README.DLL README.WIN32 beecrypt.def beecrypt.mcp beecrypt.rc config.h config.gas.h config.win.h javaglue.h
+
+# beecrypt.c entropy.c javaglue.c mtprng.c
+lclintfiles = base64.c blockmode.c blockpad.c blowfish.c dhaes.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c elgamal.c endianness.c fips180.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha256.c md5.c memchunk.c mp32.c mp32barrett.c mp32number.c mp32prime.c rsa.c rsakp.c rsapk.c sha256.c timestamp.c
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.gnu.h
+CONFIG_CLEAN_FILES = 
+LTLIBRARIES =  $(lib_LTLIBRARIES)
+
+
+DEFS = @DEFS@ -I. -I$(srcdir) -I.
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+libbeecrypt_la_OBJECTS =  base64.lo beecrypt.lo blockmode.lo blockpad.lo \
+blowfish.lo dhaes.lo dldp.lo dlkp.lo dlpk.lo dlsvdp-dh.lo elgamal.lo \
+endianness.lo entropy.lo fips180.lo fips186.lo hmac.lo hmacmd5.lo \
+hmacsha1.lo hmacsha256.lo javaglue.lo md5.lo memchunk.lo mp32.lo \
+mp32barrett.lo mp32number.lo mp32prime.lo mtprng.lo rsa.lo rsakp.lo \
+rsapk.lo sha256.lo timestamp.lo
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+HEADERS =  $(pkginclude_HEADERS)
+
+DIST_COMMON =  README ./stamp-h.in AUTHORS COPYING COPYING.LIB ChangeLog \
+INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 \
+config.gnu.h.in config.guess config.sub configure configure.in \
+install-sh ltconfig ltmain.sh missing mkinstalldirs
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = gtar
+GZIP_ENV = --best
+SOURCES = $(libbeecrypt_la_SOURCES)
+OBJECTS = $(libbeecrypt_la_OBJECTS)
+
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .S .c .lo .o .obj .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) \
+         && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(ACLOCAL_M4):  configure.in 
+       cd $(srcdir) && $(ACLOCAL)
+
+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+       cd $(srcdir) && $(AUTOCONF)
+
+config.gnu.h: stamp-h
+       @if test ! -f $@; then \
+               rm -f stamp-h; \
+               $(MAKE) stamp-h; \
+       else :; fi
+stamp-h: $(srcdir)/config.gnu.h.in $(top_builddir)/config.status
+       cd $(top_builddir) \
+         && CONFIG_FILES= CONFIG_HEADERS=config.gnu.h \
+            $(SHELL) ./config.status
+       @echo timestamp > stamp-h 2> /dev/null
+$(srcdir)/config.gnu.h.in: $(srcdir)/stamp-h.in
+       @if test ! -f $@; then \
+               rm -f $(srcdir)/stamp-h.in; \
+               $(MAKE) $(srcdir)/stamp-h.in; \
+       else :; fi
+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
+       cd $(top_srcdir) && $(AUTOHEADER)
+       @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
+
+mostlyclean-hdr:
+
+clean-hdr:
+
+distclean-hdr:
+       -rm -f config.gnu.h
+
+maintainer-clean-hdr:
 
-OBJFILES = \
-       base64.o \
-       beecrypt.o \
-       blockmode.o \
-       blowfish.o \
-       blowfishopt.o \
-       dldp.o \
-       dlkp.o \
-       dlpk.o \
-       dlsvdp-dh.o \
-       elgamal.o \
-       endianness.o \
-       entropy.o \
-       fips180.o \
-       fips180opt.o \
-       fips186.o \
-       hmac.o \
-       mp32.o \
-       mp32barrett.o \
-       mp32number.o \
-       mp32opt.o \
-       mp32prime.o \
-       mtprng.o \
-       sha1hmac.o \
-       timestamp.o
-
-DISTFILES = \
-       LICENSE README DOCUMENTATION CHANGELOG BUGS BENCHMARKS \
-       config.guess config.sub install-sh \
-       configure.in configure Makefile.in \
-       config.h \
-       base64.h base64.c \
-       beecrypt.h beecrypt.c \
-       blockmode.h blockmode.c \
-       blowfish.h blowfish.c \
-       blowfishopt.h blowfishopt.c  \
-       dldp.h dldp.c \
-       dlkp.h dlkp.c \
-       dlpk.h dlpk.c \
-       dlsvdp-dh.h dlsvdp-dh.c \
-       elgamal.h elgamal.c \
-       endianness.h endianness.c \
-       entropy.h entropy.c \
-       fips180.h fips180.c \
-       fips180opt.h fips180opt.c \
-       fips186.h fips186.c \
-       hmac.h hmac.c \
-       mp32barrett.h mp32barrett.c \
-       mp32.h mp32.c \
-       mp32number.h mp32number.c \
-       mp32opt.h mp32opt.c \
-       mp32prime.h mp32prime.c \
-       mtprng.h mtprng.c \
-       sha1hmac.h sha1hmac.c \
-       timestamp.h timestamp.c \
-       gnu/config.gnu.h.in \
-       gnu/blowfishopt.gas.i586.s gnu/fips180opt.gas.i586.s gnu/mp32opt.gas.i386.s \
-       gnu/mp32opt.gas.powerpc.s \
-       gnu/mp32opt.gas.sparcv9.s \
-       beecrypt.mcp \
-       win32/config.win.h \
-       win32/beecrypt.dll.c win32/beecrypt.rc win32/beecrypt.def \
-       win32/mwerks/blowfishopt.i586.asm win32/mwerks/fips180opt.i586.asm win32/mwerks/mp32opt.i386.asm \
-       win32/mwerks/beecrypt.pch \
-       beetest.c
-
-LIBBEECRYPT = libbeecrypt.so
-
-all: $(LIBBEECRYPT)
-
-ifeq '$(TARGET_CPU)' 'sparcv8plus'
-mp32opt.o: gnu/mp32opt.gas.sparcv9.s
-       $(AS) -Av8plus -KPIC -o $@ gnu/mp32opt.gas.sparcv9.s
-endif
-
-ifeq '$(TARGET_CPU)' 'sparcv9'
-mp32opt.o: gnu/mp32opt.gas.sparcv9.s
-       $(AS) -Av9 -KPIC -o $@ gnu/mp32opt.gas.sparcv9.s
-endif
-
-ifeq '$(TARGET_CPU)' 'i386'
-mp32opt.o: gnu/mp32opt.gas.i386.s
-       $(AS) -o $@ gnu/mp32opt.gas.i386.s
-endif
-
-ifeq '$(TARGET_CPU)' 'i486'
-mp32opt.o: gnu/mp32opt.gas.i386.s
-       $(AS) -o $@ gnu/mp32opt.gas.i386.s
-endif
-
-ifeq '$(TARGET_CPU)' 'i586'
-blowfishopt.o: gnu/blowfishopt.gas.i586.s
-       $(AS) -o $@ gnu/blowfishopt.gas.i586.s
-
-fips180opt.o: gnu/fips180opt.gas.i586.s
-       $(AS) -o $@ gnu/fips180opt.gas.i586.s
-
-mp32opt.o: gnu/mp32opt.gas.i386.s
-       $(AS) -o $@ gnu/mp32opt.gas.i386.s
-endif
-
-ifeq '$(TARGET_CPU)' 'i686' 
-blowfishopt.o: gnu/blowfishopt.gas.i586.s
-       $(AS) -o $@ gnu/blowfishopt.gas.i586.s
-
-fips180opt.o: gnu/fips180opt.gas.i586.s
-       $(AS) -o $@ gnu/fips180opt.gas.i586.s
-
-mp32opt.o: gnu/mp32opt.gas.i386.s
-       $(AS) -o $@ gnu/mp32opt.gas.i386.s
-endif
-
-ifeq '$(TARGET_CPU)' 'powerpc'
-mp32opt.o: gnu/mp32opt.gas.powerpc.s
-       $(AS) -o $@ gnu/mp32opt.gas.powerpc.s
-endif
-
-$(LIBBEECRYPT): $(OBJFILES)
-       $(LD) -G -o $@ $(OBJFILES)
-
-install: $(LIBBEECRYPT)
-       $(INSTALL) -d $(libdir)
-       $(INSTALL) $(LIBBEECRYPT) $(libdir)
-
-install-headers:
-       $(INSTALL) -d $(includedir)/beecrypt
-       $(INSTALL_DATA) base64.h $(includedir)/beecrypt
-       $(INSTALL_DATA) beecrypt.h $(includedir)/beecrypt
-       $(INSTALL_DATA) blockmode.h $(includedir)/beecrypt
-       $(INSTALL_DATA) blowfish.h $(includedir)/beecrypt
-       $(INSTALL_DATA) blowfishopt.h $(includedir)/beecrypt
-       $(INSTALL_DATA) dldp.h $(includedir)/beecrypt
-       $(INSTALL_DATA) dlkp.h $(includedir)/beecrypt
-       $(INSTALL_DATA) dlpk.h $(includedir)/beecrypt
-       $(INSTALL_DATA) dlsvdp-dh.h $(includedir)/beecrypt
-       $(INSTALL_DATA) elgamal.h $(includedir)/beecrypt
-       $(INSTALL_DATA) endianness.h $(includedir)/beecrypt
-       $(INSTALL_DATA) entropy.h $(includedir)/beecrypt
-       $(INSTALL_DATA) fips180.h $(includedir)/beecrypt
-       $(INSTALL_DATA) fips180opt.h $(includedir)/beecrypt
-       $(INSTALL_DATA) fips186.h $(includedir)/beecrypt
-       $(INSTALL_DATA) hmac.h $(includedir)/beecrypt
-       $(INSTALL_DATA) mp32.h $(includedir)/beecrypt
-       $(INSTALL_DATA) mp32barrett.h $(includedir)/beecrypt
-       $(INSTALL_DATA) mp32number.h $(includedir)/beecrypt
-       $(INSTALL_DATA) mp32opt.h $(includedir)/beecrypt
-       $(INSTALL_DATA) mp32prime.h $(includedir)/beecrypt
-       $(INSTALL_DATA) mtprng.h $(includedir)/beecrypt
-       $(INSTALL_DATA) sha1hmac.h $(includedir)/beecrypt
-       $(INSTALL_DATA) timestamp.h $(includedir)/beecrypt
-
-beetest: beetest.o
-       $(CC) -o $@ beetest.o $(LDFLAGS) -L${libdir} -lbeecrypt
-
-clean:
-       rm -f *.so *.o beetest
-
-distclean:
-       rm -f *.so *.o beetest ${srcdir}/config.log ${srcdir}/config.cache ${srcdir}/config.status conftest.c ${srcdir}/Makefile ${srcdir}/gnu/config.gnu.h
-
-dist: $(DISTFILES)
-       @rm -rf $(PRODUCT)-$(VERSION)
-       @mkdir $(PRODUCT)-$(VERSION)
-       @chmod 777 $(PRODUCT)-$(VERSION)
-       @tar cf - $(DISTFILES) | (cd $(PRODUCT)-$(VERSION) && tar xf - )
-       @chmod -R a+r $(PRODUCT)-$(VERSION)
-       @tar chozf $(PRODUCT)-$(VERSION).tar.gz $(PRODUCT)-$(VERSION)
-       @rm -rf $(PRODUCT)-$(VERSION)
-
-depend:
-       makedepend -I${srcdir} *.c
-
-${srcdir}/configure: ${srcdir}/configure.in
-       cd ${top_srcdir} && autoconf
-
-${srcdir}/config.gnu.h: ${srcdir}/config.gnu.h.in
-       ${srcdir}/config.status
-
-${srcdir}/Makefile: ${srcdir}/Makefile.in
-       ${srcdir}/config.status
-
-${srcdir}/config.status: ${srcdir}/configure
-       ${srcdir}/config.status --recheck
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
+mostlyclean-libLTLIBRARIES:
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+
+distclean-libLTLIBRARIES:
+
+maintainer-clean-libLTLIBRARIES:
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libdir)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
+           $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
+         else :; fi; \
+       done
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+       done
+
+.c.o:
+       $(COMPILE) -c $<
+
+# FIXME: We should only use cygpath when building on Windows,
+# and only if it is available.
+.c.obj:
+       $(COMPILE) -c `cygpath -w $<`
+
+.s.o:
+       $(COMPILE) -c $<
+
+.S.o:
+       $(COMPILE) -c $<
+
+mostlyclean-compile:
+       -rm -f *.o core *.core
+       -rm -f *.$(OBJEXT)
+
+clean-compile:
+
+distclean-compile:
+       -rm -f *.tab.c
+
+maintainer-clean-compile:
+
+.c.lo:
+       $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.s.lo:
+       $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.S.lo:
+       $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+
+maintainer-clean-libtool:
+
+libbeecrypt.la: $(libbeecrypt_la_OBJECTS) $(libbeecrypt_la_DEPENDENCIES)
+       $(LINK) -rpath $(libdir) $(libbeecrypt_la_LDFLAGS) $(libbeecrypt_la_OBJECTS) $(libbeecrypt_la_LIBADD) $(LIBS)
+
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(pkgincludedir)
+       @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+         echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \
+         $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \
+       done
+
+uninstall-pkgincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       list='$(pkginclude_HEADERS)'; for p in $$list; do \
+         rm -f $(DESTDIR)$(pkgincludedir)/$$p; \
+       done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+
+@SET_MAKE@
+
+all-recursive install-data-recursive install-exec-recursive \
+installdirs-recursive install-recursive uninstall-recursive  \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       dot_seen=no; \
+       rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+         rev="$$subdir $$rev"; \
+         test "$$subdir" != "." || dot_seen=yes; \
+       done; \
+       test "$$dot_seen" = "no" && rev=". $$rev"; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS)'; \
+       unique=`for i in $$list; do echo $$i; done | \
+         awk '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $$unique $(LISP)
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.gnu.h.in $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+   if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+   fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)'; \
+       unique=`for i in $$list; do echo $$i; done | \
+         awk '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)config.gnu.h.in$$unique$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.gnu.h.in $$unique $(LISP) -o $$here/TAGS)
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+       -rm -f TAGS ID
+
+maintainer-clean-tags:
+
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       -rm -rf $(distdir)
+       GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
+       mkdir $(distdir)/=build
+       mkdir $(distdir)/=inst
+       dc_install_base=`cd $(distdir)/=inst && pwd`; \
+       cd $(distdir)/=build \
+         && ../configure --srcdir=.. --prefix=$$dc_install_base \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) dist
+       -rm -rf $(distdir)
+       @banner="$(distdir).tar.gz is ready for distribution"; \
+       dashes=`echo "$$banner" | sed s/./=/g`; \
+       echo "$$dashes"; \
+       echo "$$banner"; \
+       echo "$$dashes"
+dist: distdir
+       -chmod -R a+r $(distdir)
+       GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+       -rm -rf $(distdir)
+dist-all: distdir
+       -chmod -R a+r $(distdir)
+       GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+       -rm -rf $(distdir)
+distdir: $(DISTFILES)
+       @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" > /dev/null; then :; else \
+         echo "NEWS not updated; not releasing" 1>&2; \
+         exit 1; \
+       fi
+       -rm -rf $(distdir)
+       mkdir $(distdir)
+       -chmod 777 $(distdir)
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
+         if test -d $$d/$$file; then \
+           cp -pr $$d/$$file $(distdir)/$$file; \
+         else \
+           test -f $(distdir)/$$file \
+           || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+           || cp -p $$d/$$file $(distdir)/$$file || :; \
+         fi; \
+       done
+       for subdir in $(SUBDIRS); do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           chmod 777 $(distdir)/$$subdir; \
+           (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
+             || exit 1; \
+         fi; \
+       done
+info-am:
+info: info-recursive
+dvi-am:
+dvi: dvi-recursive
+check-am: all-am
+check: check-recursive
+installcheck-am:
+installcheck: installcheck-recursive
+all-recursive-am: config.gnu.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+install-exec-am: install-libLTLIBRARIES
+install-exec: install-exec-recursive
+
+install-data-am: install-pkgincludeHEADERS
+install-data: install-data-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-recursive
+uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS
+uninstall: uninstall-recursive
+all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.gnu.h
+all-redirect: all-recursive-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs: installdirs-recursive
+installdirs-am:
+       $(mkinstalldirs)  $(DESTDIR)$(libdir) $(DESTDIR)$(pkgincludedir)
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+mostlyclean-am:  mostlyclean-hdr mostlyclean-libLTLIBRARIES \
+               mostlyclean-compile mostlyclean-libtool \
+               mostlyclean-tags mostlyclean-generic
+
+mostlyclean: mostlyclean-recursive
+
+clean-am:  clean-hdr clean-libLTLIBRARIES clean-compile clean-libtool \
+               clean-tags clean-generic mostlyclean-am
+
+clean: clean-recursive
+
+distclean-am:  distclean-hdr distclean-libLTLIBRARIES distclean-compile \
+               distclean-libtool distclean-tags distclean-generic \
+               clean-am
+       -rm -f libtool
+
+distclean: distclean-recursive
+       -rm -f config.status
+
+maintainer-clean-am:  maintainer-clean-hdr \
+               maintainer-clean-libLTLIBRARIES \
+               maintainer-clean-compile maintainer-clean-libtool \
+               maintainer-clean-tags maintainer-clean-generic \
+               distclean-am
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f config.status
+
+.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
+mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
+clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
+uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
+distclean-compile clean-compile maintainer-clean-compile \
+mostlyclean-libtool distclean-libtool clean-libtool \
+maintainer-clean-libtool uninstall-pkgincludeHEADERS \
+install-pkgincludeHEADERS install-data-recursive \
+uninstall-data-recursive install-exec-recursive \
+uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
+all-recursive check-recursive installcheck-recursive info-recursive \
+dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
+install-exec-am install-exec install-data-am install-data install-am \
+install uninstall-am uninstall all-redirect all-am all installdirs-am \
+installdirs mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+.PHONY: lclint
+lclint:
+       lclint $(DEFS) $(INCLUDES) ${lclintfiles}
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
index f2a44c4..21bcffb 100644 (file)
@@ -1,6 +1,6 @@
-dnl aclocal.m4 generated automatically by aclocal 1.4
+dnl aclocal.m4 generated automatically by aclocal 1.4-p5
 
-dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -19,7 +19,7 @@ dnl PARTICULAR PURPOSE.
 dnl Usage:
 dnl AM_INIT_AUTOMAKE(package,version, [no-define])
 
-AC_DEFUN(AM_INIT_AUTOMAKE,
+AC_DEFUN([AM_INIT_AUTOMAKE],
 [AC_REQUIRE([AC_PROG_INSTALL])
 PACKAGE=[$1]
 AC_SUBST(PACKAGE)
@@ -47,7 +47,7 @@ AC_REQUIRE([AC_PROG_MAKE_SET])])
 # Check to make sure that the build environment is sane.
 #
 
-AC_DEFUN(AM_SANITY_CHECK,
+AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
 # Just in case
 sleep 1
@@ -88,7 +88,7 @@ AC_MSG_RESULT(yes)])
 
 dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
 dnl The program must properly implement --version.
-AC_DEFUN(AM_MISSING_PROG,
+AC_DEFUN([AM_MISSING_PROG],
 [AC_MSG_CHECKING(for working $2)
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
@@ -104,7 +104,7 @@ AC_SUBST($1)])
 
 # Like AC_CONFIG_HEADER, but automatically create stamp file.
 
-AC_DEFUN(AM_CONFIG_HEADER,
+AC_DEFUN([AM_CONFIG_HEADER],
 [AC_PREREQ([2.12])
 AC_CONFIG_HEADER([$1])
 dnl When config.status generates a header, we must update the stamp-h file.
@@ -125,135 +125,2767 @@ for am_file in <<$1>>; do
 done<<>>dnl>>)
 changequote([,]))])
 
+# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
 
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
+# serial 46 AC_PROG_LIBTOOL
+AC_DEFUN([AC_PROG_LIBTOOL],
 [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
 
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])
+
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.13)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+_LT_AC_PROG_ECHO_BACKSLASH
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE(libtool-lock,
+  [  --disable-libtool-lock  avoid locking (might break parallel builds)])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_SAVE
+     AC_LANG_C
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_RESTORE])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+
+  # recent cygwin and mingw systems supply a stub DllMain which the user
+  # can override, but on older systems we have to supply one
+  AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
+    [AC_TRY_LINK([],
+      [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
+      DllMain (0, 0, 0);],
+      [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
+
+  case $host/$CC in
+  *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
+    # old mingw systems require "-dll" to link a DLL, while more recent ones
+    # require "-mdll"
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -mdll"
+    AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
+      [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
+    CFLAGS="$SAVE_CFLAGS" ;;
+  *-*-cygwin* | *-*-pw32*)
+    # cygwin systems need to pass --dll to the linker, and not link
+    # crt.o which will require a WinMain@16 definition.
+    lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
+  esac
+  ;;
+  ])
+esac
+
+_LT_AC_LTCONFIG_HACK
+
+])
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN(_LT_AC_CHECK_DLFCN,
+[AC_CHECK_HEADERS(dlfcn.h)
+])# _LT_AC_CHECK_DLFCN
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+[symcode='[BCDEGRST]']
+
+# Regexp to match symbols that can be accessed directly from C.
+[sympat='\([_A-Za-z][_A-Za-z0-9]*\)']
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  [symcode='[BCDT]']
+  ;;
+cygwin* | mingw* | pw32*)
+  [symcode='[ABCDGISTW]']
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  ;;
+irix*)
+  [symcode='[BCDEGRST]']
+  ;;
+solaris* | sysv5*)
+  [symcode='[BDT]']
+  ;;
+sysv4)
+  [symcode='[DFNSTU]']
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $host_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  [symcode='[ABCDGISTW]']
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+[lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[       ]\($symcode$symcode*\)[         ][      ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"]
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+       if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+         cat <<EOF >> conftest.$ac_ext
+#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[] =]
+{
+EOF
+         sed "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext
+         cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         save_LIBS="$LIBS"
+         save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$no_builtin_flag"
+         if AC_TRY_EVAL(ac_link) && test -s conftest; then
+           pipe_works=yes
+         fi
+         LIBS="$save_LIBS"
+         CFLAGS="$save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&AC_FD_CC
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&AC_FD_CC
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
+    fi
+  else
+    echo "$progname: failed program was:" >&AC_FD_CC
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+else
+  global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
+fi
+if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
+# ---------------------------------
+AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
+[# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+fi
+])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn;t interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+                              [AC_DIVERT_PUSH(NOTICE)])
+_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+        test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+        echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+        test "X$echo_testing_string" = "X$echo_test_string"; then
+       # Cool, printf works
+       :
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+       export CONFIG_SHELL
+       SHELL="$CONFIG_SHELL"
+       export SHELL
+       echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+       # maybe with a smaller string...
+       prev=:
+
+       for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+         then
+           break
+         fi
+         prev="$cmd"
+       done
+
+       if test "$prev" != 'sed 50q "[$]0"'; then
+         echo_test_string=`eval $prev`
+         export echo_test_string
+         exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+       else
+         # Oops.  We lost completely, so just stick with echo.
+         echo=echo
+       fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+AC_DIVERT_POP
+])# _LT_AC_PROG_ECHO_BACKSLASH
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN(_LT_AC_TRY_DLOPEN_SELF,
+[if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_unknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN(AC_LIBTOOL_DLOPEN_SELF,
+[if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  *)
+    AC_CHECK_LIB(dl, dlopen,  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+      [AC_CHECK_FUNC(dlopen, lt_cv_dlopen="dlopen",
+        [AC_CHECK_FUNC(shl_load, lt_cv_dlopen="shl_load",
+          [AC_CHECK_LIB(svld, dlopen,
+           [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+            [AC_CHECK_LIB(dld, shl_load,
+              [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+           ])
+          ])
+        ])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+         lt_cv_dlopen_self, [dnl
+         _LT_AC_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_AC_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+AC_DEFUN([_LT_AC_LTCONFIG_HACK],
+[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+need_locks="$enable_libtool_lock"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+if test x"$host" != x"$build"; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case $host_os in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="[$]2"
+
+AC_MSG_CHECKING([for objdir])
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+AC_MSG_RESULT($objdir)
+
+
+AC_ARG_WITH(pic, 
+[  --with-pic              try to use only PIC/non-PIC objects [default=use both]],
+pic_mode="$withval", pic_mode=default)
+test -z "$pic_mode" && pic_mode=default
+
+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+AC_CACHE_VAL(lt_cv_prog_cc_pic,
+[ lt_cv_prog_cc_pic=
+  lt_cv_prog_cc_shlib=
+  lt_cv_prog_cc_wl=
+  lt_cv_prog_cc_static=
+  lt_cv_prog_cc_no_builtin=
+  lt_cv_prog_cc_can_build_shared=$can_build_shared
+
+  if test "$GCC" = yes; then
+    lt_cv_prog_cc_wl='-Wl,'
+    lt_cv_prog_cc_static='-static'
+
+    case $host_os in
+    aix*)
+      # Below there is a dirty hack to force normal static linking with -ldl
+      # The problem is because libdl dynamically linked with both libc and
+      # libC (AIX C++ library), which obviously doesn't included in libraries
+      # list by gcc. This cause undefined symbols with -static flags.
+      # This hack allows C programs to be linked with "-static -ldl", but
+      # we not sure about C++ programs.
+      lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_cv_prog_cc_pic='-fno-common'
+      ;;
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        lt_cv_prog_cc_pic=-Kconform_pic
+      fi
+      ;;
+    *)
+      lt_cv_prog_cc_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for PIC flags for the system compiler.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+        # AIX 5 now supports IA64 processor
+        lt_cv_prog_cc_static='-Bstatic'
+        lt_cv_prog_cc_wl='-Wl,'
+      else
+        lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
+      lt_cv_prog_cc_pic='+Z'
+      ;;
+
+    irix5* | irix6*)
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      # PIC (with -KPIC) is the default.
+      ;;
+
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+
+    newsos6)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      # All OSF/1 code is PIC.
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_cv_prog_cc_pic='-Kpic'
+      lt_cv_prog_cc_static='-dn'
+      lt_cv_prog_cc_shlib='-belf'
+      ;;
+
+    solaris*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    sunos4*)
+      lt_cv_prog_cc_pic='-PIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Qoption ld '
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      if test "x$host_vendor" = xsni; then
+        lt_cv_prog_cc_wl='-LD'
+      else
+        lt_cv_prog_cc_wl='-Wl,'
+      fi
+      ;;
+
+    uts4*)
+      lt_cv_prog_cc_pic='-pic'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_cv_prog_cc_pic='-Kconform_pic'
+       lt_cv_prog_cc_static='-Bstatic'
+      fi
+      ;;
+
+    *)
+      lt_cv_prog_cc_can_build_shared=no
+      ;;
+    esac
+  fi
+])
+if test -z "$lt_cv_prog_cc_pic"; then
+  AC_MSG_RESULT([none])
+else
+  AC_MSG_RESULT([$lt_cv_prog_cc_pic])
+
+  # Check to make sure the pic_flag actually works.
+  AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works])
+  AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+    AC_TRY_COMPILE([], [], [dnl
+      case $host_os in
+      hpux9* | hpux10* | hpux11*)
+       # On HP-UX, both CC and GCC only warn that PIC is supported... then
+       # they create non-PIC objects.  So, if there were any warnings, we
+       # assume that PIC is not supported.
+       if test -s conftest.err; then
+         lt_cv_prog_cc_pic_works=no
+       else
+         lt_cv_prog_cc_pic_works=yes
+       fi
+       ;;
+      *)
+       lt_cv_prog_cc_pic_works=yes
+       ;;
+      esac
+    ], [dnl
+      lt_cv_prog_cc_pic_works=no
+    ])
+    CFLAGS="$save_CFLAGS"
+  ])
+
+  if test "X$lt_cv_prog_cc_pic_works" = Xno; then
+    lt_cv_prog_cc_pic=
+    lt_cv_prog_cc_can_build_shared=no
+  else
+    lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
+  fi
+
+  AC_MSG_RESULT([$lt_cv_prog_cc_pic_works])
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$lt_cv_prog_cc_shlib"; then
+  AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
+  if echo "$old_CC $old_CFLAGS " | [egrep -e "[        ]$lt_cv_prog_cc_shlib[  ]"] >/dev/null; then :
+  else
+   AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works])
+AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl
+  lt_cv_prog_cc_static_works=no
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+  AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes])
+  LDFLAGS="$save_LDFLAGS"
+])
+
+# Belt *and* braces to stop my trousers falling down:
+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
+AC_MSG_RESULT([$lt_cv_prog_cc_static_works])
+
+pic_flag="$lt_cv_prog_cc_pic"
+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
+wl="$lt_cv_prog_cc_wl"
+link_static_flag="$lt_cv_prog_cc_static"
+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
+can_build_shared="$lt_cv_prog_cc_can_build_shared"
+
+
+# Check to see if options -o and -c are simultaneously supported by compiler
+AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext])
+AC_CACHE_VAL([lt_cv_compiler_c_o], [
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+echo "int some_variable = 0;" > conftest.$ac_ext
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+compiler_c_o=no
+if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+  if test -s out/conftest.err; then
+    lt_cv_compiler_c_o=no
+  else
+    lt_cv_compiler_c_o=yes
+  fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&AC_FD_CC
+  lt_cv_compiler_c_o=no
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+])
+compiler_c_o=$lt_cv_compiler_c_o
+AC_MSG_RESULT([$compiler_c_o])
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  AC_MSG_CHECKING([if $compiler supports -c -o file.lo])
+  AC_CACHE_VAL([lt_cv_compiler_o_lo], [
+  lt_cv_compiler_o_lo=no
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      lt_cv_compiler_o_lo=no
+    else
+      lt_cv_compiler_o_lo=yes
+    fi
+  ])
+  CFLAGS="$save_CFLAGS"
+  ])
+  compiler_o_lo=$lt_cv_compiler_o_lo
+  AC_MSG_RESULT([$compiler_o_lo])
+else
+  compiler_o_lo=no
+fi
+
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+if test "$GCC" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions])
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+  compiler_rtti_exceptions=no
+  AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      compiler_rtti_exceptions=no
+    else
+      compiler_rtti_exceptions=yes
+    fi
+  ])
+  CFLAGS="$save_CFLAGS"
+  AC_MSG_RESULT([$compiler_rtti_exceptions])
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+fi
+
+# See if the linker supports building shared libraries.
+AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries])
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+case $host_os in
+cygwin* | mingw* | pw32* )
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$GCC" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case $host_os in
+  aix3* | aix4* | aix5*)
+    # On AIX, the GNU linker is very broken
+    # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
+      sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
+      test -f $output_objdir/impgen.exe || (cd $output_objdir && \
+      if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
+      else $CC -o impgen impgen.c ; fi)~
+      $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
+
+    old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
+
+    # cygwin and mingw dlls have different entry points and sets of symbols
+    # to exclude.
+    # FIXME: what about values for MSVC?
+    dll_entry=__cygwin_dll_entry@12
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
+    case $host_os in
+    mingw*)
+      # mingw values
+      dll_entry=_DllMainCRTStartup@12
+      dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
+      ;;
+    esac
+
+    # mingw and cygwin differ, and it's simplest to just exclude the union
+    # of the two symbol sets.
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
+
+    # recent cygwin and mingw systems supply a stub DllMain which the user
+    # can override, but on older systems we have to supply one (in ltdll.c)
+    if test "x$lt_cv_need_dllmain" = "xyes"; then
+      ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
+      ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~
+       test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
+    else
+      ltdll_obj=
+      ltdll_cmds=
+    fi
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left be newer dlltools.
+    export_symbols_cmds="$ltdll_cmds"'
+      $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
+      [sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//"] < $output_objdir/$soname-def > $export_symbols'
+
+    # If the export-symbols file already is a .def file (1st line
+    # is EXPORTS), use it as is.
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
+        cp $export_symbols $output_objdir/$soname-def;
+      else
+        echo EXPORTS > $output_objdir/$soname-def;
+        _lt_hint=1;
+        cat $export_symbols | while read symbol; do
+         set dummy \$symbol;
+         case \[$]# in
+           2) echo "   \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+           *) echo "     \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
+         esac;
+         _lt_hint=`expr 1 + \$_lt_hint`;
+        done;
+      fi~
+      '"$ltdll_cmds"'
+      $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
+      $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
+      $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+      wlarc=
+    else
+      archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw* | pw32*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case $host_os in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$GCC" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4* | aix5*)
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds=''
+    hardcode_libdir_separator=':'
+    if test "$GCC" = yes; then
+      collect2name=`${CC} -print-prog-name=collect2`
+      if test -f "$collect2name" && \
+        strings "$collect2name" | grep resolve_lib_name >/dev/null
+      then
+       # We have reworked collect2
+       hardcode_direct=yes
+      else
+        # We have old collect2
+        hardcode_direct=unsupported
+        # It fails to find uninstalled libraries when the uninstalled
+        # path is not listed in the libpath.  Setting hardcode_minus_L
+        # to unsupported forces relinking
+        hardcode_minus_L=yes
+        hardcode_libdir_flag_spec='-L$libdir'
+        hardcode_libdir_separator=
+      fi
+      shared_flag='-shared'
+    else
+      if test "$host_cpu" = ia64; then
+        shared_flag='-G'
+      else
+        shared_flag='${wl}-bM:SRE'
+      fi
+      hardcode_direct=yes
+    fi
+
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      # Test if we are trying to use run time linking, or normal AIX style linking.
+      # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
+      aix_use_runtimelinking=no
+      for ld_flag in $LDFLAGS; do
+        if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
+          aix_use_runtimelinking=yes
+          break
+        fi
+      done
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+    # It seems that -bexpall can do strange things, so it is better to
+    # generate a list of symbols to export.
+    always_export_symbols=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+      allow_undefined_flag=' -Wl,-G'
+      archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+    else
+      if test "$host_cpu" = ia64; then
+        hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+       allow_undefined_flag="-znodefs"
+        archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+        hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+        # Warning - without using the other run time loading flags, -berok will
+        #           link without error, but may produce a broken library.
+        allow_undefined_flag='${wl}-berok'
+        # This is a bit strange, but is similar to how AIX traditionally builds
+        # it's shared libraries.
+        archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
+      fi
+    fi
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+    fix_srcfile_path='`cygpath -w "$srcfile"`'
+    ;;
+
+  darwin* | rhapsody*)
+    allow_undefined_flag='-undefined suppress'
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.
+    archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case $host_os in
+    hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+                        # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    link_all_deplibs=yes
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+    fi
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  newsos6)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)       # as osf3* with the addition of -msym flag
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+      $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+      #Both c and cxx compiler support -rpath directly
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    ;;
+
+  solaris*)
+    no_undefined_flag=' -z defs'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case $host_os in
+    [solaris2.[0-5] | solaris2.[0-5].*]) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    link_all_deplibs=yes
+    ;;
+
+  sunos4*)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+    fi
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    if test "x$host_vendor" = xsno; then
+      archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts'
+      hardcode_direct=yes # is this really true???
+    else
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  sysv5uw7* | unixware7*)
+    no_undefined_flag='${wl}-z ${wl}text'
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+AC_MSG_RESULT([$ld_shlibs])
+test "$ld_shlibs" = no && can_build_shared=no
+
+# Check hardcoding attributes.
+AC_MSG_CHECKING([how to hardcode library paths into programs])
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+AC_MSG_RESULT([$hardcode_action])
+
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+# PORTME Fill in your ld.so characteristics
+AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      [ aix4 | aix4.[01] | aix4.[01].*)]
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+           echo ' yes '
+           echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+        :
+      else
+        can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so instead of
+      # lib<name>.a to let people know that these are not typical AIX shared libraries.
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}.so$major'
+    fi
+    shlibpath_var=LIBPATH
+    deplibs_check_method=pass_all
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | [$Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\'']`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  case $GCC,$host_os in
+  yes,cygwin*)
+    library_names_spec='$libname.dll.a'
+    soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll'
+    postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog .libs/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    ;;
+  yes,mingw*)
+    library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll'
+    sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
+    ;;
+  yes,pw32*)
+    library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    ;;
+  *)
+    library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
+  soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
+  case $host_os in
+  irix5*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+    need_version=no
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Report the final consequences.
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+AC_LIBTOOL_DLOPEN_SELF
+
+if test "$enable_shared" = yes && test "$GCC" = yes; then
+  case $archive_cmds in
+  *'~'*)
+    # FIXME: we may have to deal with multi-command sequences.
+    ;;
+  '$CC '*)
+    # Test whether the compiler implicitly links with -lc since on some
+    # systems, -lgcc has to come before -lc. If gcc already passes -lc
+    # to ld, don't add -lc before -lgcc.
+    AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+    AC_CACHE_VAL([lt_cv_archive_cmds_need_lc],
+    [$rm conftest*
+    echo 'static int dummy;' > conftest.$ac_ext
+
+    if AC_TRY_EVAL(ac_compile); then
+      soname=conftest
+      lib=conftest
+      libobjs=conftest.$ac_objext
+      deplibs=
+      wl=$lt_cv_prog_cc_wl
+      compiler_flags=-v
+      linker_flags=-v
+      verstring=
+      output_objdir=.
+      libname=conftest
+      save_allow_undefined_flag=$allow_undefined_flag
+      allow_undefined_flag=
+      if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+      then
+       lt_cv_archive_cmds_need_lc=no
+      else
+       lt_cv_archive_cmds_need_lc=yes
+      fi
+      allow_undefined_flag=$save_allow_undefined_flag
+    else
+      cat conftest.err 1>&5
+    fi])
+    AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc])
+    ;;
+  esac
+fi
+need_lc=${lt_cv_archive_cmds_need_lc-yes}
+
+# The second clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  :
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+if test -f "$ltmain"; then
+  trap "$rm \"${ofile}T\"; exit 1" 1 2 15
+  $rm -f "${ofile}T"
+
+  echo creating $ofile
+
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS \
+    AR AR_FLAGS CC LD LN_S NM SHELL \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+    postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+    old_striplib striplib file_magic_cmd export_symbols_cmds \
+    deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case $var in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  cat <<__EOF__ > "${ofile}T"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
 
-# Actually configure libtool.  ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
 
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
 
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+# ### BEGIN LIBTOOL CONFIG
 
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
 
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
 
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
 
-# Check for any special flags to pass to ltconfig.
-libtool_flags="--cache-file=$cache_file"
-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
-test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
-  [  --disable-libtool-lock  avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
 
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case "`/usr/bin/file conftest.o`" in
-    *32-bit*)
-      LD="${LD-ld} -32"
-      ;;
-    *N32*)
-      LD="${LD-ld} -n32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -64"
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
 
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
+# The host system.
+host_alias=$host_alias
+host=$host
 
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-])
-esac
-])
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# The default C compiler.
+CC=$lt_CC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_pic_flag
+pic_mode=$pic_mode
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$lt_compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "${ofile}T"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | os2*)
+    cat <<'EOF' >> "${ofile}T"
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+        # This is a source program that is used to create import libraries
+        # on Windows for dlls which lack them. Don't remove nor modify the
+        # starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+# #include <stdio.h>           /* for printf() */
+# #include <unistd.h>          /* for open(), lseek(), read() */
+# #include <fcntl.h>           /* for O_RDONLY, O_BINARY */
+# #include <string.h>          /* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+#      int fd;
+#      int offset;
+# {
+#   unsigned char b[2];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 2);
+#   return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+#     int fd;
+#     int offset;
+# {
+#   unsigned char b[4];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 4);
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+#      void *ptr;
+# {
+#   unsigned char *b = ptr;
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+#     int argc;
+#     char *argv[];
+# {
+#     int dll;
+#     unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#     unsigned long export_rva, export_size, nsections, secptr, expptr;
+#     unsigned long name_rvas, nexp;
+#     unsigned char *expdata, *erva;
+#     char *filename, *dll_name;
+#
+#     filename = argv[1];
+#
+#     dll = open(filename, O_RDONLY|O_BINARY);
+#     if (dll < 1)
+#      return 1;
+#
+#     dll_name = filename;
+#
+#     for (i=0; filename[i]; i++)
+#      if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+#          dll_name = filename + i +1;
+#
+#     pe_header_offset = pe_get32 (dll, 0x3c);
+#     opthdr_ofs = pe_header_offset + 4 + 20;
+#     num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#     if (num_entries < 1) /* no exports */
+#      return 1;
+#
+#     export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#     export_size = pe_get32 (dll, opthdr_ofs + 100);
+#     nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#     secptr = (pe_header_offset + 4 + 20 +
+#            pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#     expptr = 0;
+#     for (i = 0; i < nsections; i++)
+#     {
+#      char sname[8];
+#      unsigned long secptr1 = secptr + 40 * i;
+#      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+#      unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+#      unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+#      lseek(dll, secptr1, SEEK_SET);
+#      read(dll, sname, 8);
+#      if (vaddr <= export_rva && vaddr+vsize > export_rva)
+#      {
+#          expptr = fptr + (export_rva - vaddr);
+#          if (export_rva + export_size > vaddr + vsize)
+#              export_size = vsize - (export_rva - vaddr);
+#          break;
+#      }
+#     }
+#
+#     expdata = (unsigned char*)malloc(export_size);
+#     lseek (dll, expptr, SEEK_SET);
+#     read (dll, expdata, export_size);
+#     erva = expdata - export_rva;
+#
+#     nexp = pe_as32 (expdata+24);
+#     name_rvas = pe_as32 (expdata+32);
+#
+#     printf ("EXPORTS\n");
+#     for (i = 0; i<nexp; i++)
+#     {
+#      unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+#      printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#     }
+#
+#     return 0;
+# }
+# /* impgen.c ends here */
+
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
+
+  mv -f "${ofile}T" "$ofile" || \
+    (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
+  chmod +x "$ofile"
+fi
+
+])# _LT_AC_LTCONFIG_HACK
 
 # AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
 
 # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
 
 # AC_ENABLE_SHARED - implement the --enable-shared flag
 # Usage: AC_ENABLE_SHARED[(DEFAULT)]
 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
 #   `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(shared,
 changequote(<<, >>)dnl
 <<  --enable-shared[=PKGS]  build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
 changequote([, ])dnl
 [p=${PACKAGE-default}
-case "$enableval" in
+case $enableval in
 yes) enable_shared=yes ;;
 no) enable_shared=no ;;
 *)
@@ -272,21 +2904,22 @@ enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
 ])
 
 # AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_SHARED(no)])
 
 # AC_ENABLE_STATIC - implement the --enable-static flag
 # Usage: AC_ENABLE_STATIC[(DEFAULT)]
 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
 #   `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(static,
 changequote(<<, >>)dnl
 <<  --enable-static[=PKGS]  build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
 changequote([, ])dnl
 [p=${PACKAGE-default}
-case "$enableval" in
+case $enableval in
 yes) enable_static=yes ;;
 no) enable_static=no ;;
 *)
@@ -305,7 +2938,8 @@ enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
 ])
 
 # AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_STATIC(no)])
 
 
@@ -313,14 +2947,14 @@ AC_ENABLE_STATIC(no)])
 # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
 #   `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(fast-install,
 changequote(<<, >>)dnl
 <<  --enable-fast-install[=PKGS]  optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
 changequote([, ])dnl
 [p=${PACKAGE-default}
-case "$enableval" in
+case $enableval in
 yes) enable_fast_install=yes ;;
 no) enable_fast_install=no ;;
 *)
@@ -338,12 +2972,98 @@ esac],
 enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
 ])
 
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_FAST_INSTALL(no)])
 
+# AC_LIBTOOL_PICMODE - implement the --with-pic flag
+# Usage: AC_LIBTOOL_PICMODE[(MODE)]
+#   Where MODE is either `yes' or `no'.  If omitted, it defaults to
+#   `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)])
+
+
+# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           egrep "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])
+
+
+# AC_PATH_MAGIC - find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
+AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])
+
+
 # AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
+AC_DEFUN([AC_PROG_LD],
 [AC_ARG_WITH(gnu-ld,
 [  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
 test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
@@ -351,16 +3071,20 @@ AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
+if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   AC_MSG_CHECKING([for ld used by GCC])
-  ac_prog=`($CC -print-prog-name=ld) 2>&5`
-  case "$ac_prog" in
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
     # Accept absolute paths.
-changequote(,)dnl
-    [\\/]* | [A-Za-z]:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      [re_direlt='/[^/][^/]*/\.\./']
       # Canonicalize the path of ld
       ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
       while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
@@ -382,17 +3106,17 @@ elif test "$with_gnu_ld" = yes; then
 else
   AC_MSG_CHECKING([for non-GNU ld])
 fi
-AC_CACHE_VAL(ac_cv_path_LD,
+AC_CACHE_VAL(lt_cv_path_LD,
 [if test -z "$LD"; then
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      ac_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some GNU ld's only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
-      if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
        test "$with_gnu_ld" != no && break
       else
        test "$with_gnu_ld" != yes && break
@@ -401,9 +3125,9 @@ AC_CACHE_VAL(ac_cv_path_LD,
   done
   IFS="$ac_save_ifs"
 else
-  ac_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
 fi])
-LD="$ac_cv_path_LD"
+LD="$lt_cv_path_LD"
 if test -n "$LD"; then
   AC_MSG_RESULT($LD)
 else
@@ -413,56 +3137,241 @@ test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
 AC_PROG_LD_GNU
 ])
 
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
+# AC_PROG_LD_GNU -
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-  ac_cv_prog_gnu_ld=yes
+  lt_cv_prog_gnu_ld=yes
 else
-  ac_cv_prog_gnu_ld=no
+  lt_cv_prog_gnu_ld=no
 fi])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])
+
+# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
+[lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+])
+
+# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependant libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# ['file_magic [regex]'] -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)']
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[012])
+    lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      [lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library']
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library']
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6*)
+  case $host_os in
+  irix5*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    [lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"]
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* )
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;]
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
+  else
+    [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$']
+  fi
+  ;;
+
+newos6*)
+  [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)']
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+[sysv5uw[78]* | sysv4*uw2*)]
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]']
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )']
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    [lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"]
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  esac
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
 ])
 
+
 # AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
+AC_DEFUN([AC_PROG_NM],
 [AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
+AC_CACHE_VAL(lt_cv_path_NM,
 [if test -n "$NM"; then
   # Let the user override the test.
-  ac_cv_path_NM="$NM"
+  lt_cv_path_NM="$NM"
 else
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
   for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
       # Check to see if the nm accepts a BSD-compat flag.
       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
       #   nm: unknown option "B" ignored
-      if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-       ac_cv_path_NM="$ac_dir/nm -B"
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -B"
        break
-      elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-       ac_cv_path_NM="$ac_dir/nm -p"
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -p"
        break
       else
-       ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+       lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
        continue # so that we can try to find one that supports BSD flags
       fi
     fi
   done
   IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
 fi])
-NM="$ac_cv_path_NM"
+NM="$lt_cv_path_NM"
 AC_MSG_RESULT([$NM])
 ])
 
 # AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
+AC_DEFUN([AC_CHECK_LIBM],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32*)
   # These system don't have libm
   ;;
 *-ncr-sysv4.3*)
@@ -485,8 +3394,9 @@ esac
 # '${top_srcdir}/' (note the single quotes!).  If your package is not
 # flat and you're not using automake, define top_builddir and
 # top_srcdir appropriately in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-  case "$enable_ltdl_convenience" in
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
   no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
   "") enable_ltdl_convenience=yes
       ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
@@ -506,7 +3416,8 @@ AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 # not flat and you're not using automake, define top_builddir and
 # top_srcdir appropriately in the Makefiles.
 # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
   AC_CHECK_LIB(ltdl, main,
   [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
   [if test x"$enable_ltdl_install" = xno; then
@@ -526,15 +3437,15 @@ AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
   fi
 ])
 
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
 
diff --git a/beecrypt/autogen.sh b/beecrypt/autogen.sh
new file mode 100755 (executable)
index 0000000..78c54ef
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+export CFLAGS
+export LDFLAGS
+
+LTV="libtoolize (GNU libtool) 1.4"
+ACV="Autoconf version 2.13"
+AMV="automake (GNU automake) 1.4-p5"
+USAGE="
+This script documents the versions of the tools I'm using to build rpm:
+       libtool-1.4
+       autoconf-2.13
+       automake-1.4-p5
+Simply edit this script to change the libtool/autoconf/automake versions
+checked if you need to, as rpm should build (and has built) with all
+recent versions of libtool/autoconf/automake.
+"
+
+[ "`libtoolize --version`" != "$LTV" ] && echo "$USAGE" && exit 1
+[ "`autoconf --version`" != "$ACV" ] && echo "$USAGE" && exit 1
+[ "`automake --version | head -1 | sed -e 's/1\.4[a-z]/1.4/'`" != "$AMV" ] && echo "$USAGE" && exit 1
+
+libtoolize --copy --force
+aclocal
+autoheader
+automake
+autoconf
+
+if [ "$1" = "--noconfigure" ]; then 
+    exit 0;
+fi
+
+if [ X"$@" = X  -a "X`uname -s`" = "XLinux" ]; then
+    if [ -d /usr/share/man ]; then
+       mandir=/usr/share/man
+       infodir=/usr/share/info
+    else
+       mandir=/usr/man
+       infodir=/usr/info
+    fi
+    ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --infodir=${infodir} --mandir=${mandir} "$@"
+else
+    ./configure "$@"
+fi
index c5a9b2a..5fbc299 100644 (file)
 #include "base64.h"
 
 #if HAVE_STDLIB_H
-#include <stdlib.h>
+# include <stdlib.h>
 #endif
 #if HAVE_STRING_H
-#include <string.h>
+# include <string.h>
 #endif
 #if HAVE_CTYPE_H
-#include <ctype.h>
+# include <ctype.h>
 #endif
 
 static const char* to_b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -58,6 +58,7 @@ char* b64enc(const memchunk* chunk)
 
                chars = 0;
 
+               /*@+charindex@*/
                while (div > 0)
                {
                        buf[0] = to_b64[ (data[0] >> 2) & 0x3f];
@@ -94,8 +95,9 @@ char* b64enc(const memchunk* chunk)
                        chars += 4;
                        break;
                }
+               /*@=charindex@*/
 
-               *(buf++) = '\n';
+       /*      *(buf++) = '\n'; This would result in a buffer overrun */
                *buf = '\0';
        }
 
@@ -161,78 +163,65 @@ memchunk* b64dec(const char* string)
                                }
                        }
 
-                       rc = (memchunk*) malloc(sizeof(memchunk));
+                       rc = memchunkAlloc((count / 4) * 3 + (rem ? (rem - 1) : 0));
 
                        if (rc)
                        {
-                               rc->size = (count / 4) * 3 + (rem ? (rem - 1) : 0);
                                if (count > 0)
                                {
-                                       rc->data = (byte*) malloc(rc->size);
+                                       register int i, qw = 0, tw = 0;
+                                       register byte* data = rc->data;
 
-                                       if (rc->data)
+                                       length = strlen(tmp = string);
+
+                                       for (i = 0; i < length; i++)
                                        {
-                                               register int i, qw = 0, tw = 0;
-                                               register byte* data = rc->data;
+                                               register char ch = string[i];
+                                               register byte bits;
 
-                                               length = strlen(tmp = string);
+                                               if (isspace(ch))
+                                                       continue;
 
-                                               for (i = 0; i < length; i++)
+                                               if ((ch >= 'A') && (ch <= 'Z'))
                                                {
-                                                       register char ch = string[i];
-                                                       register byte bits;
-
-                                                       if (isspace(ch))
-                                                               continue;
-
-                                                       if ((ch >= 'A') && (ch <= 'Z'))
-                                                       {
-                                                               bits = (byte) (ch - 'A');
-                                                       }
-                                                       else if ((ch >= 'a') && (ch <= 'z'))
-                                                       {
-                                                               bits = (byte) (ch - 'a' + 26);
-                                                       }
-                                                       else if ((ch >= '0') && (ch <= '9'))
-                                                       {
-                                                               bits = (byte) (ch - '0' + 52);
-                                                       }
-                                                       else if (ch == '=')
-                                                               break;
-
-                                                       switch (qw++)
-                                                       {
-                                                       case 0:
-                                                               data[tw+0] = (bits << 2) & 0xfc;
-                                                               break;
-                                                       case 1:
-                                                               data[tw+0] |= (bits >> 4) & 0x03;
-                                                               data[tw+1] = (bits << 4) & 0xf0;
-                                                               break;
-                                                       case 2:
-                                                               data[tw+1] |= (bits >> 2) & 0x0f;
-                                                               data[tw+2] = (bits << 6) & 0xc0;
-                                                               break;
-                                                       case 3:
-                                                               data[tw+2] |= bits & 0x3f;
-                                                               break;
-                                                       }
-
-                                                       if (qw == 4)
-                                                       {
-                                                               qw = 0;
-                                                               tw += 3;
-                                                       }
+                                                       bits = (byte) (ch - 'A');
+                                               }
+                                               else if ((ch >= 'a') && (ch <= 'z'))
+                                               {
+                                                       bits = (byte) (ch - 'a' + 26);
+                                               }
+                                               else if ((ch >= '0') && (ch <= '9'))
+                                               {
+                                                       bits = (byte) (ch - '0' + 52);
+                                               }
+                                               else if (ch == '=')
+                                                       break;
+
+                                               switch (qw++)
+                                               {
+                                               case 0:
+                                                       data[tw+0] = (bits << 2) & 0xfc;
+                                                       break;
+                                               case 1:
+                                                       data[tw+0] |= (bits >> 4) & 0x03;
+                                                       data[tw+1] = (bits << 4) & 0xf0;
+                                                       break;
+                                               case 2:
+                                                       data[tw+1] |= (bits >> 2) & 0x0f;
+                                                       data[tw+2] = (bits << 6) & 0xc0;
+                                                       break;
+                                               case 3:
+                                                       data[tw+2] |= bits & 0x3f;
+                                                       break;
+                                               }
+
+                                               if (qw == 4)
+                                               {
+                                                       qw = 0;
+                                                       tw += 3;
                                                }
-                                       }
-                                       else
-                                       {
-                                               free(rc);
-                                               rc = (memchunk*) 0;
                                        }
                                }
-                               else
-                                       rc->data = (byte*) 0;
                        }
                }
        }
index 0566768..5bb6cc6 100644 (file)
 extern "C" {
 #endif
 
-BEEDLLAPI
-char*          b64enc(const memchunk*);
-BEEDLLAPI
-memchunk*      b64dec(const char*);
+BEEDLLAPI /*@only@*/ /*@null@*/
+char*          b64enc(const memchunk*)
+       /*@*/;
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk*      b64dec(const char*)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index a139ca6..c01da18 100644 (file)
@@ -1,9 +1,9 @@
 /*
  * beecrypt.h
  *
- * Beecrypt library hooks & stubs, header
+ * BeeCrypt library hooks & stubs, header
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -20,6 +20,7 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
  */
 
 #ifndef _BEECRYPT_H
 # include "config.h"
 #endif
 
-typedef struct
-{
-       int             size;
-       byte*   data;
-} memchunk;
+#include "memchunk.h"
+#include "mp32number.h"
 
 /*
  * Entropy Sources
@@ -57,8 +55,8 @@ typedef int (*entropyNext)(uint32*, int);
 
 typedef struct
 {
-       const char*                     name;
-       const entropyNext       next;
+/*@unused@*/   const char*             name;
+/*@unused@*/   const entropyNext       next;
 } entropySource;
 
 /*
@@ -80,13 +78,26 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int                                            entropySourceCount();
+int                                            entropySourceCount(void)
+       /*@*/;
 BEEDLLAPI
-const entropySource*   entropySourceGet(int);
+const entropySource*   entropySourceGet(int)
+       /*@*/;
 BEEDLLAPI
-const entropySource*   entropySourceFind(const char*);
+const entropySource*   entropySourceFind(const char*)
+       /*@*/;
+BEEDLLAPI
+const entropySource*   entropySourceDefault(void)
+       /*@*/;
+
+/*
+ * The following function can try multiple entropy sources for gathering
+ * the requested amount. It will only try multiple sources if variable
+ * BEECRYPT_ENTROPY is not set.
+ */
 BEEDLLAPI
-const entropySource*   entropySourceDefault();
+int                                            entropyGatherNext(uint32*, int)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -98,10 +109,14 @@ const entropySource*       entropySourceDefault();
 
 typedef void randomGeneratorParam;
 
-typedef int (*randomGeneratorSetup  )(randomGeneratorParam*);
-typedef int (*randomGeneratorSeed   )(randomGeneratorParam*, const uint32*, int);
-typedef int (*randomGeneratorNext   )(randomGeneratorParam*, uint32*, int);
-typedef int (*randomGeneratorCleanup)(randomGeneratorParam*);
+typedef int (*randomGeneratorSetup  )(randomGeneratorParam*)
+       /*@*/;
+typedef int (*randomGeneratorSeed   )(randomGeneratorParam*, const uint32*, int)
+       /*@*/;
+typedef int (*randomGeneratorNext   )(randomGeneratorParam*, uint32*, int)
+       /*@*/;
+typedef int (*randomGeneratorCleanup)(randomGeneratorParam*)
+       /*@*/;
 
 /*
  * The struct 'randomGenerator' holds information and pointers to code specific
@@ -145,7 +160,7 @@ typedef int (*randomGeneratorCleanup)(randomGeneratorParam*);
 typedef struct
 {
        const char*                                             name;
-       const int                                               paramsize;
+       const unsigned int                              paramsize;
        const randomGeneratorSetup              setup;
        const randomGeneratorSeed               seed;
        const randomGeneratorNext               next;
@@ -171,13 +186,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int                                            randomGeneratorCount();
+int                                            randomGeneratorCount(void)
+       /*@*/;
 BEEDLLAPI
-const randomGenerator* randomGeneratorGet(int);
+const randomGenerator* randomGeneratorGet(int)
+       /*@*/;
 BEEDLLAPI
-const randomGenerator* randomGeneratorFind(const char*);
+const randomGenerator* randomGeneratorFind(const char*)
+       /*@*/;
 BEEDLLAPI
-const randomGenerator* randomGeneratorDefault();
+const randomGenerator* randomGeneratorDefault(void)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -205,9 +224,11 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void randomGeneratorContextInit(randomGeneratorContext*, const randomGenerator*);
+int randomGeneratorContextInit(randomGeneratorContext*, const randomGenerator*)
+       /*@*/;
 BEEDLLAPI
-void randomGeneratorContextFree(randomGeneratorContext*);
+int randomGeneratorContextFree(randomGeneratorContext*)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -219,9 +240,12 @@ void randomGeneratorContextFree(randomGeneratorContext*);
 
 typedef void hashFunctionParam;
 
-typedef int (*hashFunctionReset )(hashFunctionParam*);
-typedef int (*hashFunctionUpdate)(hashFunctionParam*, const byte*, int);
-typedef int (*hashFunctionDigest)(hashFunctionParam*, uint32*);
+typedef int (*hashFunctionReset )(hashFunctionParam*)
+       /*@*/;
+typedef int (*hashFunctionUpdate)(hashFunctionParam*, const byte*, int)
+       /*@*/;
+typedef int (*hashFunctionDigest)(hashFunctionParam*, uint32*)
+       /*@*/;
 
 /*
  * The struct 'hashFunction' holds information and pointers to code specific
@@ -245,7 +269,7 @@ typedef int (*hashFunctionDigest)(hashFunctionParam*, uint32*);
  * This function computes the digest of all the data passed to the hash
  * function, and stores the result in data.
  * Return value is 0 on success, or -1 on failure.
- * NOTE: data must be at least have a bytesize of 'digestsize' as described
+ * NOTE: data MUST have a size (in bytes) of at least 'digestsize' as described
  * in the hashFunction struct.
  * NOTE: for safety reasons, after calling digest, each specific implementation
  * MUST reset itself so that previous values in the parameters are erased.
@@ -254,8 +278,9 @@ typedef int (*hashFunctionDigest)(hashFunctionParam*, uint32*);
 typedef struct
 {
        const char*                                     name;
-       const int                                       paramsize;      /* in bytes */
-       const int                                       digestsize;     /* in bytes */
+       const unsigned int                      paramsize;      /* in bytes */
+       const unsigned int                      blocksize;      /* in bytes */
+       const unsigned int                      digestsize;     /* in bytes */
        const hashFunctionReset         reset;
        const hashFunctionUpdate        update;
        const hashFunctionDigest        digest;
@@ -280,13 +305,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int                                    hashFunctionCount();
+int                                    hashFunctionCount(void)
+       /*@*/;
 BEEDLLAPI
-const hashFunction*    hashFunctionGet(int);
+const hashFunction*    hashFunctionGet(int)
+       /*@*/;
 BEEDLLAPI
-const hashFunction*    hashFunctionFind(const char*);
+const hashFunction*    hashFunctionFind(const char*)
+       /*@*/;
 BEEDLLAPI
-const hashFunction*    hashFunctionDefault();
+const hashFunction*    hashFunctionDefault(void)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -299,8 +328,8 @@ const hashFunction* hashFunctionDefault();
 
 typedef struct
 {
-       const hashFunction* hash;
-       hashFunctionParam* param;
+/*@unused@*/   const hashFunction* algo;
+/*@unused@*/   hashFunctionParam* param;
 } hashFunctionContext;
 
 /*
@@ -314,9 +343,29 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void hashFunctionContextInit(hashFunctionContext*, const hashFunction*);
+int hashFunctionContextInit(hashFunctionContext* ctxt, const hashFunction*)
+       /*@modifies ctxt */;
+BEEDLLAPI
+int hashFunctionContextFree(hashFunctionContext* ctxt)
+       /*@modifies ctxt */;
+BEEDLLAPI
+int hashFunctionContextReset(hashFunctionContext* ctxt)
+       /*@modifies ctxt */;
+BEEDLLAPI
+int hashFunctionContextUpdate(hashFunctionContext* ctxt, const byte*, int)
+       /*@modifies ctxt */;
+BEEDLLAPI
+int hashFunctionContextUpdateMC(hashFunctionContext* ctxt, const memchunk*)
+       /*@modifies ctxt */;
 BEEDLLAPI
-void hashFunctionContextFree(hashFunctionContext*);
+int hashFunctionContextUpdateMP32(hashFunctionContext* ctxt, const mp32number*)
+       /*@modifies ctxt */;
+BEEDLLAPI
+int hashFunctionContextDigest(hashFunctionContext* ctxt, mp32number*)
+       /*@modifies ctxt */;
+BEEDLLAPI
+int hashFunctionContextDigestMatch(hashFunctionContext* ctxt, const mp32number*)
+       /*@modifies ctxt */;
 
 #ifdef __cplusplus
 }
@@ -328,10 +377,14 @@ void hashFunctionContextFree(hashFunctionContext*);
 
 typedef void keyedHashFunctionParam;
 
-typedef int (*keyedHashFunctionSetup  )(keyedHashFunctionParam*, const uint32*, int);
-typedef int (*keyedHashFunctionReset  )(keyedHashFunctionParam*);
-typedef int (*keyedHashFunctionUpdate )(keyedHashFunctionParam*, const byte*, int);
-typedef int (*keyedHashFunctionDigest )(keyedHashFunctionParam*, uint32*);
+typedef int (*keyedHashFunctionSetup  )(keyedHashFunctionParam*, const uint32*, int)
+       /*@*/;
+typedef int (*keyedHashFunctionReset  )(keyedHashFunctionParam*)
+       /*@*/;
+typedef int (*keyedHashFunctionUpdate )(keyedHashFunctionParam*, const byte*, int)
+       /*@*/;
+typedef int (*keyedHashFunctionDigest )(keyedHashFunctionParam*, uint32*)
+       /*@*/;
 
 /*
  * The struct 'keyedHashFunction' holds information and pointers to code
@@ -376,11 +429,12 @@ typedef int (*keyedHashFunctionDigest )(keyedHashFunctionParam*, uint32*);
 typedef struct
 {
        const char*                                             name;
-       const int                                               paramsize;      /* in bytes */
-       const int                                               digestsize;     /* in bytes */
-       const int                                               keybitsmin;     /* in bits */
-       const int                                               keybitsmax;     /* in bits */
-       const int                                               keybitsinc;     /* in bits */
+       const unsigned int                              paramsize;      /* in bytes */
+       const unsigned int                              blocksize;      /* in bytes */
+       const unsigned int                              digestsize;     /* in bytes */
+       const unsigned int                              keybitsmin;     /* in bits */
+       const unsigned int                              keybitsmax;     /* in bits */
+       const unsigned int                              keybitsinc;     /* in bits */
        const keyedHashFunctionSetup    setup;
        const keyedHashFunctionReset    reset;
        const keyedHashFunctionUpdate   update;
@@ -393,7 +447,7 @@ typedef struct
  *
  * keyedHashFunctionCount returns the number of keyed hash functions available.
  *
- * keyedHashFunctionGet returns the random generator with a given index
+ * keyedHashFunctionGet returns the keyed hash function with a given index
  * (starting at zero, up to keyedHashFunctionCount() - 1), or NULL if the index
  * was out of bounds.
  *
@@ -406,13 +460,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int                                                    keyedHashFunctionCount();
+int                                                    keyedHashFunctionCount(void)
+       /*@*/;
 BEEDLLAPI
-const keyedHashFunction*       keyedHashFunctionGet(int);
+const keyedHashFunction*       keyedHashFunctionGet(int)
+       /*@*/;
 BEEDLLAPI
-const keyedHashFunction*       keyedHashFunctionFind(const char*);
+const keyedHashFunction*       keyedHashFunctionFind(const char*)
+       /*@*/;
 BEEDLLAPI
-const keyedHashFunction*       keyedHashFunctionDefault();
+const keyedHashFunction*       keyedHashFunctionDefault(void)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -425,8 +483,8 @@ const keyedHashFunction*    keyedHashFunctionDefault();
 
 typedef struct
 {
-       const keyedHashFunction*        hash;
-       keyedHashFunctionParam*         param;
+/*@unused@*/   const keyedHashFunction*        algo;
+/*@unused@*/   keyedHashFunctionParam*         param;
 } keyedHashFunctionContext;
 
 /*
@@ -440,9 +498,32 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void keyedHashFunctionContextInit(keyedHashFunctionContext*, const keyedHashFunction*);
+int keyedHashFunctionContextInit(keyedHashFunctionContext*, const keyedHashFunction*)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextFree(keyedHashFunctionContext*)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextSetup(keyedHashFunctionContext*, const uint32*, int)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextReset(keyedHashFunctionContext*)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextUpdate(keyedHashFunctionContext*, const byte*, int)
+       /*@*/;
 BEEDLLAPI
-void keyedHashFunctionContextFree(keyedHashFunctionContext*);
+int keyedHashFunctionContextUpdateMC(keyedHashFunctionContext*, const memchunk*)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextUpdateMP32(keyedHashFunctionContext*, const mp32number*)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextDigest(keyedHashFunctionContext*, mp32number*)
+       /*@*/;
+BEEDLLAPI
+int keyedHashFunctionContextDigestMatch(keyedHashFunctionContext*, const mp32number*)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -460,14 +541,18 @@ typedef enum
 
 typedef enum
 {
+       /*@-enummemuse@*/
        ECB,
+       /*@=enummemuse@*/
        CBC
 } cipherMode;
 
 typedef void blockCipherParam;
 
-typedef int (*blockModeEncrypt)(blockCipherParam*, int, uint32*, const uint32*, const uint32*);
-typedef int (*blockModeDecrypt)(blockCipherParam*, int, uint32*, const uint32*, const uint32*);
+typedef int (*blockModeEncrypt)(blockCipherParam*, int, uint32*, const uint32*)
+       /*@*/;
+typedef int (*blockModeDecrypt)(blockCipherParam*, int, uint32*, const uint32*)
+       /*@*/;
 
 typedef struct
 {
@@ -475,9 +560,14 @@ typedef struct
        const blockModeDecrypt  decrypt;
 } blockMode;
 
-typedef int (*blockCipherSetup  )(blockCipherParam*, const uint32*, int, cipherOperation);
-typedef int (*blockCipherEncrypt)(blockCipherParam*, uint32 *);
-typedef int (*blockCipherDecrypt)(blockCipherParam*, uint32 *);
+typedef int (*blockCipherSetup  )(blockCipherParam*, const uint32*, int, cipherOperation)
+       /*@*/;
+typedef int (*blockCipherSetIV  )(blockCipherParam*, const uint32*)
+       /*@*/;
+typedef int (*blockCipherEncrypt)(blockCipherParam*, uint32*, const uint32*)
+       /*@*/;
+typedef int (*blockCipherDecrypt)(blockCipherParam*, uint32*, const uint32*)
+       /*@*/;
 
 /*
  * The struct 'blockCipher' holds information and pointers to code specific
@@ -516,12 +606,13 @@ typedef int (*blockCipherDecrypt)(blockCipherParam*, uint32 *);
 typedef struct
 {
        const char*                                     name;
-       const int                                       paramsize;      /* in bytes */
-       const int                                       keybitsmin;     /* in bits */
-       const int                                       keybitsmax;     /* in bits */
-       const int                                       keybitsinc;     /* in bits */
-       const int                                       blockbits;      /* in bits */
+       const unsigned int                      paramsize;      /* in bytes */
+       const unsigned int                      blocksize;      /* in bytes */
+       const unsigned int                      keybitsmin;     /* in bits */
+       const unsigned int                      keybitsmax;     /* in bits */
+       const unsigned int                      keybitsinc;     /* in bits */
        const blockCipherSetup          setup;
+       const blockCipherSetIV          setiv;
        const blockCipherEncrypt        encrypt;
        const blockCipherDecrypt        decrypt;
        const blockMode*                        mode;
@@ -546,13 +637,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int                                            blockCipherCount();
+int                                            blockCipherCount(void)
+       /*@*/;
 BEEDLLAPI
-const blockCipher*             blockCipherGet(int);
+const blockCipher*             blockCipherGet(int)
+       /*@*/;
 BEEDLLAPI
-const blockCipher*             blockCipherFind(const char*);
+const blockCipher*             blockCipherFind(const char*)
+       /*@*/;
 BEEDLLAPI
-const blockCipher*             blockCipherDefault();
+const blockCipher*             blockCipherDefault(void)
+       /*@*/;
 
 #ifdef __cplusplus
 }
@@ -565,7 +660,7 @@ const blockCipher*          blockCipherDefault();
 
 typedef struct
 {
-       const blockCipher* ciph;
+       const blockCipher* algo;
        blockCipherParam* param;
 } blockCipherContext;
 
@@ -580,9 +675,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void blockCipherContextInit(blockCipherContext*, const blockCipher*);
+int blockCipherContextInit(blockCipherContext*, const blockCipher*)
+       /*@*/;
+BEEDLLAPI
+int blockCipherContextSetup(blockCipherContext*, const uint32*, int, cipherOperation)
+       /*@*/;
+BEEDLLAPI
+int blockCipherContextSetIV(blockCipherContext*, const uint32*)
+       /*@*/;
 BEEDLLAPI
-void blockCipherContextFree(blockCipherContext*);
+int blockCipherContextFree(blockCipherContext*)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index acbf972..88b4a12 100644 (file)
@@ -33,9 +33,11 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int blockEncrypt(const blockCipher*, blockCipherParam*, cipherMode, int, uint32*, const uint32*, const uint32*);
+int blockEncrypt(const blockCipher*, blockCipherParam*, cipherMode, int, uint32*, const uint32*)
+       /*@*/;
 BEEDLLAPI
-int blockDecrypt(const blockCipher*, blockCipherParam*, cipherMode, int, uint32*, const uint32*, const uint32*);
+int blockDecrypt(const blockCipher*, blockCipherParam*, cipherMode, int, uint32*, const uint32*)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index 0efccf2..61d8c08 100644 (file)
 #if HAVE_STDLIB_H
 # include <stdlib.h>
 #endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
+#endif
+#if HAVE_STRING_H
+# include <string.h>
+#endif
 
-int pkcs5PadInline(int blockbytes, memchunk* src)
+memchunk* pkcs5Pad(int blockbytes, memchunk* tmp)
 {
-       if (src != (memchunk*) 0)
+       if (tmp)
        {
-               byte padvalue = blockbytes - (src->size % blockbytes);
+               byte padvalue = blockbytes - (tmp->size % blockbytes);
 
-               src->size += padvalue;
-               src->data = (byte*) realloc(src->data, src->size);
-               memset(src->data - padvalue, padvalue, padvalue);
+               tmp = memchunkResize(tmp, tmp->size + padvalue);
 
-               return 0;
+               if (tmp)
+                       memset(tmp->data - padvalue, padvalue, padvalue);
        }
 
-       return -1;
+       return tmp;
 }
 
-int pkcs5UnpadInline(int blockbytes, memchunk* src)
+memchunk* pkcs5Unpad(int blockbytes, memchunk* tmp)
 {
-       if (src != (memchunk*) 0)
+       if (tmp)
        {
-               byte padvalue = src->data[src->size - 1];
-
+               byte padvalue;
                int i;
 
+               if (tmp->data == (memchunk*) 0)
+                       return (memchunk*) 0;
+               padvalue = tmp->data[tmp->size - 1];
                if (padvalue > blockbytes)
-                       return -1;
+                       return (memchunk*) 0;
 
-               for (i = (src->size - padvalue); i < (src->size - 1); i++)
+               for (i = (tmp->size - padvalue); i < (tmp->size - 1); i++)
                {
-                       if (src->data[i] != padvalue)
-                               return -1;
+                       if (tmp->data[i] != padvalue)
+                               return (memchunk*) 0;
                }
 
-               src->size -= padvalue;
-/*             src->data = (byte*) realloc(src->data, src->size; */
-
-               return 0;
+               tmp->size -= padvalue;
+/*             tmp->data = (byte*) realloc(tmp->data, tmp->size; */
        }
 
-       return -1;
+       /*@-temptrans@*/
+       return tmp;
+       /*@=temptrans@*/
 }
 
-memchunk* pkcs5Pad(int blockbytes, const memchunk* src)
+memchunk* pkcs5PadCopy(int blockbytes, const memchunk* src)
 {
-       memchunk* dst;
+       memchunk* tmp;
+       byte padvalue = blockbytes - (src->size % blockbytes);
 
        if (src == (memchunk*) 0)
                return (memchunk*) 0;
 
-       dst = (memchunk*) calloc(1, sizeof(memchunk));
+       tmp = memchunkAlloc(src->size + padvalue);
 
-       if (dst != (memchunk*) 0)
+       if (tmp)
        {
-               byte padvalue = blockbytes - (src->size % blockbytes);
-
-               dst->size = src->size + padvalue;
-
-               dst->data = (byte*) malloc(dst->size);
-
-               if (dst->data == (byte*) 0)
-               {
-                       free(dst);
-                       dst = (memchunk*) 0;
-               }
-               else
-               {
-                       memcpy(dst->data, src->data, src->size);
-                       memset(dst->data+src->size, padvalue, padvalue);
-               }
+               memcpy(tmp->data, src->data, src->size);
+               memset(tmp->data+src->size, padvalue, padvalue);
        }
 
-       return dst;
+       return tmp;
 }
 
-memchunk* pkcs5Unpad(int blockbytes, const memchunk* src)
+memchunk* pkcs5UnpadCopy(/*@unused@*/ int blockbytes, const memchunk* src)
 {
-       memchunk* dst;
+       memchunk* tmp;
+       byte padvalue;
+       int i;
 
        if (src == (memchunk*) 0)
                return (memchunk*) 0;
+       if (src->data == (memchunk*) 0)
+               return (memchunk*) 0;
 
-       dst = (memchunk*) calloc(1, sizeof(memchunk));
+       padvalue = src->data[src->size - 1];
 
-       if (dst != (memchunk*) 0)
+       for (i = (src->size - padvalue); i < (src->size - 1); i++)
        {
-               byte padvalue = src->data[src->size - 1];
-               int i;
-
-               for (i = (src->size - padvalue); i < (src->size - 1); i++)
-               {
-                       if (src->data[i] != padvalue)
-                       {
-                               free(dst);
-                               return (memchunk*) 0;
-                       }
-               }
+               if (src->data[i] != padvalue)
+                       return (memchunk*) 0;
+       }
 
-               dst->size = src->size - padvalue;
-               dst->data = (byte*) malloc(dst->size);
+       tmp = memchunkAlloc(src->size - padvalue);
 
-               if (dst->data == (byte*) 0)
-               {
-                       free(dst);
-                       dst = (memchunk*) 0;
-               }
-               else
-               {
-                       memcpy(dst->data, src->data, dst->size);
-               }
-       }
+       if (tmp)
+               memcpy(tmp->data, src->data, tmp->size);
 
-       return dst;
+       return tmp;
 }
index c845646..683f763 100644 (file)
 extern "C" {
 #endif
 
-BEEDLLAPI
-int pkcs5PadInline  (int, memchunk*);
-BEEDLLAPI
-int pkcs5UnpadInline(int, memchunk*);
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk* pkcs5Pad  (int, /*@only@*/ /*@null@*/ memchunk* tmp)
+       /*@modifies tmp */;
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk* pkcs5Unpad(int, /*@null@*/ memchunk* tmp)
+       /*@modifies tmp */;
 
-BEEDLLAPI
-memchunk* pkcs5Pad  (int, const memchunk*);
-BEEDLLAPI
-memchunk* pkcs5Unpad(int, const memchunk*);
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk* pkcs5PadCopy  (int, const memchunk* tmp)
+       /*@*/;
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk* pkcs5UnpadCopy(int, const memchunk* tmp)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index b35181b..7bf4132 100644 (file)
@@ -10,7 +10,7 @@
  *
  * Also see: http://www.counterpane.com/blowfish.html
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 19992000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -313,64 +313,94 @@ static const blockMode blowfishModes[2] =
        { /* CBC */ (blockModeEncrypt) blowfishCBCEncrypt, (blockModeDecrypt) blowfishCBCDecrypt }
 };
 
-const blockCipher blowfish = { "Blowfish", sizeof(blowfishParam), 64, 448, 32, 64, (const blockCipherSetup) blowfishSetup, (const blockCipherEncrypt) blowfishEncrypt, (const blockCipherDecrypt) blowfishDecrypt, blowfishModes };
+const blockCipher blowfish = { "Blowfish", sizeof(blowfishParam), 8, 64, 448, 32, (blockCipherSetup) blowfishSetup, (blockCipherSetIV) blowfishSetIV, (blockCipherEncrypt) blowfishEncrypt, (blockCipherDecrypt) blowfishDecrypt, blowfishModes };
 
-int blowfishSetup(blowfishParam* bp, const uint32* key, int keybits, cipherOperation op)
+int blowfishSetup(blowfishParam* bp, const uint32* key, int keybits, /*@unused@*/ cipherOperation op)
 {
-       uint32 work[2];
+       if (((keybits & 7) == 0) && (keybits >= 64) && (keybits <= 448))
+       {
+               register uint32* p = bp->p;
+               register uint32* s = bp->s;
+               register int i;
 
-       register int keywords = (keybits >> 5); /* i.e. in 32 bit words */
-       register uint32* p = bp->p;
-       register uint32* s = bp->s;
-       register int i;
+               uint32 work[2];
 
-       if ((keywords < 2) || (keywords > 14))
-               return -1;
+               memcpy(p, _bf_p, BLOWFISHPSIZE * sizeof(uint32));
+               memcpy(s, _bf_s, 1024 * sizeof(uint32));
 
-       memcpy(p, _bf_p, BLOWFISHPSIZE * sizeof(uint32));
-       memcpy(s, _bf_s, 1024 * sizeof(uint32));
+               if ((keybits & 31) == 0)
+               {
+                       register int keywords = (keybits >> 5); /* i.e. in 32 bit words */
 
-       for (i = 0; i < BLOWFISHPSIZE; i++)
-       {
-               /* key is stored in 32 bit words in host-endian format; no swap necessary */
-               p[i] ^= key[i % keywords];
-       }
+                       for (i = 0; i < BLOWFISHPSIZE; i++)
+                       {
+                               /* key is stored in 32 bit words in host-endian format; no swap necessary */
+                               p[i] ^= key[i % keywords];
+                       }
+               }
+               else
+                       return -1;
 
-       work[0] = work[1] = 0;
+               work[0] = work[1] = 0;
 
-       for (i = 0; i < BLOWFISHPSIZE; i += 2, p += 2)
-       {
-               blowfishEncrypt(bp, work);
-               #if WORDS_BIGENDIAN
-               p[0] = work[0];
-               p[1] = work[1];
-               #else
-               p[0] = swapu32(work[0]);
-               p[1] = swapu32(work[1]);
-               #endif
+               for (i = 0; i < BLOWFISHPSIZE; i += 2, p += 2)
+               {
+                       (void) blowfishEncrypt(bp, work, work);
+                       #if WORDS_BIGENDIAN
+                       p[0] = work[0];
+                       p[1] = work[1];
+                       #else
+                       p[0] = swapu32(work[0]);
+                       p[1] = swapu32(work[1]);
+                       #endif
+               }
+
+               for (i = 0; i < 1024; i += 2, s += 2)
+               {
+                       (void) blowfishEncrypt(bp, work, work);
+                       #if WORDS_BIGENDIAN
+                       s[0] = work[0];
+                       s[1] = work[1];
+                       #else
+                       s[0] = swapu32(work[0]);
+                       s[1] = swapu32(work[1]);
+                       #endif
+               }
+
+               /* clear fdback/iv */
+               bp->fdback[0] = 0;
+               bp->fdback[1] = 0;
+
+               return 0;
        }
+       return -1;
+}
 
-       for (i = 0; i < 1024; i += 2, s += 2)
+#ifndef ASM_BLOWFISHSETIV
+int blowfishSetIV(blowfishParam* bp, const uint32* iv)
+{
+       if (iv)
        {
-               blowfishEncrypt(bp, work);
-               #if WORDS_BIGENDIAN
-               s[0] = work[0];
-               s[1] = work[1];
-               #else
-               s[0] = swapu32(work[0]);
-               s[1] = swapu32(work[1]);
-               #endif
+               bp->fdback[0] = iv[0];
+               bp->fdback[1] = iv[1];
        }
+       else
+       {
+               bp->fdback[0] = 0;
+               bp->fdback[1] = 0;
+       }
+
        return 0;
 }
+#endif
 
 #ifndef ASM_BLOWFISHENCRYPT
-int blowfishEncrypt(blowfishParam* bp, uint32* bl)
+int blowfishEncrypt(blowfishParam* bp, uint32* dst, const uint32* src)
 {
        #if WORDS_BIGENDIAN
-       register uint32 xl = bl[0], xr = bl[1];
+       register uint32 xl = src[0], xr = src[1];
        #else
-       register uint32 xl = swapu32(bl[0]), xr = swapu32(bl[1]);
+       register uint32 xl = swapu32(src[0]), xr = swapu32(src[1]);
        #endif
        register uint32* p = bp->p;
        register uint32* s = bp->s;
@@ -385,11 +415,11 @@ int blowfishEncrypt(blowfishParam* bp, uint32* bl)
        EROUND(xl, xr); EROUND(xr, xl);
 
        #if WORDS_BIGENDIAN
-       bl[1] = xl ^ *(p++);
-       bl[0] = xr ^ *(p++);
+       dst[1] = xl ^ *(p++);
+       dst[0] = xr ^ *(p++);
        #else
-       bl[1] = swapu32(xl ^ *(p++));
-       bl[0] = swapu32(xr ^ *(p++));
+       dst[1] = swapu32(xl ^ *(p++));
+       dst[0] = swapu32(xr ^ *(p++));
        #endif
 
        return 0;
@@ -397,12 +427,12 @@ int blowfishEncrypt(blowfishParam* bp, uint32* bl)
 #endif
 
 #ifndef ASM_BLOWFISHDECRYPT
-int blowfishDecrypt(blowfishParam* bp, uint32* bl)
+int blowfishDecrypt(blowfishParam* bp, uint32* dst, const uint32* src)
 {
        #if WORDS_BIGENDIAN
-       register uint32 xl = bl[0], xr = bl[1];
+       register uint32 xl = src[0], xr = src[1];
        #else
-       register uint32 xl = swapu32(bl[0]), xr = swapu32(bl[1]);
+       register uint32 xl = swapu32(src[0]), xr = swapu32(src[1]);
        #endif
        register uint32* p = bp->p+BLOWFISHPSIZE-1;
        register uint32* s = bp->s;
@@ -417,11 +447,11 @@ int blowfishDecrypt(blowfishParam* bp, uint32* bl)
        DROUND(xl, xr); DROUND(xr, xl);
 
        #if WORDS_BIGENDIAN
-       bl[1] = xl ^ *(p--);
-       bl[0] = xr ^ *(p--);
+       dst[1] = xl ^ *(p--);
+       dst[0] = xr ^ *(p--);
        #else
-       bl[1] = swapu32(xl ^ *(p--));
-       bl[0] = swapu32(xr ^ *(p--));
+       dst[1] = swapu32(xl ^ *(p--));
+       dst[0] = swapu32(xr ^ *(p--));
        #endif
 
        return 0;
@@ -433,10 +463,7 @@ int blowfishECBEncrypt(blowfishParam* bp, int count, uint32* dst, const uint32*
 {
        while (count > 0)
        {
-               dst[0] = src[0];
-               dst[1] = src[1];
-
-               blowfishEncrypt(bp, dst);
+               (void) blowfishEncrypt(bp, dst, src);
 
                dst += 2;
                src += 2;
@@ -452,10 +479,7 @@ int blowfishECBDecrypt(blowfishParam* bp, int count, uint32* dst, const uint32*
 {
        while (count > 0)
        {
-               dst[0] = src[0];
-               dst[1] = src[1];
-
-               blowfishDecrypt(bp, dst);
+               (void) blowfishDecrypt(bp, dst, src);
 
                dst += 2;
                src += 2;
@@ -467,22 +491,14 @@ int blowfishECBDecrypt(blowfishParam* bp, int count, uint32* dst, const uint32*
 #endif
 
 #ifndef ASM_BLOWFISHCBCENCRYPT
-int blowfishCBCEncrypt(blowfishParam* bp, int count, uint32* dst, const uint32* src, const uint32* iv)
+int blowfishCBCEncrypt(blowfishParam* bp, int count, uint32* dst, const uint32* src)
 {
        if (count > 0)
        {
-               if (iv)
-               {
-                       dst[0] = src[0] ^ iv[0];
-                       dst[1] = src[1] ^ iv[1];
-               }
-               else
-               {
-                       dst[0] = src[0];
-                       dst[1] = src[1];
-               }
+               dst[0] = src[0] ^ bp->fdback[0];
+               dst[1] = src[1] ^ bp->fdback[1];
 
-               blowfishEncrypt(bp, dst);
+               (void) blowfishEncrypt(bp, dst, dst);
 
                dst += 2;
                src += 2;
@@ -494,53 +510,90 @@ int blowfishCBCEncrypt(blowfishParam* bp, int count, uint32* dst, const uint32*
                        dst[0] = src[0] ^ dst[-2];
                        dst[1] = src[1] ^ dst[-1];
 
-                       blowfishEncrypt(bp, dst);
+                       (void) blowfishEncrypt(bp, dst, dst);
 
                        dst += 2;
                        src += 2;
 
                        count--;
                }
+
+               bp->fdback[0] = dst[-2];
+               bp->fdback[1] = dst[-1];
        }
        return 0;
 }
 #endif
 
 #ifndef ASM_BLOWFISHCBCDECRYPT
-int blowfishCBCDecrypt(blowfishParam* bp, int count, uint32* dst, const uint32* src, const uint32* iv)
+int blowfishCBCDecrypt(blowfishParam* bp, int count, uint32* dst, const uint32* src)
 {
        if (count > 0)
        {
-               dst[0] = src[0];
-               dst[1] = src[1];
+               if (src == dst)
+               {
+                       register uint32 fb0 = src[0];
+                       register uint32 fb1 = src[1];
 
-               blowfishDecrypt(bp, dst);
+                       (void) blowfishDecrypt(bp, dst, src);
 
-               if (iv)
-               {
-                       dst[0] ^= iv[0];
-                       dst[1] ^= iv[1];
-               }
+                       dst[0] ^= bp->fdback[0];
+                       dst[1] ^= bp->fdback[1];
 
-               dst += 2;
-               src += 2;
+                       dst += 2;
+                       src += 2;
 
-               count--;
+                       count--;
 
-               while (count > 0)
-               {
-                       dst[0] = src[0];
-                       dst[1] = src[1];
+                       while (count > 0)
+                       {
+                               register int src0 = src[0];
+                               register int src1 = src[1];
 
-                       blowfishDecrypt(bp, dst);
+                               (void) blowfishDecrypt(bp, dst, src);
 
-                       dst[0] ^= src[-2];
-                       dst[1] ^= src[-1];
+                               dst[0] ^= fb0;
+                               dst[1] ^= fb1;
+
+                               fb0 = src0;
+                               fb1 = src1;
+
+                               dst += 2;
+                               src += 2;
+
+                               count--;
+                       }
+
+                       bp->fdback[0] = fb0;
+                       bp->fdback[1] = fb1;
+               }
+               else
+               {
+                       (void) blowfishDecrypt(bp, dst, src);
+
+                       dst[0] ^= bp->fdback[0];
+                       dst[1] ^= bp->fdback[1];
 
                        dst += 2;
                        src += 2;
 
                        count--;
+
+                       while (count > 0)
+                       {
+                               (void) blowfishDecrypt(bp, dst, src);
+
+                               dst[0] ^= src[-2];
+                               dst[1] ^= src[-1];
+
+                               dst += 2;
+                               src += 2;
+
+                               count--;
+                       }
+
+                       bp->fdback[0] = src[-2];
+                       bp->fdback[1] = src[-1];
                }
        }
        return 0;
index 2bfc497..2955bb8 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Blowfish block cipher, header
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 19992000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -36,6 +36,7 @@ typedef struct
 {
        uint32 p[BLOWFISHPSIZE];
        uint32 s[1024];
+       uint32 fdback[2];
 } blowfishParam;
 
 #ifdef __cplusplus
@@ -45,21 +46,31 @@ extern "C" {
 extern const BEEDLLAPI blockCipher blowfish;
 
 BEEDLLAPI
-int blowfishSetup  (blowfishParam*, const uint32*, int, cipherOperation);
+int blowfishSetup  (blowfishParam* bp, const uint32*, int, cipherOperation)
+       /*@modifies bp */;
 BEEDLLAPI
-int blowfishEncrypt(blowfishParam*, uint32*);
+int blowfishSetIV  (blowfishParam* bp, const uint32*)
+       /*@modifies bp */;
 BEEDLLAPI
-int blowfishDecrypt(blowfishParam*, uint32*);
+int blowfishEncrypt(blowfishParam* bp, uint32* dst, const uint32*)
+       /*@modifies bp, dst */;
+BEEDLLAPI
+int blowfishDecrypt(blowfishParam* bp, uint32* dst, const uint32*)
+       /*@modifies bp, dst */;
 
 BEEDLLAPI
-int blowfishECBEncrypt(blowfishParam*, int, uint32*, const uint32*);
+int blowfishECBEncrypt(blowfishParam* bp, int, uint32* dst, const uint32*)
+       /*@modifies bp, dst */;
 BEEDLLAPI
-int blowfishECBDecrypt(blowfishParam*, int, uint32*, const uint32*);
+int blowfishECBDecrypt(blowfishParam* bp, int, uint32* dst, const uint32*)
+       /*@modifies bp, dst */;
 
 BEEDLLAPI
-int blowfishCBCEncrypt(blowfishParam*, int, uint32*, const uint32*, const uint32*);
+int blowfishCBCEncrypt(blowfishParam* bp, int, uint32* dst, const uint32*)
+       /*@modifies bp, dst */;
 BEEDLLAPI
-int blowfishCBCDecrypt(blowfishParam*, int, uint32*, const uint32*, const uint32*);
+int blowfishCBCDecrypt(blowfishParam* bp, int, uint32* dst, const uint32*)
+       /*@modifies bp, dst */;
 
 #ifdef __cplusplus
 }
index 7a745eb..d33dbd8 100644 (file)
@@ -1,73 +1,43 @@
 /* config.gnu.h.in.  Generated automatically from configure.in by autoheader.  */
-/*
- * acconfig.h
- *
- * acconfig.h pre-announces symbols defines by configure.in
- *
- * Copyright (c) 2001 Virtual Unlimited B.V.
- *
- * Author: Bob Deblier <bob@virtualunlimited.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#ifndef _REENTRANT
-#define _REENTRANT
-#endif
 
-#undef PACKAGE
-#undef VERSION
+/* Define to empty if the keyword does not work.  */
+#undef const
 
-#define AIX                    0
-#define BEOS           0
-#define CYGWIN         0
-#define DARWIN         0
-#define FREEBSD                0
-#define HPUX           0
-#define LINUX          0
-#define MACOSX         0
-#define NETBSD         0
-#define OPENBSD                0
-#define OSF                    0
-#define QNX                    0
-#define SCO_UNIX       0
-#define SOLARIS                0
-#ifndef WIN32
-# define WIN32         0
-#endif
+/* Define as __inline if that's what the C compiler calls it.  */
+#undef inline
 
-#define LEADING_UNDERSCORE     0
-#define NO_UNDERSCORES         0
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+#undef size_t
 
-#define JAVAGLUE       0
+/* Define if you have the ANSI C header files.  */
+#undef STDC_HEADERS
 
-#undef HAVE_ERRNO_H
-#undef HAVE_STRING_H
-#undef HAVE_CTYPE_H
-#undef HAVE_STDLIB_H
-#undef HAVE_MTMALLOC_H
+/* Define if your processor stores words with the most significant
+   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
+#undef WORDS_BIGENDIAN
 
-#undef HAVE_UNISTD_H
-#undef HAVE_FCNTL_H
+#define AIX   0
+#define BEOS  0
+#define CYGWIN  0
+#define DARWIN  0
+#define FREEBSD  0
+#define HPUX  0
+#define LINUX  0
+#define MACOSX  0
+#define NETBSD  0
+#define OPENBSD  0
+#define OSF   0
+#define QNX   0
+#define SCO_UNIX 0
+#define SOLARIS  0
+#ifndef WIN32
+# define WIN32  0
+#endif
 
-#undef HAVE_TIME_H
+#define LEADING_UNDERSCORE 0
+#define NO_UNDERSCORES  0
 
-#undef HAVE_SYS_TYPES_H
-#undef HAVE_SYS_STAT_H
-#undef HAVE_SYS_TIME_H
+#define JAVAGLUE 0
 
 #undef ENABLE_THREADS
 #undef HAVE_THREAD_H
 #undef ENABLE_AIO
 #undef HAVE_AIO_H
 
-#undef HAVE_TERMIO_H
-#undef HAVE_TERMIOS_H
-
-#undef HAVE_SYS_AUDIOIO_H
-#undef HAVE_SYS_IOCTL_H
-#undef HAVE_SYS_SOUNDCARD_H
-
 #undef HAVE_GETTIMEOFDAY
 #undef HAVE_GETHRTIME
 
 #undef inline
 #endif
 
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
+/* The number of bytes in a char.  */
+#undef SIZEOF_CHAR
 
-/* Define if you have the <aio.h> header file. */
-#undef HAVE_AIO_H
+/* The number of bytes in a double.  */
+#undef SIZEOF_DOUBLE
 
-/* Define if you have the <ctype.h> header file. */
-#undef HAVE_CTYPE_H
+/* The number of bytes in a float.  */
+#undef SIZEOF_FLOAT
 
-/* Define if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
+/* The number of bytes in a int.  */
+#undef SIZEOF_INT
 
-/* Define if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
+/* The number of bytes in a long.  */
+#undef SIZEOF_LONG
 
-/* Define if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
+/* The number of bytes in a long long.  */
+#undef SIZEOF_LONG_LONG
 
-/* Define if you have the `mtmalloc' library (-lmtmalloc). */
-#undef HAVE_LIBMTMALLOC
+/* The number of bytes in a short.  */
+#undef SIZEOF_SHORT
 
-/* Define if you have the `pthread' library (-lpthread). */
-#undef HAVE_LIBPTHREAD
+/* The number of bytes in a unsigned char.  */
+#undef SIZEOF_UNSIGNED_CHAR
 
-/* Define if you have the `thread' library (-lthread). */
-#undef HAVE_LIBTHREAD
+/* The number of bytes in a unsigned int.  */
+#undef SIZEOF_UNSIGNED_INT
 
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
+/* The number of bytes in a unsigned long.  */
+#undef SIZEOF_UNSIGNED_LONG
 
-/* Define if you have the <mtmalloc.h> header file. */
+/* The number of bytes in a unsigned long long.  */
+#undef SIZEOF_UNSIGNED_LONG_LONG
+
+/* The number of bytes in a unsigned short.  */
+#undef SIZEOF_UNSIGNED_SHORT
+
+/* Define if you have the <aio.h> header file.  */
+#undef HAVE_AIO_H
+
+/* Define if you have the <ctype.h> header file.  */
+#undef HAVE_CTYPE_H
+
+/* Define if you have the <dlfcn.h> header file.  */
+#undef HAVE_DLFCN_H
+
+/* Define if you have the <errno.h> header file.  */
+#undef HAVE_ERRNO_H
+
+/* Define if you have the <fcntl.h> header file.  */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <mtmalloc.h> header file.  */
 #undef HAVE_MTMALLOC_H
 
-/* Define if you have the <pthread.h> header file. */
+/* Define if you have the <pthread.h> header file.  */
 #undef HAVE_PTHREAD_H
 
-/* Define if you have the <semaphore.h> header file. */
+/* Define if you have the <semaphore.h> header file.  */
 #undef HAVE_SEMAPHORE_H
 
-/* Define if you have the <stdlib.h> header file. */
+/* Define if you have the <stdlib.h> header file.  */
 #undef HAVE_STDLIB_H
 
-/* Define if you have the <string.h> header file. */
+/* Define if you have the <string.h> header file.  */
 #undef HAVE_STRING_H
 
-/* Define if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define if you have the <synch.h> header file. */
+/* Define if you have the <synch.h> header file.  */
 #undef HAVE_SYNCH_H
 
-/* Define if you have the <sys/audioio.h> header file. */
+/* Define if you have the <sys/audioio.h> header file.  */
 #undef HAVE_SYS_AUDIOIO_H
 
-/* Define if you have the <sys/ioctl.h> header file. */
+/* Define if you have the <sys/ioctl.h> header file.  */
 #undef HAVE_SYS_IOCTL_H
 
-/* Define if you have the <sys/soundcard.h> header file. */
+/* Define if you have the <sys/soundcard.h> header file.  */
 #undef HAVE_SYS_SOUNDCARD_H
 
-/* Define if you have the <sys/stat.h> header file. */
+/* Define if you have the <sys/stat.h> header file.  */
 #undef HAVE_SYS_STAT_H
 
-/* Define if you have the <sys/time.h> header file. */
+/* Define if you have the <sys/time.h> header file.  */
 #undef HAVE_SYS_TIME_H
 
-/* Define if you have the <sys/types.h> header file. */
+/* Define if you have the <sys/types.h> header file.  */
 #undef HAVE_SYS_TYPES_H
 
-/* Define if you have the <termio.h> header file. */
+/* Define if you have the <termio.h> header file.  */
 #undef HAVE_TERMIO_H
 
-/* Define if you have the <termios.h> header file. */
+/* Define if you have the <termios.h> header file.  */
 #undef HAVE_TERMIOS_H
 
-/* Define if you have the <thread.h> header file. */
+/* Define if you have the <thread.h> header file.  */
 #undef HAVE_THREAD_H
 
-/* Define if you have the <time.h> header file. */
+/* Define if you have the <time.h> header file.  */
 #undef HAVE_TIME_H
 
-/* Define if you have the <unistd.h> header file. */
+/* Define if you have the <unistd.h> header file.  */
 #undef HAVE_UNISTD_H
 
-/* Define as `__inline' if that's what the C compiler calls it, or to nothing
-   if it is not supported. */
-#undef inline
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef size_t
-
-/* The size of a `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of a `double', as computed by sizeof. */
-#undef SIZEOF_DOUBLE
-
-/* The size of a `float', as computed by sizeof. */
-#undef SIZEOF_FLOAT
-
-/* The size of a `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of a `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of a `long long', as computed by sizeof. */
-#undef SIZEOF_LONG_LONG
-
-/* The size of a `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of a `unsigned char', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_CHAR
-
-/* The size of a `unsigned int', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_INT
-
-/* The size of a `unsigned long', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_LONG
+/* Define if you have the mtmalloc library (-lmtmalloc).  */
+#undef HAVE_LIBMTMALLOC
 
-/* The size of a `unsigned long long', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_LONG_LONG
+/* Define if you have the pthread library (-lpthread).  */
+#undef HAVE_LIBPTHREAD
 
-/* The size of a `unsigned short', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_SHORT
+/* Define if you have the thread library (-lthread).  */
+#undef HAVE_LIBTHREAD
 
-/* Define if you have the ANSI C header files. */
-#undef STDC_HEADERS
+/* Name of package */
+#undef PACKAGE
 
 /* Version number of package */
 #undef VERSION
 
-/* Define if your processor stores words with the most significant byte first
-   (like Motorola and SPARC, unlike Intel and VAX). */
-#undef WORDS_BIGENDIAN
index 72f934d..ba66165 100755 (executable)
@@ -1,7 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 1999 Free Software Foundation, Inc.
-#
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+#   Free Software Foundation, Inc.
+
+timestamp='2001-04-20'
+
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # the same distribution terms that you use for the rest of that program.
 
 # Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
+# Please send patches to <config-patches@gnu.org>.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
 # The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int dummy(){}" > $dummy.c
+       for c in cc gcc c89 ; do
+         ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
+         if test $? = 0 ; then
+            CC_FOR_BUILD="$c"; break
+         fi
+       done
+       rm -f $dummy.c $dummy.o $dummy.rel
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 8/24/94.)
@@ -43,14 +120,57 @@ fi
 
 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # Netbsd (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       # Determine the machine/vendor (is the vendor relevant).
+       case "${UNAME_MACHINE}" in
+           amiga) machine=m68k-unknown ;;
+           arm32) machine=arm-unknown ;;
+           atari*) machine=m68k-atari ;;
+           sun3*) machine=m68k-sun ;;
+           mac68k) machine=m68k-apple ;;
+           macppc) machine=powerpc-apple ;;
+           hp3[0-9][05]) machine=m68k-hp ;;
+           ibmrt|romp-ibm) machine=romp-ibm ;;
+           *) machine=${UNAME_MACHINE}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE}" in
+           i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit 0 ;;
     alpha:OSF1:*:*)
        if test $UNAME_RELEASE = "V4.0"; then
                UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -59,62 +179,69 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       cat <<EOF >dummy.s
+       cat <<EOF >$dummy.s
+       .data
+\$Lformat:
+       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+       .text
        .globl main
+       .align 4
        .ent main
 main:
-       .frame \$30,0,\$26,0
-       .prologue 0
-       .long 0x47e03d80 # implver $0
-       lda \$2,259
-       .long 0x47e20c21 # amask $2,$1
-       srl \$1,8,\$2
-       sll \$2,2,\$2
-       sll \$0,3,\$0
-       addl \$1,\$0,\$0
-       addl \$2,\$0,\$0
-       ret \$31,(\$26),1
+       .frame \$30,16,\$26,0
+       ldgp \$29,0(\$27)
+       .prologue 1
+       .long 0x47e03d80 # implver \$0
+       lda \$2,-1
+       .long 0x47e20c21 # amask \$2,\$1
+       lda \$16,\$Lformat
+       mov \$0,\$17
+       not \$1,\$18
+       jsr \$26,printf
+       ldgp \$29,0(\$26)
+       mov 0,\$16
+       jsr \$26,exit
        .end main
 EOF
-       ${CC-cc} dummy.s -o dummy 2>/dev/null
+       $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
        if test "$?" = 0 ; then
-               ./dummy
-               case "$?" in
-                       7)
+               case `./$dummy` in
+                       0-0)
                                UNAME_MACHINE="alpha"
                                ;;
-                       15)
+                       1-0)
                                UNAME_MACHINE="alphaev5"
                                ;;
-                       14)
+                       1-1)
                                UNAME_MACHINE="alphaev56"
                                ;;
-                       10)
+                       1-101)
                                UNAME_MACHINE="alphapca56"
                                ;;
-                       16)
+                       2-303)
                                UNAME_MACHINE="alphaev6"
                                ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
                esac
        fi
-       rm -f dummy.s dummy
+       rm -f $dummy.s $dummy
        echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
        exit 0 ;;
     Alpha\ *:Windows_NT*:*)
-        # How do we know it's Interix rather than generic posix subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname 
-       # instead of the specific alpha model.
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
        echo alpha-pc-interix
-       exit 0;;
+       exit 0 ;;
     21064:Windows_NT:50:3)
        echo alpha-dec-winnt3.5
        exit 0 ;;
     Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-cbm-sysv4
+       echo m68k-unknown-sysv4
        exit 0;;
-    amiga:NetBSD:*:*)
-      echo m68k-cbm-netbsd${UNAME_RELEASE}
-      exit 0 ;;
     amiga:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
@@ -139,16 +266,16 @@ EOF
     wgrisc:OpenBSD:*:*)
        echo mipsel-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
-    arm32:NetBSD:*:*)
-       echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-       exit 0 ;;
-    SR2?01:HI-UX/MPP:*:*)
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
        echo hppa1.1-hitachi-hiuxmpp
        exit 0;;
-    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
        # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
        if test "`(/bin/universe) 2>/dev/null`" = att ; then
                echo pyramid-pyramid-sysv3
@@ -156,7 +283,7 @@ EOF
                echo pyramid-pyramid-bsd
        fi
        exit 0 ;;
-    NILE:*:*:dcosx)
+    NILE*:*:*:dcosx)
        echo pyramid-pyramid-svr4
        exit 0 ;;
     sun4H:SunOS:5.*:*)
@@ -201,21 +328,38 @@ EOF
     aushp:SunOS:*:*)
        echo sparc-auspex-sunos${UNAME_RELEASE}
        exit 0 ;;
-    atari*:NetBSD:*:*)
-       echo m68k-atari-netbsd${UNAME_RELEASE}
-       exit 0 ;;
     atari*:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    sun3*:NetBSD:*:*)
-       echo m68k-sun-netbsd${UNAME_RELEASE}
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
        exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
     sun3*:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    mac68k:NetBSD:*:*)
-       echo m68k-apple-netbsd${UNAME_RELEASE}
-       exit 0 ;;
     mac68k:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
@@ -237,12 +381,17 @@ EOF
     VAX*:ULTRIX*:*:*)
        echo vax-dec-ultrix${UNAME_RELEASE}
        exit 0 ;;
-    2020:CLIX:*:*)
+    2020:CLIX:*:* | 2430:CLIX:*:*)
        echo clipper-intergraph-clix${UNAME_RELEASE}
        exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-       sed 's/^        //' << EOF >dummy.c
-       int main (argc, argv) int argc; char **argv; {
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
        #if defined (host_mips) && defined (MIPSEB)
        #if defined (SYSTYPE_SYSV)
          printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
@@ -257,12 +406,15 @@ EOF
          exit (-1);
        }
 EOF
-       ${CC-cc} dummy.c -o dummy \
-         && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-         && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
+       $CC_FOR_BUILD $dummy.c -o $dummy \
+         && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && rm -f $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
        echo mips-mips-riscos${UNAME_RELEASE}
        exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
        echo powerpc-harris-powerunix
        exit 0 ;;
@@ -278,15 +430,18 @@ EOF
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
         UNAME_PROCESSOR=`/usr/bin/uname -p`
-        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-       if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-            -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
                echo m88k-dg-dgux${UNAME_RELEASE}
-       else
+           else
                echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
        fi
-        else echo i586-dg-dgux${UNAME_RELEASE}
-        fi
        exit 0 ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
        echo m88k-dolphin-sysv3
@@ -307,12 +462,20 @@ EOF
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
        echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
        exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
-    i?86:AIX:*:*)
+    i*86:AIX:*:*)
        echo i386-ibm-aix
        exit 0 ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit 0 ;;
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               sed 's/^                //' << EOF >dummy.c
+               sed 's/^                //' << EOF >$dummy.c
                #include <sys/systemcfg.h>
 
                main()
@@ -323,8 +486,8 @@ EOF
                        exit(0);
                        }
 EOF
-               ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-               rm -f dummy.c dummy
+               $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+               rm -f $dummy.c $dummy
                echo rs6000-ibm-aix3.2.5
        elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
                echo rs6000-ibm-aix3.2.4
@@ -332,8 +495,9 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit 0 ;;
-    *:AIX:*:4)
-       if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
+    *:AIX:*:[45])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
        else
                IBM_ARCH=powerpc
@@ -341,7 +505,7 @@ EOF
        if [ -x /usr/bin/oslevel ] ; then
                IBM_REV=`/usr/bin/oslevel`
        else
-               IBM_REV=4.${UNAME_RELEASE}
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
        fi
        echo ${IBM_ARCH}-ibm-aix${IBM_REV}
        exit 0 ;;
@@ -351,7 +515,7 @@ EOF
     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
        echo romp-ibm-bsd4.4
        exit 0 ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
        echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
        exit 0 ;;                           # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
@@ -366,33 +530,49 @@ EOF
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
        echo m68k-hp-bsd4.4
        exit 0 ;;
-    *9??*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit 0 ;;
     9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
        case "${UNAME_MACHINE}" in
            9000/31? )            HP_ARCH=m68000 ;;
            9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9] )
+           9000/[678][0-9][0-9])
+              case "${HPUX_REV}" in
+                11.[0-9][0-9])
+                  if [ -x /usr/bin/getconf ]; then
+                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                        esac ;;
+                    esac
+                  fi ;;
+              esac
+              if [ "${HP_ARCH}" = "" ]; then
+              sed 's/^              //' << EOF >$dummy.c
 
-              sed 's/^              //' << EOF >dummy.c
+              #define _HPUX_SOURCE
               #include <stdlib.h>
               #include <unistd.h>
-              
+
               int main ()
               {
               #if defined(_SC_KERNEL_BITS)
                   long bits = sysconf(_SC_KERNEL_BITS);
-              #endif 
+              #endif
                   long cpu  = sysconf (_SC_CPU_VERSION);
-              
-                  switch (cpu) 
+
+                  switch (cpu)
                {
                case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
                case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-               case CPU_PA_RISC2_0: 
+               case CPU_PA_RISC2_0:
               #if defined(_SC_KERNEL_BITS)
-                   switch (bits) 
+                   switch (bits)
                        {
                        case 64: puts ("hppa2.0w"); break;
                        case 32: puts ("hppa2.0n"); break;
@@ -400,20 +580,25 @@ EOF
                        } break;
               #else  /* !defined(_SC_KERNEL_BITS) */
                    puts ("hppa2.0"); break;
-              #endif 
+              #endif
                default: puts ("hppa1.0"); break;
                }
                   exit (0);
               }
 EOF
-       (${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy`
-       rm -f dummy.c dummy
+       (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+       if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+       rm -f $dummy.c $dummy
+       fi ;;
        esac
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
        exit 0 ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit 0 ;;
     3050*:HI-UX:*:*)
-       sed 's/^        //' << EOF >dummy.c
+       sed 's/^        //' << EOF >$dummy.c
        #include <unistd.h>
        int
        main ()
@@ -438,8 +623,8 @@ EOF
          exit (0);
        }
 EOF
-       ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-       rm -f dummy.c dummy
+       $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
        echo unknown-hitachi-hiuxwe2
        exit 0 ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -448,13 +633,16 @@ EOF
     9000/8??:4.3bsd:*:*)
        echo hppa1.0-hp-bsd
        exit 0 ;;
+    *9??*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit 0 ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
        echo hppa1.1-hp-osf
        exit 0 ;;
     hp8??:OSF1:*:*)
        echo hppa1.0-hp-osf
        exit 0 ;;
-    i?86:OSF1:*:*)
+    i*86:OSF1:*:*)
        if [ -x /usr/sbin/sysversion ] ; then
            echo ${UNAME_MACHINE}-unknown-osf1mk
        else
@@ -497,59 +685,64 @@ EOF
              -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
        exit 0 ;;
     CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE}
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3D:*:*:*)
+       echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
     CRAY-2:*:*:*)
        echo cray2-cray-unicos
         exit 0 ;;
-    F300:UNIX_System_V:*:*)
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
         exit 0 ;;
-    F301:UNIX_System_V:*:*)
-       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
-       exit 0 ;;
-    hp3[0-9][05]:NetBSD:*:*)
-       echo m68k-hp-netbsd${UNAME_RELEASE}
-       exit 0 ;;
     hp300:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    i?86:BSD/386:*:* | *:BSD/OS:*:*)
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
        exit 0 ;;
-    *:FreeBSD:*:*)
-        if test -x /usr/bin/objformat -a "elf" = "`/usr/bin/objformat`"; then
-          echo ${UNAME_MACHINE}-unknown-freebsdelf
-        else
-         echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
-      fi
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
        exit 0 ;;
-    *:NetBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:FreeBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
     *:OpenBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
     i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin32
+       echo ${UNAME_MACHINE}-pc-cygwin
        exit 0 ;;
     i*:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit 0 ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit 0 ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-        # How do we know it's Interix rather than generic posix subsystem?
+       # How do we know it's Interix rather than the generic POSIX subsystem?
        # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # change UNAME_MACHINE based on the output of uname instead of
-       # i386?
+       # UNAME_MACHINE based on the output of uname instead of i386?
        echo i386-pc-interix
        exit 0 ;;
     i*:UWIN*:*)
        echo ${UNAME_MACHINE}-pc-uwin
        exit 0 ;;
     p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin32
+       echo powerpcle-unknown-cygwin
        exit 0 ;;
     prep*:SunOS:5.*:*)
        echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -557,32 +750,41 @@ EOF
     *:GNU:*:*)
        echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
-    *:Linux:*:*)
-       # uname on the ARM produces all sorts of strangeness, and we need to
-       # filter it out.
-       case "$UNAME_MACHINE" in
-         armv*)                      UNAME_MACHINE=$UNAME_MACHINE ;;
-         arm* | sa110*)              UNAME_MACHINE="arm" ;;
-       esac
-
-       # The BFD linker knows what the default object file format is, so
-       # first see if it will tell us.
-       ld_help_string=`ld --help 2>&1`
-       ld_supported_emulations=`echo $ld_help_string \
-                        | sed -ne '/supported emulations:/!d
-                                   s/[         ][      ]*/ /g
-                                   s/.*supported emulations: *//
-                                   s/ .*//
-                                   p'`
-        case "$ld_supported_emulations" in
-         i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
-         i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
-         sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-         armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-         m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-         elf32ppc | elf32ppclinux)
-               # Determine Lib Version
-               cat >dummy.c <<EOF
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit 0 ;;
+    arm*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux
+       exit 0 ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    mips:Linux:*:*)
+       cat >$dummy.c <<EOF
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+int main (int argc, char *argv[]) {
+#else
+int main (argc, argv) int argc; char *argv[]; {
+#endif
+#ifdef __MIPSEB__
+  printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+  printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+       $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
+       ;;
+    ppc:Linux:*:*)
+       # Determine Lib Version
+       cat >$dummy.c <<EOF
 #include <features.h>
 #if defined(__GLIBC__)
 extern char __libc_version[];
@@ -595,112 +797,134 @@ main(argc, argv)
 #if defined(__GLIBC__)
   printf("%s %s\n", __libc_version, __libc_release);
 #else
-  printf("unkown\n");
+  printf("unknown\n");
 #endif
   return 0;
 }
 EOF
-               LIBC=""
-               ${CC-cc} dummy.c -o dummy 2>/dev/null
-               if test "$?" = 0 ; then
-                       ./dummy | grep 1\.99 > /dev/null
-                       if test "$?" = 0 ; then
-                               LIBC="libc1"
-                       fi
-               fi      
-               rm -f dummy.c dummy
-               echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;;
-       esac
-
-       if test "${UNAME_MACHINE}" = "alpha" ; then
-               sed 's/^        //'  <<EOF >dummy.s
+       LIBC=""
+       $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               ./$dummy | grep 1\.99 > /dev/null
+               if test "$?" = 0 ; then LIBC="libc1" ; fi
+       fi
+       rm -f $dummy.c $dummy
+       echo powerpc-unknown-linux-gnu${LIBC}
+       exit 0 ;;
+    alpha:Linux:*:*)
+       cat <<EOF >$dummy.s
+         .data
+         \$Lformat:
+               .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+          .text
                .globl main
+               .align 4
                .ent main
-       main:
-               .frame \$30,0,\$26,0
-               .prologue 0
-               .long 0x47e03d80 # implver $0
-               lda \$2,259
-               .long 0x47e20c21 # amask $2,$1
-               srl \$1,8,\$2
-               sll \$2,2,\$2
-               sll \$0,3,\$0
-               addl \$1,\$0,\$0
-               addl \$2,\$0,\$0
-               ret \$31,(\$26),1
+           main:
+               .frame \$30,16,\$26,0
+               ldgp \$29,0(\$27)
+               .prologue 1
+               .long 0x47e03d80 # implver \$0
+               lda \$2,-1
+               .long 0x47e20c21 # amask \$2,\$1
+               lda \$16,\$Lformat
+               mov \$0,\$17
+               not \$1,\$18
+               jsr \$26,printf
+               ldgp \$29,0(\$26)
+               mov 0,\$16
+               jsr \$26,exit
                .end main
 EOF
-               LIBC=""
-               ${CC-cc} dummy.s -o dummy 2>/dev/null
+       LIBC=""
+       $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               case `./$dummy` in
+               0-0)    UNAME_MACHINE="alpha" ;;
+               1-0)    UNAME_MACHINE="alphaev5" ;;
+               1-1)    UNAME_MACHINE="alphaev56" ;;
+               1-101)  UNAME_MACHINE="alphapca56" ;;
+               2-303)  UNAME_MACHINE="alphaev6" ;;
+               2-307)  UNAME_MACHINE="alphaev67" ;;
+               esac
+               objdump --private-headers $dummy | \
+                 grep ld.so.1 > /dev/null
                if test "$?" = 0 ; then
-                       ./dummy
-                       case "$?" in
-                       7)
-                               UNAME_MACHINE="alpha"
-                               ;;
-                       15)
-                               UNAME_MACHINE="alphaev5"
-                               ;;
-                       14)
-                               UNAME_MACHINE="alphaev56"
-                               ;;
-                       10)
-                               UNAME_MACHINE="alphapca56"
-                               ;;
-                       16)
-                               UNAME_MACHINE="alphaev6"
-                               ;;
-                       esac    
-
-                       objdump --private-headers dummy | \
-                         grep ld.so.1 > /dev/null
-                       if test "$?" = 0 ; then
-                               LIBC="libc1"
-                       fi
-               fi      
-               rm -f dummy.s dummy
-               echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
-       elif test "${UNAME_MACHINE}" = "mips" ; then
-         cat >dummy.c <<EOF
-main(argc, argv)
-     int argc;
-     char *argv[];
-{
-#ifdef __MIPSEB__
-  printf ("%s-unknown-linux-gnu\n", argv[1]);
-#endif
-#ifdef __MIPSEL__
-  printf ("%sel-unknown-linux-gnu\n", argv[1]);
-#endif
-  return 0;
-}
-EOF
-         ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-         rm -f dummy.c dummy
-       else
-         # Either a pre-BFD a.out linker (linux-gnuoldld)
-         # or one that does not give us useful --help.
-         # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
-         # If ld does not provide *any* "supported emulations:"
-         # that means it is gnuoldld.
-         echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
-         test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-
-         case "${UNAME_MACHINE}" in
-         i?86)
-           VENDOR=pc;
-           ;;
-         *)
-           VENDOR=unknown;
-           ;;
-         esac
-         # Determine whether the default compiler is a.out or elf
-         cat >dummy.c <<EOF
+                       LIBC="libc1"
+               fi
+       fi
+       rm -f $dummy.s $dummy
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit 0 ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit 0 ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       ld_supported_emulations=`cd /; ld --help 2>&1 \
+                        | sed -ne '/supported emulations:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported emulations: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_emulations" in
+         i*86linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0
+               ;;
+         elf_i*86)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+               ;;
+         i*86coff)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit 0
+               ;;
+       esac
+       # Either a pre-BFD a.out linker (linux-gnuoldld)
+       # or one that does not give us useful --help.
+       # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+       # If ld does not provide *any* "supported emulations:"
+       # that means it is gnuoldld.
+       test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+       case "${UNAME_MACHINE}" in
+       i*86)
+         VENDOR=pc;
+         ;;
+       *)
+         VENDOR=unknown;
+         ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       cat >$dummy.c <<EOF
 #include <features.h>
-main(argc, argv)
-     int argc;
-     char *argv[];
-{
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
 #ifdef __ELF__
 # ifdef __GLIBC__
 #  if __GLIBC__ >= 2
@@ -717,15 +941,16 @@ main(argc, argv)
   return 0;
 }
 EOF
-         ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-         rm -f dummy.c dummy
-       fi ;;
+       $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
+       test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+       ;;
 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
 # are messed up and put the nodename in both sysname and nodename.
-    i?86:DYNIX/ptx:4*:*)
+    i*86:DYNIX/ptx:4*:*)
        echo i386-sequent-sysv4
        exit 0 ;;
-    i?86:UNIX_SV:4.2MP:2.*)
+    i*86:UNIX_SV:4.2MP:2.*)
         # Unixware is an offshoot of SVR4, but it has its own version
         # number series starting with 2...
         # I am not positive that other SVR4 systems won't match this,
@@ -733,26 +958,24 @@ EOF
         # Use sysv4.2uw... so that sysv4* matches it.
        echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
        exit 0 ;;
-    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
        else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
        fi
        exit 0 ;;
-    i?86:*:5:7*)
-       UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-       (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-       (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-               && UNAME_MACHINE=i586
-# 5.0.4c returns "Pent II".  5.0.5 returns PentII
-       (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) \
-               && UNAME_MACHINE=i686
-       (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
-               && UNAME_MACHINE=i686
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE}
-       exit 0 ;;
-    i?86:*:3.2:*)
+    i*86:*:5:7*)
+        # Fixed at (any) Pentium or better
+        UNAME_MACHINE=i586
+        if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+           echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
+       else
+           echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    i*86:*:3.2:*)
        if test -f /usr/options/cb.name; then
                UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
                echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
@@ -761,18 +984,20 @@ EOF
                (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
                (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
                        && UNAME_MACHINE=i586
-               (/bin/uname -X|egrep '^Machine.*PentII' >/dev/null) \
+               (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
                        && UNAME_MACHINE=i686
-               (/bin/uname -X|egrep '^Machine.*Pent II' >/dev/null) \
+               (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
                        && UNAME_MACHINE=i686
-                (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
-                        && UNAME_MACHINE=i686
                echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
        else
                echo ${UNAME_MACHINE}-pc-sysv32
        fi
        exit 0 ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit 0 ;;
     pc:*:*:*)
+       # Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
         # the processor, so we play safe by assuming i386.
        echo i386-pc-msdosdjgpp
@@ -796,7 +1021,7 @@ EOF
        exit 0 ;;
     M68*:*:R3V[567]*:*)
        test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
        OS_REL=''
        test -r /etc/.relid \
        && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -807,24 +1032,30 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && echo i486-ncr-sysv4 && exit 0 ;;
-    m68*:LynxOS:2.*:*)
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
        echo m68k-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
     mc68030:UNIX_System_V:4.*:*)
        echo m68k-atari-sysv4
        exit 0 ;;
-    i?86:LynxOS:2.*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
        echo i386-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
        echo sparc-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
-    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+    rs6000:LynxOS:2.*:*)
        echo rs6000-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
     SM[BE]S:UNIX_SV:*:*)
        echo mips-dde-sysv${UNAME_RELEASE}
        exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
     RM*:SINIX-*:*:*)
        echo mips-sni-sysv4
        exit 0 ;;
@@ -852,10 +1083,10 @@ EOF
     mc68*:A/UX:*:*)
        echo m68k-apple-aux${UNAME_RELEASE}
        exit 0 ;;
-    news*:NEWS-OS:*:6*)
+    news*:NEWS-OS:6*:*)
        echo mips-sony-newsos6
        exit 0 ;;
-    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
                echo mips-nec-sysv${UNAME_RELEASE}
        else
@@ -871,12 +1102,82 @@ EOF
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
        echo i586-pc-beos
        exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       echo `uname -p`-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       if test "${UNAME_MACHINE}" = "x86pc"; then
+               UNAME_MACHINE=pc
+       fi
+       echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSR-[KW]:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit 0 ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit 0 ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit 0 ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit 0 ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
 
-cat >dummy.c <<EOF
+cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
 # include <sys/types.h>
 # include <sys/utsname.h>
@@ -914,7 +1215,10 @@ main ()
 #endif
   int version;
   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
   exit (0);
 #endif
 
@@ -959,11 +1263,24 @@ main ()
 #endif
 
 #if defined (vax)
-#if !defined (ultrix)
-  printf ("vax-dec-bsd\n"); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
 #endif
 
 #if defined (alliant) && defined (i860)
@@ -974,8 +1291,8 @@ main ()
 }
 EOF
 
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
 
 # Apollos put the system type in the environment.
 
@@ -1007,6 +1324,48 @@ then
     esac
 fi
 
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
 
 exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index 8100619..25ef1ef 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Config.h generic config file
  *
- * Copyright (c) 2000, Virtual Unlimited B.V.
+ * Copyright (c) 2000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #ifndef _CONFIG_H
 #define _CONFIG_H
 
-#if WIN32
-# include "win32/config.win.h"
+#if defined(_WIN32) && !defined(WIN32)
+# define WIN32 1
+#endif
+
+
+#if WIN32 && !__CYGWIN32__
+# include "config.win.h"
 # ifdef BEECRYPT_DLL_EXPORT
 #  define BEEDLLAPI
 # else
 #  define BEEDLLAPI __declspec(dllimport)
 # endif
+/*typedef UINT8_TYPE   byte;*/
 #else
-# include "gnu/config.gnu.h"
+# include "config.gnu.h"
 # define BEEDLLAPI
+typedef UINT8_TYPE     byte;
+#endif
+
+#ifndef ROTL32
+# define ROTL32(x, s) (((x) << (s)) | ((x) >> (32 - (s))))
+#endif
+#ifndef ROTR32
+# define ROTR32(x, s) (((x) >> (s)) | ((x) << (32 - (s))))
 #endif
 
+/*@-typeuse@*/
+typedef INT8_TYPE      int8;
+/*@=typeuse@*/
+typedef INT16_TYPE     int16;
+typedef INT32_TYPE     int32;
+typedef INT64_TYPE     int64;
+
+typedef UINT8_TYPE     uint8;
+typedef UINT16_TYPE    uint16;
+typedef UINT32_TYPE    uint32;
+typedef UINT64_TYPE    uint64;
+
+typedef INT8_TYPE      javabyte;
+typedef INT16_TYPE     javashort;
+typedef INT32_TYPE     javaint;
+typedef INT64_TYPE     javalong;
+
+typedef UINT16_TYPE    javachar;
+
+typedef FLOAT4_TYPE    javafloat;
+typedef DOUBLE8_TYPE   javadouble;
+
 #endif
index 3d2a1bf..a06a480 100755 (executable)
@@ -1,6 +1,10 @@
 #! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc.
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+#   Free Software Foundation, Inc.
+
+timestamp='2001-04-20'
+
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
 # can handle that machine.  It does not imply ALL GNU software can.
@@ -25,6 +29,8 @@
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
+# Please send patches to <config-patches@gnu.org>.
+#
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 #      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
-if [ x$1 = x ]
-then
-       echo Configuration name missing. 1>&2
-       echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-       echo "or     $0 ALIAS" 1>&2
-       echo where ALIAS is a recognized configuration type. 1>&2
-       exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
 
-# First pass through any local machine types.
-case $1 in
-       *local*)
-               echo $1
-               exit 0
-               ;;
-       *)
-       ;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
 esac
 
 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  linux-gnu*)
+  nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
@@ -94,18 +143,18 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple)
+       -apple | -axis)
                os=
                basic_machine=$1
                ;;
-       -sim | -cisco | -oki | -wec | -winbond )        # EGCS LOCAL
+       -sim | -cisco | -oki | -wec | -winbond)
                os=
                basic_machine=$1
                ;;
-       -scout)                                         # EGCS LOCAL
+       -scout)
                ;;
-       -wrs)                                           # EGCS LOCAL
-               os=vxworks
+       -wrs)
+               os=-vxworks
                basic_machine=$1
                ;;
        -hiux*)
@@ -156,49 +205,50 @@ case $os in
        -psos*)
                os=-psos
                ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
 esac
 
 # Decode aliases for certain CPU-COMPANY combinations.
 case $basic_machine in
        # Recognize the basic CPU types without company name.
        # Some are omitted here because they have special meanings below.
-       tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
-               | arme[lb] | pyramid | mn10200 | mn10300 \
-               | tron | a29k | 580 | i960 | h8300 \
+       tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
+               | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
+               | pyramid | mn10200 | mn10300 | tron | a29k \
+               | 580 | i960 | h8300 \
+               | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
                | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
-               | alpha | alphaev5 | alphaev56 | alphapca56 | alphaev6 \
-               | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
-               | 1750a | dsp16xx | pdp11 \
-               | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
-               | mipstx39 | mipstx39el \
-               | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x)
-               basic_machine=$basic_machine-unknown
-               ;;
-       m88110 | m680[012346]0 | m683?2 | m68360 | m5200 | z8k | v70 \
-               | h8500 | w65) # EGCS LOCAL
-               ;;
-       thumb)
-               basic_machine=$basic_machine-unknown
-               ;;
-       mips64vr4300 | mips64vr4300el) # EGCS LOCAL jsmith/vr4300
+               | hppa64 \
+               | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
+               | alphaev6[78] \
+               | we32k | ns16k | clipper | i370 | sh | sh[34] \
+               | powerpc | powerpcle \
+               | 1750a | dsp16xx | pdp10 | pdp11 \
+               | mips16 | mips64 | mipsel | mips64el \
+               | mips64orion | mips64orionel | mipstx39 | mipstx39el \
+               | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+               | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
+               | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
+               | v850 | c4x \
+               | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
+               | pj | pjl | h8500)
                basic_machine=$basic_machine-unknown
                ;;
-       mips64vr4100 | mips64vr4100el) # EGCS LOCAL jsmith/vr4100
-               basic_machine=$basic_machine-unknown
-               ;;
-       mips64vr5000 | mips64vr5000el) # EGCS LOCAL ian/vr5000
-               basic_machine=$basic_machine-unknown
-               ;;
-       mips16)
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
                basic_machine=$basic_machine-unknown
+               os=-none
                ;;
-       d10v)
-               basic_machine=$basic_machine-unknown
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
                ;;
+
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
-       i[34567]86)
+       i*86 | x86_64)
          basic_machine=$basic_machine-pc
          ;;
        # Object if more than one company name word.
@@ -207,44 +257,35 @@ case $basic_machine in
                exit 1
                ;;
        # Recognize the basic CPU types with company name.
-       vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
-             | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+       # FIXME: clean up the formatting here.
+       vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
+             | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
+             | arm-*  | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
              | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-             | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+             | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
              | xmp-* | ymp-* \
-             | hppa-* | hppa1.0-* | hppa1.1-* \
-             | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \
-             | alpha-* | alphaev5-* | alphaev56-* | alphapca56-* \
-             | alphaev6-* | we32k-* | cydra-* | ns16k-* | pn-* | np1-* \
-             | xps100-* | clipper-* | orion-* \
-             | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-             | sparc64-* | sparc-* | sparcv8-* | sparcv8plus-* | sparcv9-* | sparc86x-* | mips64-* | mipsel-* \
-             | mips64el-* | mips64orion-* | mips64orionel-*  \
-             | mipstx39-* | mipstx39el-* \
-             | f301-* | arm*-*)
-               ;;
-       m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | h8500-* | d10v-*) # EGCS LOCAL
-               ;;
-       thumb-*) # EGCS LOCAL angela/thumb
-               ;;
-       v850-*) # EGCS LOCAL
-               ;;
-       d30v-*) # EGCS LOCAL
-               ;;
-       mips64vr4300-* | mips64vr4300el-*) # EGCS LOCAL jsmith/vr4300
-               ;;
-       mips64vr4100-* | mips64vr4100el-*) # EGCS LOCAL jsmith/vr4100
-               ;;
-       mips16-*) # EGCS LOCAL krk/mips16
-               ;;
-       tic30-*) # EGCS LOCAL ian/tic30
-               ;;
-       c30-*) # EGCS LOCAL ian/tic30
-               basic_machine=tic30-unknown
+             | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
+             | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
+             | hppa2.0n-* | hppa64-* \
+             | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
+             | alphaev6[78]-* \
+             | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+             | clipper-* | orion-* \
+             | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+             | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
+             | mips16-* | mips64-* | mipsel-* \
+             | mips64el-* | mips64orion-* | mips64orionel-* \
+             | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+             | mipstx39-* | mipstx39el-* | mcore-* \
+             | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
+             | [cjt]90-* \
+             | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+             | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
+             | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
-       386bsd)                                         # EGCS LOCAL
+       386bsd)
                basic_machine=i386-unknown
                os=-bsd
                ;;
@@ -254,11 +295,11 @@ case $basic_machine in
        3b*)
                basic_machine=we32k-att
                ;;
-       a29khif)                                        # EGCS LOCAL
+       a29khif)
                basic_machine=a29k-amd
                os=-udi
                ;;
-       adobe68k)                                       # EGCS LOCAL
+       adobe68k)
                basic_machine=m68010-adobe
                os=-scout
                ;;
@@ -277,21 +318,21 @@ case $basic_machine in
                os=-sysv
                ;;
        amiga | amiga-*)
-               basic_machine=m68k-cbm
+               basic_machine=m68k-unknown
                ;;
        amigaos | amigados)
-               basic_machine=m68k-cbm
+               basic_machine=m68k-unknown
                os=-amigaos
                ;;
        amigaunix | amix)
-               basic_machine=m68k-cbm
+               basic_machine=m68k-unknown
                os=-sysv4
                ;;
        apollo68)
                basic_machine=m68k-apollo
                os=-sysv
                ;;
-       apollo68bsd)                                    # EGCS LOCAL
+       apollo68bsd)
                basic_machine=m68k-apollo
                os=-bsd
                ;;
@@ -331,13 +372,16 @@ case $basic_machine in
                basic_machine=cray2-cray
                os=-unicos
                ;;
-       [ctj]90-cray)
-               basic_machine=c90-cray
+       [cjt]90)
+               basic_machine=${basic_machine}-cray
                os=-unicos
                ;;
        crds | unos)
                basic_machine=m68k-crds
                ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
        da30 | da30-*)
                basic_machine=m68k-da30
                ;;
@@ -371,7 +415,7 @@ case $basic_machine in
        encore | umax | mmax)
                basic_machine=ns32k-encore
                ;;
-       es1800 | OSE68k | ose68k | ose | OSE)           # EGCS LOCAL
+       es1800 | OSE68k | ose68k | ose | OSE)
                basic_machine=m68k-ericsson
                os=-ose
                ;;
@@ -385,6 +429,10 @@ case $basic_machine in
                basic_machine=tron-gmicro
                os=-sysv
                ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
        h3050r* | hiux*)
                basic_machine=hppa1.1-hitachi
                os=-hiuxwe2
@@ -393,11 +441,11 @@ case $basic_machine in
                basic_machine=h8300-hitachi
                os=-hms
                ;;
-       h8300xray)                                      # EGCS LOCAL
+       h8300xray)
                basic_machine=h8300-hitachi
                os=-xray
                ;;
-       h8500hms)                                       # EGCS LOCAL
+       h8500hms)
                basic_machine=h8500-hitachi
                os=-hms
                ;;
@@ -416,22 +464,6 @@ case $basic_machine in
                basic_machine=m68k-hp
                os=-hpux
                ;;
-        w89k-*)                                                # EGCS LOCAL
-                basic_machine=hppa1.1-winbond
-                os=-proelf
-                ;;
-        op50n-*)                                       # EGCS LOCAL
-                basic_machine=hppa1.1-oki
-                os=-proelf
-                ;;
-        op60c-*)                                       # EGCS LOCAL
-                basic_machine=hppa1.1-oki
-                os=-proelf
-                ;;
-        hppro)                                         # EGCS LOCAL
-                basic_machine=hppa1.1-hp
-                os=-proelf
-                ;;
        hp3k9[0-9][0-9] | hp9[0-9][0-9])
                basic_machine=hppa1.0-hp
                ;;
@@ -441,22 +473,21 @@ case $basic_machine in
        hp9k3[2-9][0-9])
                basic_machine=m68k-hp
                ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9] )
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
                basic_machine=hppa1.0-hp
                ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9] )
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
                basic_machine=hppa1.1-hp
                ;;
-       hp9k78[0-9] | hp78[0-9] )
+       hp9k78[0-9] | hp78[0-9])
                # FIXME: really hppa2.0-hp
                basic_machine=hppa1.1-hp
                ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | \
-       hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893 )
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
                # FIXME: really hppa2.0-hp
                basic_machine=hppa1.1-hp
                ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679] )
+       hp9k8[0-9][13679] | hp8[0-9][13679])
                basic_machine=hppa1.1-hp
                ;;
        hp9k8[0-9][0-9] | hp8[0-9][0-9])
@@ -465,47 +496,42 @@ case $basic_machine in
        hppa-next)
                os=-nextstep3
                ;;
-       hppaosf)                                        # EGCS LOCAL
+       hppaosf)
                basic_machine=hppa1.1-hp
                os=-osf
                ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
        i370-ibm* | ibm*)
                basic_machine=i370-ibm
-               os=-mvs
                ;;
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-       i[34567]86v32)
+       i*86v32)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv32
                ;;
-       i[34567]86v4*)
+       i*86v4*)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv4
                ;;
-       i[34567]86v)
+       i*86v)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv
                ;;
-       i[34567]86sol2)
+       i*86sol2)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-solaris2
                ;;
-       i386mach)                                       # EGCS LOCAL
+       i386mach)
                basic_machine=i386-mach
                os=-mach
                ;;
-       i386-vsta | vsta)                               # EGCS LOCAL
+       i386-vsta | vsta)
                basic_machine=i386-unknown
                os=-vsta
                ;;
-       i386-go32 | go32)                               # EGCS LOCAL
-               basic_machine=i386-unknown
-               os=-go32
-               ;;
-       i386-mingw32 | mingw32)
-               basic_machine=i386-unknown
-               os=-mingw32
-               ;;
        iris | iris4d)
                basic_machine=mips-sgi
                case $os in
@@ -531,9 +557,17 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
        miniframe)
                basic_machine=m68000-convergent
                ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
        mipsel*-linux*)
                basic_machine=mipsel-unknown
                os=-linux-gnu
@@ -548,24 +582,32 @@ case $basic_machine in
        mips3*)
                basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
                ;;
-       monitor)                                        # EGCS LOCAL
+       mmix*)
+               basic_machine=mmix-knuth
+               os=-mmixware
+               ;;
+       monitor)
                basic_machine=m68k-rom68k
                os=-coff
                ;;
-       msdos)                                          # EGCS LOCAL
-               basic_machine=i386-unknown      
+       msdos)
+               basic_machine=i386-pc
                os=-msdos
                ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
        ncr3000)
                basic_machine=i486-ncr
                os=-sysv4
                ;;
        netbsd386)
-               basic_machine=i386-unknown              # EGCS LOCAL
+               basic_machine=i386-unknown
                os=-netbsd
                ;;
        netwinder)
-               basic_machine=armv4l-corel
+               basic_machine=armv4l-rebel
                os=-linux
                ;;
        news | news700 | news800 | news900)
@@ -580,7 +622,7 @@ case $basic_machine in
                basic_machine=mips-sony
                os=-newsos
                ;;
-       necv70)                                         # EGCS LOCAL
+       necv70)
                basic_machine=v70-nec
                os=-sysv
                ;;
@@ -609,18 +651,29 @@ case $basic_machine in
                basic_machine=i960-intel
                os=-nindy
                ;;
-       mon960)                                         # EGCS LOCAL
+       mon960)
                basic_machine=i960-intel
                os=-mon960
                ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
        np1)
                basic_machine=np1-gould
                ;;
-       OSE68000 | ose68000)                            # EGCS LOCAL
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       OSE68000 | ose68000)
                basic_machine=m68000-ericsson
                os=-ose
                ;;
-       os68k)                                          # EGCS LOCAL
+       os68k)
                basic_machine=m68k-none
                os=-os68k
                ;;
@@ -641,28 +694,28 @@ case $basic_machine in
         pc532 | pc532-*)
                basic_machine=ns32k-pc532
                ;;
-       pentium | p5 | k5 | k6 | nexen)
+       pentium | p5 | k5 | k6 | nexgen)
                basic_machine=i586-pc
                ;;
-       pentiumpro | p6 | 6x86)
+       pentiumpro | p6 | 6x86 | athlon)
                basic_machine=i686-pc
                ;;
        pentiumii | pentium2)
-               basic_machine=i786-pc
+               basic_machine=i686-pc
                ;;
-       pentium-* | p5-* | k5-* | k6-* | nexen-*)
+       pentium-* | p5-* | k5-* | k6-* | nexgen-*)
                basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentiumpro-* | p6-* | 6x86-*)
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pentiumii-* | pentium2-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pn)
                basic_machine=pn-gould
                ;;
-       power)  basic_machine=rs6000-ibm
+       power)  basic_machine=power-ibm
                ;;
        ppc)    basic_machine=powerpc-unknown
                ;;
@@ -677,7 +730,11 @@ case $basic_machine in
        ps2)
                basic_machine=i386-ibm
                ;;
-       rom68k)                                         # EGCS LOCAL
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rom68k)
                basic_machine=m68k-rom68k
                os=-coff
                ;;
@@ -687,7 +744,7 @@ case $basic_machine in
        rtpc | rtpc-*)
                basic_machine=romp-ibm
                ;;
-       sa29200)                                        # EGCS LOCAL
+       sa29200)
                basic_machine=a29k-amd
                os=-udi
                ;;
@@ -698,7 +755,7 @@ case $basic_machine in
                basic_machine=sh-hitachi
                os=-hms
                ;;
-       sparclite-wrs)                                  # EGCS LOCAL
+       sparclite-wrs)
                basic_machine=sparclite-wrs
                os=-vxworks
                ;;
@@ -709,10 +766,10 @@ case $basic_machine in
        spur)
                basic_machine=spur-unknown
                ;;
-       st2000)                                         # EGCS LOCAL
+       st2000)
                basic_machine=m68k-tandem
                ;;
-       stratus)                                        # EGCS LOCAL
+       stratus)
                basic_machine=i860-stratus
                os=-sysv4
                ;;
@@ -756,10 +813,22 @@ case $basic_machine in
        sun386 | sun386i | roadrunner)
                basic_machine=i386-sun
                ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
        symmetry)
                basic_machine=i386-sequent
                os=-dynix
                ;;
+       t3e)
+               basic_machine=t3e-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
        tx39)
                basic_machine=mipstx39-unknown
                ;;
@@ -777,7 +846,7 @@ case $basic_machine in
                basic_machine=a29k-nyu
                os=-sym1
                ;;
-       v810 | necv810)                                 # EGCS LOCAL
+       v810 | necv810)
                basic_machine=v810-nec
                os=-none
                ;;
@@ -804,9 +873,13 @@ case $basic_machine in
                basic_machine=a29k-wrs
                os=-vxworks
                ;;
-       w65*)                                           # EGCS LOCAL
-               basic_machine=w65-wdc
-               os=-none
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
                ;;
        xmp)
                basic_machine=xmp-cray
@@ -815,7 +888,7 @@ case $basic_machine in
         xps | xps100)
                basic_machine=xps100-honeywell
                ;;
-       z8k-*-coff)                                     # EGCS LOCAL
+       z8k-*-coff)
                basic_machine=z8k-unknown
                os=-sim
                ;;
@@ -826,13 +899,13 @@ case $basic_machine in
 
 # Here we handle the default manufacturer of certain CPU types.  It is in
 # some cases the only manufacturer, in others, it is the most popular.
-       w89k)                                           # EGCS LOCAL
+       w89k)
                basic_machine=hppa1.1-winbond
                ;;
-       op50n)                                          # EGCS LOCAL
+       op50n)
                basic_machine=hppa1.1-oki
                ;;
-       op60c)                                          # EGCS LOCAL
+       op60c)
                basic_machine=hppa1.1-oki
                ;;
        mips)
@@ -851,13 +924,20 @@ case $basic_machine in
        vax)
                basic_machine=vax-dec
                ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
        pdp11)
                basic_machine=pdp11-dec
                ;;
        we32k)
                basic_machine=we32k-att
                ;;
-       sparc | sparcv9)
+       sh3 | sh4)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv9 | sparcv9b)
                basic_machine=sparc-sun
                ;;
         cydra)
@@ -869,16 +949,19 @@ case $basic_machine in
        orion105)
                basic_machine=clipper-highlevel
                ;;
-       mac | mpw | mac-mpw)                            # EGCS LOCAL
+       mac | mpw | mac-mpw)
                basic_machine=m68k-apple
                ;;
-       pmac | pmac-mpw)                                # EGCS LOCAL
+       pmac | pmac-mpw)
                basic_machine=powerpc-apple
                ;;
-       c4x*)
-               basic_machine=c4x-none
-               os=-coff
-               ;;
+       c4x*)
+               basic_machine=c4x-none
+               os=-coff
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
        *)
                echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
                exit 1
@@ -937,18 +1020,30 @@ case $os in
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* )
+             | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
-       # EGCS LOCAL
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto*)
+               os=-nto-qnx
+               ;;
        -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug |  -netware* | -os9* | -beos* \
-             | -macos* | -mpw* | -magic* | -mon960* | -lnews* )
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
                ;;
        -mac*)
                os=`echo $os | sed -e 's|mac|macos|'`
                ;;
-       # END EGCS LOCAL
        -linux*)
                os=`echo $os | sed -e 's|linux|linux-gnu|'`
                ;;
@@ -958,6 +1053,12 @@ case $os in
        -sunos6*)
                os=`echo $os | sed -e 's|sunos6|solaris3|'`
                ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -wince*)
+               os=-wince
+               ;;
        -osfrose*)
                os=-osfrose
                ;;
@@ -973,7 +1074,7 @@ case $os in
        -acis*)
                os=-aos
                ;;
-       -386bsd)                                        # EGCS LOCAL
+       -386bsd)
                os=-bsd
                ;;
        -ctix* | -uts*)
@@ -982,6 +1083,9 @@ case $os in
        -ns2 )
                os=-nextstep2
                ;;
+       -nsk*)
+               os=-nsk
+               ;;
        # Preserve the version number of sinix5.
        -sinix5.*)
                os=`echo $os | sed -e 's|sinix|sysv|'`
@@ -1007,15 +1111,18 @@ case $os in
        # This must come after -sysvr4.
        -sysv*)
                ;;
-       -ose*)                                          # EGCS LOCAL
+       -ose*)
                os=-ose
                ;;
-       -es1800*)                                       # EGCS LOCAL
+       -es1800*)
                os=-ose
                ;;
        -xenix)
                os=-xenix
                ;;
+        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
        -none)
                ;;
        *)
@@ -1041,12 +1148,15 @@ case $basic_machine in
        *-acorn)
                os=-riscix1.2
                ;;
-       arm*-corel)
+       arm*-rebel)
                os=-linux
                ;;
        arm*-semi)
                os=-aout
                ;;
+       pdp10-*)
+               os=-tops20
+               ;;
         pdp11-*)
                os=-none
                ;;
@@ -1065,15 +1175,15 @@ case $basic_machine in
                # default.
                # os=-sunos4
                ;;
-       m68*-cisco)                                     # EGCS LOCAL
+       m68*-cisco)
                os=-aout
                ;;
-       mips*-cisco)                                    # EGCS LOCAL
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
                os=-elf
                ;;
-        mips*-*)                                        # EGCS LOCAL
-                os=-elf
-                ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
                os=-sysv3
                ;;
@@ -1086,13 +1196,13 @@ case $basic_machine in
        *-ibm)
                os=-aix
                ;;
-       *-wec)                                          # EGCS LOCAL
+       *-wec)
                os=-proelf
                ;;
-       *-winbond)                                      # EGCS LOCAL
+       *-winbond)
                os=-proelf
                ;;
-       *-oki)                                          # EGCS LOCAL
+       *-oki)
                os=-proelf
                ;;
        *-hp)
@@ -1155,18 +1265,21 @@ case $basic_machine in
        *-masscomp)
                os=-rtu
                ;;
-       f301-fujitsu)
+       f30[01]-fujitsu | f700-fujitsu)
                os=-uxpv
                ;;
-       *-rom68k)                                       # EGCS LOCAL
+       *-rom68k)
                os=-coff
                ;;
-       *-*bug)                                         # EGCS LOCAL
+       *-*bug)
                os=-coff
                ;;
-       *-apple)                                        # EGCS LOCAL
+       *-apple)
                os=-macos
                ;;
+       *-atari*)
+               os=-mint
+               ;;
        *)
                os=-none
                ;;
@@ -1212,7 +1325,7 @@ case $basic_machine in
                        -genix*)
                                vendor=ns
                                ;;
-                       -mvs*)
+                       -mvs* | -opened*)
                                vendor=ibm
                                ;;
                        -ptx*)
@@ -1224,15 +1337,26 @@ case $basic_machine in
                        -aux*)
                                vendor=apple
                                ;;
-                       -hms*)                          # EGCS LOCAL
+                       -hms*)
                                vendor=hitachi
                                ;;
-                       -mpw* | -macos*)                # EGCS LOCAL
+                       -mpw* | -macos*)
                                vendor=apple
                                ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
                esac
                basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
                ;;
 esac
 
 echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index 2da9910..c6537db 100755 (executable)
@@ -12,7 +12,187 @@ ac_help=
 ac_default_prefix=/usr/local
 # Any additions from configure.in:
 ac_help="$ac_help
-  --enable-debug    creates debugging code [default=no]"
+  --enable-static[=PKGS]  build static libraries [default=no]"
+ac_help="$ac_help
+  --enable-shared[=PKGS]  build shared libraries [default=yes]"
+ac_help="$ac_help
+  --enable-fast-install[=PKGS]  optimize for fast installation [default=yes]"
+ac_help="$ac_help
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]"
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+fi
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+        test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+        echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+        test "X$echo_testing_string" = "X$echo_test_string"; then
+       # Cool, printf works
+       :
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+       export CONFIG_SHELL
+       SHELL="$CONFIG_SHELL"
+       export SHELL
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+       # maybe with a smaller string...
+       prev=:
+
+       for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+         then
+           break
+         fi
+         prev="$cmd"
+       done
+
+       if test "$prev" != 'sed 50q "$0"'; then
+         echo_test_string=`eval $prev`
+         export echo_test_string
+         exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+       else
+         # Oops.  We lost completely, so just stick with echo.
+         echo=echo
+       fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+ac_help="$ac_help
+  --disable-libtool-lock  avoid locking (might break parallel builds)"
+ac_help="$ac_help
+  --with-pic              try to use only PIC/non-PIC objects [default=use both]"
+ac_help="$ac_help
+  --enable-debug          creates debugging code [default=no]"
+ac_help="$ac_help
+  --enable-optimized      enables the assembler optimizations [default depends on --enable-debug value]"
+ac_help="$ac_help
+  --with-javaglue         creates the java glue code [default=yes]"
+ac_help="$ac_help
+  --enable-threads        enables multithread safety [default=yes]"
+ac_help="$ac_help
+  --enable-aio            enables asynchronous i/o for entropy gathering [default=yes]"
+ac_help="$ac_help
+  --with-mtmalloc         links against the mtmalloc library [default=no]"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -570,7 +750,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:574: checking host system type" >&5
+echo "configure:754: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -591,7 +771,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
 echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:595: checking target system type" >&5
+echo "configure:775: checking target system type" >&5
 
 target_alias=$target
 case "$target_alias" in
@@ -609,7 +789,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$target" 1>&6
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:613: checking build system type" >&5
+echo "configure:793: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -632,10 +812,287 @@ test "$host_alias" != "$target_alias" &&
   program_prefix=${target_alias}-
 
 
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:828: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
+  for ac_dir in $PATH; do
+    # Account for people who put trailing slashes in PATH elements.
+    case "$ac_dir/" in
+    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      # Don't use installbsd from OSF since it installs stuff as root
+      # by default.
+      for ac_prog in ginstall scoinst install; do
+        if test -f $ac_dir/$ac_prog; then
+         if test $ac_prog = install &&
+            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         else
+           ac_cv_path_install="$ac_dir/$ac_prog -c"
+           break 2
+         fi
+       fi
+      done
+      ;;
+    esac
+  done
+  IFS="$ac_save_IFS"
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL="$ac_cv_path_install"
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL="$ac_install_sh"
+  fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
+echo "configure:881: checking whether build environment is sane" >&5
+# Just in case
+sleep 1
+echo timestamp > conftestfile
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftestfile`
+   fi
+   if test "$*" != "X $srcdir/configure conftestfile" \
+      && test "$*" != "X conftestfile $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { echo "configure: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" 1>&2; exit 1; }
+   fi
+
+   test "$2" = conftestfile
+   )
+then
+   # Ok.
+   :
+else
+   { echo "configure: error: newly created file is older than distributed files!
+Check your system clock" 1>&2; exit 1; }
+fi
+rm -f conftest*
+echo "$ac_t""yes" 1>&6
+if test "$program_transform_name" = s,x,x,; then
+  program_transform_name=
+else
+  # Double any \ or $.  echo might interpret backslashes.
+  cat <<\EOF_SED > conftestsed
+s,\\,\\\\,g; s,\$,$$,g
+EOF_SED
+  program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
+  rm -f conftestsed
+fi
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,${program_prefix},; $program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
+
+# sed with no file args requires a program.
+test "$program_transform_name" = "" && program_transform_name="s,x,x,"
+
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+echo "configure:938: checking whether ${MAKE-make} sets \${MAKE}" >&5
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftestmake <<\EOF
+all:
+       @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftestmake
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  SET_MAKE=
+else
+  echo "$ac_t""no" 1>&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+PACKAGE=beecrypt
+
+VERSION=2.1.0
+
+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
+  { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
+fi
+cat >> confdefs.h <<EOF
+#define PACKAGE "$PACKAGE"
+EOF
+
+cat >> confdefs.h <<EOF
+#define VERSION "$VERSION"
+EOF
+
+
+
+missing_dir=`cd $ac_aux_dir && pwd`
+echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
+echo "configure:984: checking for working aclocal" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf.  Sigh.
+if (aclocal --version) < /dev/null > /dev/null 2>&1; then
+   ACLOCAL=aclocal
+   echo "$ac_t""found" 1>&6
+else
+   ACLOCAL="$missing_dir/missing aclocal"
+   echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
+echo "configure:997: checking for working autoconf" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf.  Sigh.
+if (autoconf --version) < /dev/null > /dev/null 2>&1; then
+   AUTOCONF=autoconf
+   echo "$ac_t""found" 1>&6
+else
+   AUTOCONF="$missing_dir/missing autoconf"
+   echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working automake""... $ac_c" 1>&6
+echo "configure:1010: checking for working automake" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf.  Sigh.
+if (automake --version) < /dev/null > /dev/null 2>&1; then
+   AUTOMAKE=automake
+   echo "$ac_t""found" 1>&6
+else
+   AUTOMAKE="$missing_dir/missing automake"
+   echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
+echo "configure:1023: checking for working autoheader" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf.  Sigh.
+if (autoheader --version) < /dev/null > /dev/null 2>&1; then
+   AUTOHEADER=autoheader
+   echo "$ac_t""found" 1>&6
+else
+   AUTOHEADER="$missing_dir/missing autoheader"
+   echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
+echo "configure:1036: checking for working makeinfo" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf.  Sigh.
+if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
+   MAKEINFO=makeinfo
+   echo "$ac_t""found" 1>&6
+else
+   MAKEINFO="$missing_dir/missing makeinfo"
+   echo "$ac_t""missing" 1>&6
+fi
+
+
+
+
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_static=no
+fi
+
+
+
 case $target_os in
-  solaris*)
+  cygwin*)
     cat >> confdefs.h <<\EOF
-#define SOLARIS 1
+#define CYGWIN 1
+EOF
+
+    cat >> confdefs.h <<\EOF
+#define WIN32 1
+EOF
+
+    ;;
+  darwin*)
+    cat >> confdefs.h <<\EOF
+#define DARWIN 1
+EOF
+
+    ;;
+  freebsd*)
+    cat >> confdefs.h <<\EOF
+#define FREEBSD 1
 EOF
 
     ;;
@@ -645,46 +1102,65 @@ EOF
 EOF
 
     ;;
-  *)
-    { echo "configure: error: 
-Operating system type $host currently not supported/tested
-" 1>&2; exit 1; }
-  ;;
-esac
-
+  netbsd*)
+    cat >> confdefs.h <<\EOF
+#define NETBSD 1
+EOF
 
+    ;;
+  openbsd*)
+    cat >> confdefs.h <<\EOF
+#define OPENBSD 1
+EOF
 
-# Check whether --enable-debug or --disable-debug was given.
-if test "${enable_debug+set}" = set; then
-  enableval="$enable_debug"
-   if test "$enableval" = no; then
-      ac_use_debug_code=no
-    else
-      ac_use_debug_code=yes
-    fi
-  
-else
-   ac_use_debug_code=no
-fi
+    ;;
+  osf*)
+    cat >> confdefs.h <<\EOF
+#define OSF 1
+EOF
 
+    ;;
+  *qnx)
+    cat >> confdefs.h <<\EOF
+#define QNX 1
+EOF
 
-PRODUCT=beecrypt
-VERSION=1.0.0
-cat >> confdefs.h <<EOF
-#define PRODUCT "$PRODUCT"
+    ;;
+  solaris*)
+    cat >> confdefs.h <<\EOF
+#define SOLARIS 1
 EOF
 
-cat >> confdefs.h <<EOF
-#define VERSION "$VERSION"
+    ;;
+  sysv*uv*)
+    cat >> confdefs.h <<\EOF
+#define SCO_UNIX 1
 EOF
 
+    ;;
+  *)
+    echo "configure: warning: Operating system type $target_os currently not supported and/or tested" 1>&2
+    ;;
+esac
+case $target_os in
+  cygwin* | darwin*)
+    cat >> confdefs.h <<\EOF
+#define LEADING_UNDERSCORE 1
+EOF
 
+    ;;
+  *)
+    cat >> confdefs.h <<\EOF
+#define NO_UNDERSCORES 1
+EOF
 
+    ;;
+esac
 
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:688: checking for $ac_word" >&5
+echo "configure:1164: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -714,7 +1190,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:718: checking for $ac_word" >&5
+echo "configure:1194: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -765,7 +1241,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:769: checking for $ac_word" >&5
+echo "configure:1245: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -797,7 +1273,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:801: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1277: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -808,12 +1284,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 812 "configure"
+#line 1288 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -839,12 +1315,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:843: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1319: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:848: checking whether we are using GNU C" >&5
+echo "configure:1324: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -853,7 +1329,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -872,7 +1348,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:876: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1352: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -903,137 +1379,4436 @@ else
   fi
 fi
 
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:919: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1384: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
+    # This must be in double quotes, not single quotes, because CPP may get
+  # substituted into the Makefile and "${CC-cc}" will confuse make.
+  CPP="${CC-cc} -E"
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp.
+  cat > conftest.$ac_ext <<EOF
+#line 1399 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -E -traditional-cpp"
+  cat > conftest.$ac_ext <<EOF
+#line 1416 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -nologo -E"
+  cat > conftest.$ac_ext <<EOF
+#line 1433 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+  ac_cv_prog_CPP="$CPP"
+fi
+  CPP="$ac_cv_prog_CPP"
+else
+  ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+echo "configure:1464: checking whether ln -s works" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  rm -f conftestdata
+if ln -s X conftestdata 2>/dev/null
+then
+  rm -f conftestdata
+  ac_cv_prog_LN_S="ln -s"
+else
+  ac_cv_prog_LN_S=ln
+fi
+fi
+LN_S="$ac_cv_prog_LN_S"
+if test "$ac_cv_prog_LN_S" = "ln -s"; then
+  echo "$ac_t""yes" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:1485: checking for Cygwin environment" >&5
+if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1490 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:1501: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_cygwin=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_cygwin=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_cygwin" 1>&6
+CYGWIN=
+test "$ac_cv_cygwin" = yes && CYGWIN=yes
+echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
+echo "configure:1518: checking for mingw32 environment" >&5
+if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1523 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:1530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_mingw32=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_mingw32=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_mingw32" 1>&6
+MINGW32=
+test "$ac_cv_mingw32" = yes && MINGW32=yes
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_shared=yes
+fi
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_fast_install=yes
+fi
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
+echo "configure:1604: checking for ld used by GCC" >&5
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
       done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
+echo "configure:1634: checking for GNU ld" >&5
+else
+  echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+echo "configure:1637: checking for non-GNU ld" >&5
+fi
+if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+       test "$with_gnu_ld" != no && break
+      else
+       test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$ac_t""$LD" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
+echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
+echo "configure:1672: checking if the linker ($LD) is GNU ld" >&5
+if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  lt_cv_prog_gnu_ld=yes
+else
+  lt_cv_prog_gnu_ld=no
+fi
+fi
+
+echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+echo "configure:1689: checking for $LD option to reload object files" >&5
+if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+
+echo "$ac_t""$lt_cv_ld_reload_flag" 1>&6
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
+echo "configure:1701: checking for BSD-compatible nm" >&5
+if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -B"
+       break
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -p"
+       break
+      else
+       lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+       continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+
+NM="$lt_cv_path_NM"
+echo "$ac_t""$NM" 1>&6
+
+echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+echo "configure:1739: checking how to recognise dependant libraries" >&5
+if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# ['file_magic [regex]'] -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.012)
+    lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
       ;;
     esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6*)
+  case $host_os in
+  irix5*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* )
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv5uw[78]* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  esac
+  ;;
+esac
+
+fi
+
+echo "$ac_t""$lt_cv_deplibs_check_method" 1>&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+
+echo $ac_n "checking for object suffix""... $ac_c" 1>&6
+echo "configure:1912: checking for object suffix" >&5
+if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  rm -f conftest*
+echo 'int i = 1;' > conftest.$ac_ext
+if { (eval echo configure:1918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  for ac_file in conftest.*; do
+    case $ac_file in
+    *.c) ;;
+    *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;;
+    esac
   done
-  IFS="$ac_save_IFS"
+else
+  { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; }
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_objext" 1>&6
+OBJEXT=$ac_cv_objext
+ac_objext=$ac_cv_objext
+
+
+
+echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
+echo "configure:1938: checking for executable suffix" >&5
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
+  ac_cv_exeext=.exe
+else
+  rm -f conftest*
+  echo 'int main () { return 0; }' > conftest.$ac_ext
+  ac_cv_exeext=
+  if { (eval echo configure:1948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+    for file in conftest.*; do
+      case $file in
+      *.c | *.o | *.obj) ;;
+      *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
+      esac
+    done
+  else
+    { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
+  fi
+  rm -f conftest*
+  test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
+fi
+fi
+
+EXEEXT=""
+test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
+echo "$ac_t""${ac_cv_exeext}" 1>&6
+ac_exeext=$EXEEXT
+
+if test $host != $build; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
+echo "configure:1979: checking command to parse $NM output" >&5
+if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  ;;
+irix*)
+  symcode='[BCDEGRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $host_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[        ]\($symcode$symcode*\)[         ][      ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo configure:2055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo configure:2058: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+       if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+         cat <<EOF >> conftest.$ac_ext
+#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[] =
+{
+EOF
+         sed "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext
+         cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         save_LIBS="$LIBS"
+         save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$no_builtin_flag"
+         if { (eval echo configure:2109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+           pipe_works=yes
+         fi
+         LIBS="$save_LIBS"
+         CFLAGS="$save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+else
+  global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
+fi
+if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then
+  echo "$ac_t""failed" 1>&6
+else
+  echo "$ac_t""ok" 1>&6
+fi
+
+for ac_hdr in dlfcn.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:2155: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2160 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
+echo "configure:2200: checking for ${ac_tool_prefix}file" >&5
+if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           egrep "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$ac_t""$MAGIC_CMD" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo $ac_n "checking for file""... $ac_c" 1>&6
+echo "configure:2262: checking for file" >&5
+if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           egrep "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$ac_t""$MAGIC_CMD" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2333: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+  echo "$ac_t""$RANLIB" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+if test -z "$ac_cv_prog_RANLIB"; then
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2365: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_RANLIB="ranlib"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+fi
+fi
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+  echo "$ac_t""$RANLIB" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+  RANLIB=":"
+fi
+fi
+
+# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2400: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+STRIP="$ac_cv_prog_STRIP"
+if test -n "$STRIP"; then
+  echo "$ac_t""$STRIP" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+if test -z "$ac_cv_prog_STRIP"; then
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2432: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_STRIP="strip"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":"
+fi
+fi
+STRIP="$ac_cv_prog_STRIP"
+if test -n "$STRIP"; then
+  echo "$ac_t""$STRIP" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+  STRIP=":"
+fi
+fi
+
+
+enable_dlopen=no
+enable_win32_dll=yes
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+  :
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 2481 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:2482: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
+echo "configure:2503: checking whether the C compiler needs -belf" >&5
+if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+     ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+     cat > conftest.$ac_ext <<EOF
+#line 2516 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  lt_cv_cc_needs_belf=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  lt_cv_cc_needs_belf=no
+fi
+rm -f conftest*
+     ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+fi
+
+echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2553: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+DLLTOOL="$ac_cv_prog_DLLTOOL"
+if test -n "$DLLTOOL"; then
+  echo "$ac_t""$DLLTOOL" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+if test -z "$ac_cv_prog_DLLTOOL"; then
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2585: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_DLLTOOL="dlltool"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_DLLTOOL" && ac_cv_prog_DLLTOOL="false"
+fi
+fi
+DLLTOOL="$ac_cv_prog_DLLTOOL"
+if test -n "$DLLTOOL"; then
+  echo "$ac_t""$DLLTOOL" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+  DLLTOOL="false"
+fi
+fi
+
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2620: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_AS="${ac_tool_prefix}as"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+AS="$ac_cv_prog_AS"
+if test -n "$AS"; then
+  echo "$ac_t""$AS" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+if test -z "$ac_cv_prog_AS"; then
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2652: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_AS="as"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_AS" && ac_cv_prog_AS="false"
+fi
+fi
+AS="$ac_cv_prog_AS"
+if test -n "$AS"; then
+  echo "$ac_t""$AS" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+  AS="false"
+fi
+fi
+
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2687: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+OBJDUMP="$ac_cv_prog_OBJDUMP"
+if test -n "$OBJDUMP"; then
+  echo "$ac_t""$OBJDUMP" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+if test -z "$ac_cv_prog_OBJDUMP"; then
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2719: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_OBJDUMP="objdump"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_OBJDUMP" && ac_cv_prog_OBJDUMP="false"
+fi
+fi
+OBJDUMP="$ac_cv_prog_OBJDUMP"
+if test -n "$OBJDUMP"; then
+  echo "$ac_t""$OBJDUMP" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+  OBJDUMP="false"
+fi
+fi
+
+
+  # recent cygwin and mingw systems supply a stub DllMain which the user
+  # can override, but on older systems we have to supply one
+  echo $ac_n "checking if libtool should supply DllMain function""... $ac_c" 1>&6
+echo "configure:2755: checking if libtool should supply DllMain function" >&5
+if eval "test \"`echo '$''{'lt_cv_need_dllmain'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2760 "configure"
+#include "confdefs.h"
+
+int main() {
+extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
+      DllMain (0, 0, 0);
+; return 0; }
+EOF
+if { (eval echo configure:2768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  lt_cv_need_dllmain=no
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  lt_cv_need_dllmain=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$lt_cv_need_dllmain" 1>&6
+
+  case $host/$CC in
+  *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
+    # old mingw systems require "-dll" to link a DLL, while more recent ones
+    # require "-mdll"
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -mdll"
+    echo $ac_n "checking how to link DLLs""... $ac_c" 1>&6
+echo "configure:2789: checking how to link DLLs" >&5
+if eval "test \"`echo '$''{'lt_cv_cc_dll_switch'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2794 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  lt_cv_cc_dll_switch=-mdll
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  lt_cv_cc_dll_switch=-dll
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$lt_cv_cc_dll_switch" 1>&6
+    CFLAGS="$SAVE_CFLAGS" ;;
+  *-*-cygwin* | *-*-pw32*)
+    # cygwin systems need to pass --dll to the linker, and not link
+    # crt.o which will require a WinMain@16 definition.
+    lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
+  esac
+  ;;
+  
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+need_locks="$enable_libtool_lock"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+if test x"$host" != x"$build"; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case $host_os in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+echo $ac_n "checking for objdir""... $ac_c" 1>&6
+echo "configure:2908: checking for objdir" >&5
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$ac_t""$objdir" 1>&6
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+test -z "$pic_mode" && pic_mode=default
+
+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
+echo "configure:2935: checking for $compiler option to produce PIC" >&5
+if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+   lt_cv_prog_cc_pic=
+  lt_cv_prog_cc_shlib=
+  lt_cv_prog_cc_wl=
+  lt_cv_prog_cc_static=
+  lt_cv_prog_cc_no_builtin=
+  lt_cv_prog_cc_can_build_shared=$can_build_shared
+
+  if test "$GCC" = yes; then
+    lt_cv_prog_cc_wl='-Wl,'
+    lt_cv_prog_cc_static='-static'
+
+    case $host_os in
+    aix*)
+      # Below there is a dirty hack to force normal static linking with -ldl
+      # The problem is because libdl dynamically linked with both libc and
+      # libC (AIX C++ library), which obviously doesn't included in libraries
+      # list by gcc. This cause undefined symbols with -static flags.
+      # This hack allows C programs to be linked with "-static -ldl", but
+      # we not sure about C++ programs.
+      lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_cv_prog_cc_pic='-fno-common'
+      ;;
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        lt_cv_prog_cc_pic=-Kconform_pic
+      fi
+      ;;
+    *)
+      lt_cv_prog_cc_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for PIC flags for the system compiler.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+        # AIX 5 now supports IA64 processor
+        lt_cv_prog_cc_static='-Bstatic'
+        lt_cv_prog_cc_wl='-Wl,'
+      else
+        lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
+      lt_cv_prog_cc_pic='+Z'
+      ;;
+
+    irix5* | irix6*)
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      # PIC (with -KPIC) is the default.
+      ;;
+
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+
+    newsos6)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      # All OSF/1 code is PIC.
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_cv_prog_cc_pic='-Kpic'
+      lt_cv_prog_cc_static='-dn'
+      lt_cv_prog_cc_shlib='-belf'
+      ;;
+
+    solaris*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    sunos4*)
+      lt_cv_prog_cc_pic='-PIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Qoption ld '
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      if test "x$host_vendor" = xsni; then
+        lt_cv_prog_cc_wl='-LD'
+      else
+        lt_cv_prog_cc_wl='-Wl,'
+      fi
+      ;;
+
+    uts4*)
+      lt_cv_prog_cc_pic='-pic'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_cv_prog_cc_pic='-Kconform_pic'
+       lt_cv_prog_cc_static='-Bstatic'
+      fi
+      ;;
+
+    *)
+      lt_cv_prog_cc_can_build_shared=no
+      ;;
+    esac
+  fi
+
+fi
+
+if test -z "$lt_cv_prog_cc_pic"; then
+  echo "$ac_t""none" 1>&6
+else
+  echo "$ac_t""$lt_cv_prog_cc_pic" 1>&6
+
+  # Check to make sure the pic_flag actually works.
+  echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
+echo "configure:3087: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+      save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+    cat > conftest.$ac_ext <<EOF
+#line 3094 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:3101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+        case $host_os in
+      hpux9* | hpux10* | hpux11*)
+       # On HP-UX, both CC and GCC only warn that PIC is supported... then
+       # they create non-PIC objects.  So, if there were any warnings, we
+       # assume that PIC is not supported.
+       if test -s conftest.err; then
+         lt_cv_prog_cc_pic_works=no
+       else
+         lt_cv_prog_cc_pic_works=yes
+       fi
+       ;;
+      *)
+       lt_cv_prog_cc_pic_works=yes
+       ;;
+      esac
+    
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+        lt_cv_prog_cc_pic_works=no
+    
+fi
+rm -f conftest*
+    CFLAGS="$save_CFLAGS"
+  
+fi
+
+
+  if test "X$lt_cv_prog_cc_pic_works" = Xno; then
+    lt_cv_prog_cc_pic=
+    lt_cv_prog_cc_can_build_shared=no
+  else
+    lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
+  fi
+
+  echo "$ac_t""$lt_cv_prog_cc_pic_works" 1>&6
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$lt_cv_prog_cc_shlib"; then
+  echo "configure: warning: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" 1>&2
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[         ]$lt_cv_prog_cc_shlib[  ]" >/dev/null; then :
+  else
+   echo "configure: warning: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" 1>&2
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
+echo "configure:3153: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    lt_cv_prog_cc_static_works=no
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+  cat > conftest.$ac_ext <<EOF
+#line 3161 "configure"
+#include "confdefs.h"
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  lt_cv_prog_cc_static_works=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+  LDFLAGS="$save_LDFLAGS"
+
+fi
+
+
+# Belt *and* braces to stop my trousers falling down:
+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
+echo "$ac_t""$lt_cv_prog_cc_static_works" 1>&6
+
+pic_flag="$lt_cv_prog_cc_pic"
+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
+wl="$lt_cv_prog_cc_wl"
+link_static_flag="$lt_cv_prog_cc_static"
+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
+can_build_shared="$lt_cv_prog_cc_can_build_shared"
+
+
+# Check to see if options -o and -c are simultaneously supported by compiler
+echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
+echo "configure:3195: checking if $compiler supports -c -o file.$ac_objext" >&5
+if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+echo "int some_variable = 0;" > conftest.$ac_ext
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+compiler_c_o=no
+if { (eval echo configure:3214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+  if test -s out/conftest.err; then
+    lt_cv_compiler_c_o=no
+  else
+    lt_cv_compiler_c_o=yes
+  fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&5
+  lt_cv_compiler_c_o=no
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+
+fi
+
+compiler_c_o=$lt_cv_compiler_c_o
+echo "$ac_t""$compiler_c_o" 1>&6
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
+echo "configure:3243: checking if $compiler supports -c -o file.lo" >&5
+  if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+  lt_cv_compiler_o_lo=no
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  cat > conftest.$ac_ext <<EOF
+#line 3252 "configure"
+#include "confdefs.h"
+
+int main() {
+int some_variable = 0;
+; return 0; }
+EOF
+if { (eval echo configure:3259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+      # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      lt_cv_compiler_o_lo=no
+    else
+      lt_cv_compiler_o_lo=yes
+    fi
+  
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+  CFLAGS="$save_CFLAGS"
+  
+fi
+
+  compiler_o_lo=$lt_cv_compiler_o_lo
+  echo "$ac_t""$compiler_o_lo" 1>&6
+else
+  compiler_o_lo=no
+fi
+
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
+echo "configure:3289: checking if we can lock with hard links" >&5
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$ac_t""$hard_links" 1>&6
+  if test "$hard_links" = no; then
+    echo "configure: warning: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" 1>&2
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+if test "$GCC" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
+echo "configure:3308: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+  compiler_rtti_exceptions=no
+  cat > conftest.$ac_ext <<EOF
+#line 3314 "configure"
+#include "confdefs.h"
+
+int main() {
+int some_variable = 0;
+; return 0; }
+EOF
+if { (eval echo configure:3321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+      # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      compiler_rtti_exceptions=no
+    else
+      compiler_rtti_exceptions=yes
+    fi
+  
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+  CFLAGS="$save_CFLAGS"
+  echo "$ac_t""$compiler_rtti_exceptions" 1>&6
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+fi
+
+# See if the linker supports building shared libraries.
+echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
+echo "configure:3348: checking whether the linker ($LD) supports shared libraries" >&5
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+case $host_os in
+cygwin* | mingw* | pw32* )
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$GCC" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case $host_os in
+  aix3* | aix4* | aix5*)
+    # On AIX, the GNU linker is very broken
+    # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
+      sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
+      test -f $output_objdir/impgen.exe || (cd $output_objdir && \
+      if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
+      else $CC -o impgen impgen.c ; fi)~
+      $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
+
+    old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
+
+    # cygwin and mingw dlls have different entry points and sets of symbols
+    # to exclude.
+    # FIXME: what about values for MSVC?
+    dll_entry=__cygwin_dll_entry@12
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
+    case $host_os in
+    mingw*)
+      # mingw values
+      dll_entry=_DllMainCRTStartup@12
+      dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
+      ;;
+    esac
+
+    # mingw and cygwin differ, and it's simplest to just exclude the union
+    # of the two symbol sets.
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
+
+    # recent cygwin and mingw systems supply a stub DllMain which the user
+    # can override, but on older systems we have to supply one (in ltdll.c)
+    if test "x$lt_cv_need_dllmain" = "xyes"; then
+      ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
+      ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~
+       test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
+    else
+      ltdll_obj=
+      ltdll_cmds=
+    fi
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left be newer dlltools.
+    export_symbols_cmds="$ltdll_cmds"'
+      $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
+
+    # If the export-symbols file already is a .def file (1st line
+    # is EXPORTS), use it as is.
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
+        cp $export_symbols $output_objdir/$soname-def;
+      else
+        echo EXPORTS > $output_objdir/$soname-def;
+        _lt_hint=1;
+        cat $export_symbols | while read symbol; do
+         set dummy \$symbol;
+         case \$# in
+           2) echo "   \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+           *) echo "     \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
+         esac;
+         _lt_hint=`expr 1 + \$_lt_hint`;
+        done;
+      fi~
+      '"$ltdll_cmds"'
+      $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
+      $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
+      $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+      wlarc=
+    else
+      archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw* | pw32*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case $host_os in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$GCC" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4* | aix5*)
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds=''
+    hardcode_libdir_separator=':'
+    if test "$GCC" = yes; then
+      collect2name=`${CC} -print-prog-name=collect2`
+      if test -f "$collect2name" && \
+        strings "$collect2name" | grep resolve_lib_name >/dev/null
+      then
+       # We have reworked collect2
+       hardcode_direct=yes
+      else
+        # We have old collect2
+        hardcode_direct=unsupported
+        # It fails to find uninstalled libraries when the uninstalled
+        # path is not listed in the libpath.  Setting hardcode_minus_L
+        # to unsupported forces relinking
+        hardcode_minus_L=yes
+        hardcode_libdir_flag_spec='-L$libdir'
+        hardcode_libdir_separator=
+      fi
+      shared_flag='-shared'
+    else
+      if test "$host_cpu" = ia64; then
+        shared_flag='-G'
+      else
+        shared_flag='${wl}-bM:SRE'
+      fi
+      hardcode_direct=yes
+    fi
+
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      # Test if we are trying to use run time linking, or normal AIX style linking.
+      # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
+      aix_use_runtimelinking=no
+      for ld_flag in $LDFLAGS; do
+        if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
+          aix_use_runtimelinking=yes
+          break
+        fi
+      done
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+    # It seems that -bexpall can do strange things, so it is better to
+    # generate a list of symbols to export.
+    always_export_symbols=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+      allow_undefined_flag=' -Wl,-G'
+      archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+    else
+      if test "$host_cpu" = ia64; then
+        hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+       allow_undefined_flag="-znodefs"
+        archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+        hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+        # Warning - without using the other run time loading flags, -berok will
+        #           link without error, but may produce a broken library.
+        allow_undefined_flag='${wl}-berok'
+        # This is a bit strange, but is similar to how AIX traditionally builds
+        # it's shared libraries.
+        archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
+      fi
+    fi
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+    fix_srcfile_path='`cygpath -w "$srcfile"`'
+    ;;
+
+  darwin* | rhapsody*)
+    allow_undefined_flag='-undefined suppress'
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.
+    archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case $host_os in
+    hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+                        # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    link_all_deplibs=yes
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+    fi
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  newsos6)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)       # as osf3* with the addition of -msym flag
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+      $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+      #Both c and cxx compiler support -rpath directly
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    ;;
+
+  solaris*)
+    no_undefined_flag=' -z defs'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case $host_os in
+    solaris2.[0-5] | solaris2.[0-5].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    link_all_deplibs=yes
+    ;;
+
+  sunos4*)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+    fi
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    if test "x$host_vendor" = xsno; then
+      archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts'
+      hardcode_direct=yes # is this really true???
+    else
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  sysv5uw7* | unixware7*)
+    no_undefined_flag='${wl}-z ${wl}text'
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+echo "$ac_t""$ld_shlibs" 1>&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+# Check hardcoding attributes.
+echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
+echo "configure:3964: checking how to hardcode library paths into programs" >&5
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$ac_t""$hardcode_action" 1>&6
+
+striplib=
+old_striplib=
+echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
+echo "configure:3992: checking whether stripping libraries is possible" >&5
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$ac_t""yes" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+# PORTME Fill in your ld.so characteristics
+echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
+echo "configure:4006: checking dynamic linker characteristics" >&5
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+       aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+           echo ' yes '
+           echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+        :
+      else
+        can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so instead of
+      # lib<name>.a to let people know that these are not typical AIX shared libraries.
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}.so$major'
+    fi
+    shlibpath_var=LIBPATH
+    deplibs_check_method=pass_all
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  case $GCC,$host_os in
+  yes,cygwin*)
+    library_names_spec='$libname.dll.a'
+    soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog .libs/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    ;;
+  yes,mingw*)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
+    ;;
+  yes,pw32*)
+    library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
+    ;;
+  *)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
+  soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
+  case $host_os in
+  irix5*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+    need_version=no
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$ac_t""$dynamic_linker" 1>&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Report the final consequences.
+echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
+echo "configure:4392: checking if libtool supports shared libraries" >&5
+echo "$ac_t""$can_build_shared" 1>&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  *)
+    echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+echo "configure:4431: checking for dlopen in -ldl" >&5
+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 4439 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo configure:4450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+echo "configure:4469: checking for dlopen" >&5
+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4474 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char dlopen();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+dlopen();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:4497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_dlopen=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_dlopen=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+echo "configure:4515: checking for shl_load" >&5
+if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4520 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char shl_load();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+shl_load();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:4543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_shl_load=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_shl_load=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
+echo "configure:4561: checking for dlopen in -lsvld" >&5
+ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lsvld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 4569 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo configure:4580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+echo "configure:4599: checking for shl_load in -ldld" >&5
+ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 4607 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char shl_load();
+
+int main() {
+shl_load()
+; return 0; }
+EOF
+if { (eval echo configure:4618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+           
+fi
+
+          
+fi
+
+        
+fi
+
+      
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+        test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+echo "configure:4671: checking whether a program can dlopen itself" >&5
+if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 4681 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+    
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self" 1>&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+echo "configure:4765: checking whether a statically linked program can dlopen itself" >&5
+if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 4775 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo configure:4836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+      
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+if test "$enable_shared" = yes && test "$GCC" = yes; then
+  case $archive_cmds in
+  *'~'*)
+    # FIXME: we may have to deal with multi-command sequences.
+    ;;
+  '$CC '*)
+    # Test whether the compiler implicitly links with -lc since on some
+    # systems, -lgcc has to come before -lc. If gcc already passes -lc
+    # to ld, don't add -lc before -lgcc.
+    echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
+echo "configure:4885: checking whether -lc should be explicitly linked in" >&5
+    if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  $rm conftest*
+    echo 'static int dummy;' > conftest.$ac_ext
+
+    if { (eval echo configure:4892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      soname=conftest
+      lib=conftest
+      libobjs=conftest.$ac_objext
+      deplibs=
+      wl=$lt_cv_prog_cc_wl
+      compiler_flags=-v
+      linker_flags=-v
+      verstring=
+      output_objdir=.
+      libname=conftest
+      save_allow_undefined_flag=$allow_undefined_flag
+      allow_undefined_flag=
+      if { (eval echo configure:4905: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
+      then
+       lt_cv_archive_cmds_need_lc=no
+      else
+       lt_cv_archive_cmds_need_lc=yes
+      fi
+      allow_undefined_flag=$save_allow_undefined_flag
+    else
+      cat conftest.err 1>&5
+    fi
+fi
+
+    echo "$ac_t""$lt_cv_archive_cmds_need_lc" 1>&6
+    ;;
+  esac
+fi
+need_lc=${lt_cv_archive_cmds_need_lc-yes}
+
+# The second clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  :
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+if test -f "$ltmain"; then
+  trap "$rm \"${ofile}T\"; exit 1" 1 2 15
+  $rm -f "${ofile}T"
+
+  echo creating $ofile
+
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS \
+    AR AR_FLAGS CC LD LN_S NM SHELL \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+    postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+    old_striplib striplib file_magic_cmd export_symbols_cmds \
+    deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case $var in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  cat <<__EOF__ > "${ofile}T"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# The default C compiler.
+CC=$lt_CC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_pic_flag
+pic_mode=$pic_mode
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$lt_compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
 
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "${ofile}T"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
 fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
+EOF
+    ;;
+  esac
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | os2*)
+    cat <<'EOF' >> "${ofile}T"
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+        # This is a source program that is used to create import libraries
+        # on Windows for dlls which lack them. Don't remove nor modify the
+        # starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+# #include <stdio.h>           /* for printf() */
+# #include <unistd.h>          /* for open(), lseek(), read() */
+# #include <fcntl.h>           /* for O_RDONLY, O_BINARY */
+# #include <string.h>          /* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+#      int fd;
+#      int offset;
+# {
+#   unsigned char b[2];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 2);
+#   return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+#     int fd;
+#     int offset;
+# {
+#   unsigned char b[4];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 4);
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+#      void *ptr;
+# {
+#   unsigned char *b = ptr;
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+#     int argc;
+#     char *argv[];
+# {
+#     int dll;
+#     unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#     unsigned long export_rva, export_size, nsections, secptr, expptr;
+#     unsigned long name_rvas, nexp;
+#     unsigned char *expdata, *erva;
+#     char *filename, *dll_name;
+#
+#     filename = argv[1];
+#
+#     dll = open(filename, O_RDONLY|O_BINARY);
+#     if (dll < 1)
+#      return 1;
+#
+#     dll_name = filename;
+#
+#     for (i=0; filename[i]; i++)
+#      if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+#          dll_name = filename + i +1;
+#
+#     pe_header_offset = pe_get32 (dll, 0x3c);
+#     opthdr_ofs = pe_header_offset + 4 + 20;
+#     num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#     if (num_entries < 1) /* no exports */
+#      return 1;
+#
+#     export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#     export_size = pe_get32 (dll, opthdr_ofs + 100);
+#     nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#     secptr = (pe_header_offset + 4 + 20 +
+#            pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#     expptr = 0;
+#     for (i = 0; i < nsections; i++)
+#     {
+#      char sname[8];
+#      unsigned long secptr1 = secptr + 40 * i;
+#      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+#      unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+#      unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+#      lseek(dll, secptr1, SEEK_SET);
+#      read(dll, sname, 8);
+#      if (vaddr <= export_rva && vaddr+vsize > export_rva)
+#      {
+#          expptr = fptr + (export_rva - vaddr);
+#          if (export_rva + export_size > vaddr + vsize)
+#              export_size = vsize - (export_rva - vaddr);
+#          break;
+#      }
+#     }
+#
+#     expdata = (unsigned char*)malloc(export_size);
+#     lseek (dll, expptr, SEEK_SET);
+#     read (dll, expdata, export_size);
+#     erva = expdata - export_rva;
+#
+#     nexp = pe_as32 (expdata+24);
+#     name_rvas = pe_as32 (expdata+32);
+#
+#     printf ("EXPORTS\n");
+#     for (i = 0; i<nexp; i++)
+#     {
+#      unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+#      printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#     }
+#
+#     return 0;
+# }
+# /* impgen.c ends here */
+
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
+
+  mv -f "${ofile}T" "$ofile" || \
+    (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
+  chmod +x "$ofile"
 fi
-echo "$ac_t""$INSTALL" 1>&6
 
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
 
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
 
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:973: checking for inline" >&5
+echo "configure:5485: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 980 "configure"
+#line 5492 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:987: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+done
+
+fi
+
+echo "$ac_t""$ac_cv_c_inline" 1>&6
+case "$ac_cv_c_inline" in
+  inline | yes) ;;
+  no) cat >> confdefs.h <<\EOF
+#define inline 
+EOF
+ ;;
+  *)  cat >> confdefs.h <<EOF
+#define inline $ac_cv_c_inline
+EOF
+ ;;
+esac
+
+
+if test "$ac_cv_prog_gcc" != yes; then
+  echo $ac_n "checking whether we are using Sun Workshop C""... $ac_c" 1>&6
+echo "configure:5527: checking whether we are using Sun Workshop C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_SUNPRO_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+    cat > conftest.$ac_ext <<EOF
+#line 5533 "configure"
+#include "confdefs.h"
+
+      #ifdef __SUNPRO_C
+        yes;
+      #endif
+      
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_prog_SUNPRO_CC=yes
+else
+  rm -rf conftest*
+  ac_cv_prog_SUNPRO_CC=no
+fi
+rm -f conftest*
+
+    
+fi
+
+echo "$ac_t""$ac_cv_prog_SUNPRO_CC" 1>&6
+  if test "$ac_cv_prog_SUNPRO_CC" != yes; then
+    echo $ac_n "checking whether we are using Compaq's C compiler""... $ac_c" 1>&6
+echo "configure:5557: checking whether we are using Compaq's C compiler" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_DECC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+      cat > conftest.$ac_ext <<EOF
+#line 5563 "configure"
+#include "confdefs.h"
+
+        #ifdef __DECC
+          yes;
+        #endif
+        
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_prog_DECC=yes
+else
+  rm -rf conftest*
+  ac_cv_prog_DECC=no
+fi
+rm -f conftest*
+
+      
+fi
+
+echo "$ac_t""$ac_cv_prog_DECC" 1>&6
+  fi
+fi
+
+# Check whether --enable-debug or --disable-debug was given.
+if test "${enable_debug+set}" = set; then
+  enableval="$enable_debug"
+   if test "$enableval" = no; then
+      ac_enable_debug=no
+    else
+      ac_enable_debug=yes
+    fi
+  
+else
+   ac_enable_debug=no
+fi
+
+
+# Check whether --enable-optimized or --disable-optimized was given.
+if test "${enable_optimized+set}" = set; then
+  enableval="$enable_optimized"
+   if test "$enableval" = no; then
+      ac_enable_optimized=no
+    else
+      ac_enable_optimized=yes
+   fi
+  
+else
+   if test "$ac_enable_debug" = no; then
+      ac_enable_optimized=yes
+    else
+      ac_enable_optimized=no
+    fi
+  
+fi
+
+
+# Check whether --with-javaglue or --without-javaglue was given.
+if test "${with_javaglue+set}" = set; then
+  withval="$with_javaglue"
+   if test "$withval" = no; then
+      ac_with_javaglue=no
+    else
+      ac_with_javaglue=yes
+    fi
+  
+else
+   ac_with_javaglue=yes 
+fi
+
+
+if test "$ac_with_javaglue" = yes ; then
+  # Extract the first word of "java", so it can be a program name with args.
+set dummy java; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:5639: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_ac_cv_have_java'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$ac_cv_have_java"; then
+  ac_cv_prog_ac_cv_have_java="$ac_cv_have_java" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_ac_cv_have_java="yes"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_ac_cv_have_java" && ac_cv_prog_ac_cv_have_java="no"
+fi
+fi
+ac_cv_have_java="$ac_cv_prog_ac_cv_have_java"
+if test -n "$ac_cv_have_java"; then
+  echo "$ac_t""$ac_cv_have_java" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  if test "$ac_cv_have_java" = yes; then
+    # Extract the first word of "javac", so it can be a program name with args.
+set dummy javac; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:5670: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_ac_cv_have_javac'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$ac_cv_have_javac"; then
+  ac_cv_prog_ac_cv_have_javac="$ac_cv_have_javac" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_ac_cv_have_javac="yes"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_ac_cv_have_javac" && ac_cv_prog_ac_cv_have_javac="no"
+fi
+fi
+ac_cv_have_javac="$ac_cv_prog_ac_cv_have_javac"
+if test -n "$ac_cv_have_javac"; then
+  echo "$ac_t""$ac_cv_have_javac" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+    if test "$ac_cv_have_javac" = yes; then
+      echo $ac_n "checking for java native interface headers""... $ac_c" 1>&6
+echo "configure:5699: checking for java native interface headers" >&5
+if eval "test \"`echo '$''{'ac_cv_java_include'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+        cat > conftest.java << EOF
+public class conftest
+{
+  public static void main(String[] argv)
+  {
+     System.out.println(System.getProperty("java.home"));
+  }
+}
+EOF
+          java_home=`javac conftest.java; java -classpath . conftest`
+          case $target_os in
+          cygwin*)
+            java_home=`cygpath -u -p "$java_home"`
+            ;;
+          esac
+          if test -d "$ac_cv_java_include" ; then
+            ac_cv_java_headers=yes
+          else
+            ac_cv_java_include="$java_home"/../include
+            if test -d "$ac_cv_java_include" ; then
+              ac_cv_java_headers=yes
+            else
+              echo "configure: warning: java headers not found, disabling javaglue" 1>&2
+              ac_cv_java_headers=no
+              ac_with_javaglue=no
+            fi
+          fi
+          rm -fr conftest*
+        
+fi
+
+echo "$ac_t""$ac_cv_java_include" 1>&6
+    else
+      echo "configure: warning: javac not found, disabling javaglue" 1>&2
+      ac_cv_java_headers=no
+      ac_with_javaglue=no
+    fi
+  else
+    echo "configure: warning: java not found, disabling javaglue" 1>&2
+    ac_cv_java_headers=no
+    ac_with_javaglue=no
+  fi
+fi
+
+if test "$ac_with_javaglue" = yes ; then
+  cat >> confdefs.h <<\EOF
+#define JAVAGLUE 1
+EOF
+
+else
+  cat >> confdefs.h <<\EOF
+#define JAVAGLUE 0
+EOF
+
+fi
+
+# Check whether --enable-threads or --disable-threads was given.
+if test "${enable_threads+set}" = set; then
+  enableval="$enable_threads"
+   if test "$enableval" = no; then
+      ac_enable_threads=no
+    else
+      ac_enable_threads=yes
+    fi
+  
+else
+   ac_enable_threads=yes 
+fi
+
+
+# Check whether --enable-aio or --disable-aio was given.
+if test "${enable_aio+set}" = set; then
+  enableval="$enable_aio"
+   if test "$enableval" = no; then
+      ac_enable_aio=no
+    else
+      ac_enable_aio=yes
+    fi
+  
+else
+   ac_enable_aio=yes 
+fi
+
+
+# Check whether --with-mtmalloc or --without-mtmalloc was given.
+if test "${with_mtmalloc+set}" = set; then
+  withval="$with_mtmalloc"
+   if test "$withval" = no; then
+      ac_with_mtmalloc=no
+    else
+      ac_with_mtmalloc=yes
+    fi
+  
+else
+   ac_with_mtmalloc=no 
 fi
-rm -f conftest*
-done
 
-fi
 
-echo "$ac_t""$ac_cv_c_inline" 1>&6
-case "$ac_cv_c_inline" in
-  inline | yes) ;;
-  no) cat >> confdefs.h <<\EOF
-#define inline 
-EOF
- ;;
-  *)  cat >> confdefs.h <<EOF
-#define inline $ac_cv_c_inline
-EOF
- ;;
-esac
 
 
-if test "$ac_cv_prog_gcc" != yes; then
-  echo $ac_n "checking whether we are using Sun Workshop C""... $ac_c" 1>&6
-echo "configure:1015: checking whether we are using Sun Workshop C" >&5
-  cat > conftest.c << EOF
-#ifdef __SUNPRO_C
-  yes;
-#endif
-EOF
-  ac_try="$CC -E conftest.c"
-  if { (eval echo configure:__online__: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } | egrep yes > /dev/null 2>&1; then
-    ac_cv_prog_SUNPRO_CC=yes
-    # test version of sunpro cc here
-  else
-    ac_cv_prog_SUNPRO_CC=no
-  fi
-  echo "$ac_t""$ac_cv_prog_SUNPRO_CC" 1>&6
-fi
+
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1032: checking for working const" >&5
+echo "configure:5807: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1037 "configure"
+#line 5812 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1082,7 +5857,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:1086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1102,93 +5877,13 @@ EOF
 
 fi
 
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1107: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 1122 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 1139 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1145: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -nologo -E"
-  cat > conftest.$ac_ext <<EOF
-#line 1156 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1187: checking for ANSI C header files" >&5
+echo "configure:5882: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1192 "configure"
+#line 5887 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1196,7 +5891,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1213,7 +5908,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1217 "configure"
+#line 5912 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1231,7 +5926,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1235 "configure"
+#line 5930 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1252,7 +5947,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1256 "configure"
+#line 5951 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1263,7 +5958,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1287,12 +5982,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1291: checking for size_t" >&5
+echo "configure:5986: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1296 "configure"
+#line 5991 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1321,7 +6016,7 @@ fi
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:1325: checking for 8-bit clean memcmp" >&5
+echo "configure:6020: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1329,7 +6024,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 1333 "configure"
+#line 6028 "configure"
 #include "confdefs.h"
 
 main()
@@ -1339,7 +6034,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:1343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -1357,126 +6052,181 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1362: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+for ac_hdr in errno.h string.h ctype.h stdlib.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:6060: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1367 "configure"
+#line 6065 "configure"
 #include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+#include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1375: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6070: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
-  ac_cv_header_stdc=yes
+  eval "ac_cv_header_$ac_safe=yes"
 else
   echo "$ac_err" >&5
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ac_cv_header_stdc=no
+  eval "ac_cv_header_$ac_safe=no"
 fi
 rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
 
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 1392 "configure"
+for ac_hdr in unistd.h fcntl.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:6100: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 6105 "configure"
 #include "confdefs.h"
-#include <string.h>
+#include <$ac_hdr>
 EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:6110: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
 else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ac_cv_header_stdc=no
+  eval "ac_cv_header_$ac_safe=no"
 fi
 rm -f conftest*
-
 fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 1410 "configure"
+for ac_hdr in sys/types.h sys/stat.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:6140: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 6145 "configure"
 #include "confdefs.h"
-#include <stdlib.h>
+#include <$ac_hdr>
 EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:6150: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
 else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ac_cv_header_stdc=no
+  eval "ac_cv_header_$ac_safe=no"
 fi
 rm -f conftest*
-
 fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  :
+for ac_hdr in termio.h termios.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:6180: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1431 "configure"
+#line 6185 "configure"
 #include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
+#include <$ac_hdr>
 EOF
-if { (eval echo configure:1442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  :
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:6190: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
 else
+  echo "$ac_err" >&5
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
 fi
+rm -f conftest*
 fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
 EOF
-
+else
+  echo "$ac_t""no" 1>&6
 fi
+done
 
-
-for ac_hdr in errno.h string.h ctype.h stdlib.h
+for ac_hdr in sys/audioio.h sys/ioctl.h sys/soundcard.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1470: checking for $ac_hdr" >&5
+echo "configure:6220: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1475 "configure"
+#line 6225 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1480: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1502,21 +6252,22 @@ else
 fi
 done
 
-for ac_hdr in unistd.h fcntl.h limits.h
+
+for ac_hdr in time.h sys/time.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1510: checking for $ac_hdr" >&5
+echo "configure:6261: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1515 "configure"
+#line 6266 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1542,61 +6293,139 @@ else
 fi
 done
 
-for ac_hdr in time.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1550: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+if test "$ac_cv_header_sys_time_h" = yes; then
+  echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
+echo "configure:6299: checking for gettimeofday" >&5
+if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1555 "configure"
+#line 6304 "configure"
 #include "confdefs.h"
-#include <$ac_hdr>
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gettimeofday(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char gettimeofday();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
+choke me
+#else
+gettimeofday();
+#endif
+
+; return 0; }
 EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+if { (eval echo configure:6327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
+  eval "ac_cv_func_gettimeofday=yes"
 else
-  echo "$ac_err" >&5
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
+  eval "ac_cv_func_gettimeofday=no"
 fi
 rm -f conftest*
 fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+
+if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+  
+    cat >> confdefs.h <<\EOF
+#define HAVE_GETTIMEOFDAY 1
 EOF
+
+    
 else
   echo "$ac_t""no" 1>&6
 fi
-done
 
-for ac_hdr in sys/types.h sys/stat.h sys/time.h
+  echo $ac_n "checking for gethrtime""... $ac_c" 1>&6
+echo "configure:6352: checking for gethrtime" >&5
+if eval "test \"`echo '$''{'ac_cv_func_gethrtime'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 6357 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gethrtime(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char gethrtime();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gethrtime) || defined (__stub___gethrtime)
+choke me
+#else
+gethrtime();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:6380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_gethrtime=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_gethrtime=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'gethrtime`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  
+    cat >> confdefs.h <<\EOF
+#define HAVE_GETHRTIME 1
+EOF
+
+    
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
+case $target_os in
+  cygwin*)
+    ;;
+  *)
+    if test "$ac_enable_threads" = yes; then
+      cat >> confdefs.h <<\EOF
+#define ENABLE_THREADS 1
+EOF
+
+      for ac_hdr in thread.h pthread.h synch.h semaphore.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1590: checking for $ac_hdr" >&5
+echo "configure:6419: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1595 "configure"
+#line 6424 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1622,21 +6451,109 @@ else
 fi
 done
 
-for ac_hdr in thread.h pthread.h synch.h semaphore.h
+      if test "$ac_cv_header_thread_h" = yes; then
+        echo $ac_n "checking for -lthread""... $ac_c" 1>&6
+echo "configure:6457: checking for -lthread" >&5
+if eval "test \"`echo '$''{'ac_cv_lib_thread'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lthread  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 6464 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:6471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_lib_thread=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_thread=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+echo "$ac_t""$ac_cv_lib_thread" 1>&6
+if test "$ac_cv_lib_thread" = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_LIBTHREAD 1
+EOF
+
+  LIBS="-lthread $LIBS"
+
+fi
+
+      elif test  "$ac_cv_header_pthread_h" = yes; then
+        echo $ac_n "checking for -lpthread""... $ac_c" 1>&6
+echo "configure:6496: checking for -lpthread" >&5
+if eval "test \"`echo '$''{'ac_cv_lib_pthread'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lpthread  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 6503 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:6510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_lib_pthread=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_pthread=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+echo "$ac_t""$ac_cv_lib_pthread" 1>&6
+if test "$ac_cv_lib_pthread" = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_LIBPTHREAD 1
+EOF
+
+  LIBS="-lpthread $LIBS"
+
+fi
+
+      else
+        echo "configure: warning: Can't find any thread libraries" 1>&2
+        cat >> confdefs.h <<\EOF
+#define ENABLE_THREADS 0
+EOF
+
+      fi
+    fi
+
+    if test "$ac_enable_aio" = yes; then
+      for ac_hdr in aio.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1630: checking for $ac_hdr" >&5
+echo "configure:6547: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1635 "configure"
+#line 6552 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1662,61 +6579,199 @@ else
 fi
 done
 
-for ac_hdr in termio.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1670: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+      if test "$ac_cv_header_aio_h" = yes; then
+        
+echo $ac_n "checking for library containing aio_read""... $ac_c" 1>&6
+echo "configure:6586: checking for library containing aio_read" >&5
+if eval "test \"`echo '$''{'ac_cv_search_aio_read'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1675 "configure"
+  ac_func_search_save_LIBS="$LIBS"
+ac_cv_search_aio_read="no"
+cat > conftest.$ac_ext <<EOF
+#line 6593 "configure"
 #include "confdefs.h"
-#include <$ac_hdr>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char aio_read();
+
+int main() {
+aio_read()
+; return 0; }
 EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+if { (eval echo configure:6604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
+  ac_cv_search_aio_read="none required"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+test "$ac_cv_search_aio_read" = "no" && for i in c rt aio posix4; do
+LIBS="-l$i  $ac_func_search_save_LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 6615 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char aio_read();
+
+int main() {
+aio_read()
+; return 0; }
+EOF
+if { (eval echo configure:6626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_search_aio_read="-l$i"
+break
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+done
+LIBS="$ac_func_search_save_LIBS"
+fi
+
+echo "$ac_t""$ac_cv_search_aio_read" 1>&6
+if test "$ac_cv_search_aio_read" != "no"; then
+  test "$ac_cv_search_aio_read" = "none required" || LIBS="$ac_cv_search_aio_read $LIBS"
+   
+else :
+  
+          { echo "configure: error: no library containing aio routines found" 1>&2; exit 1; }
+       
+fi
+        echo $ac_n "checking whether aio works""... $ac_c" 1>&6
+echo "configure:6649: checking whether aio works" >&5
+if eval "test \"`echo '$''{'ac_cv_have_working_aio'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+          cat > conftest.aio << EOF
+The quick brown fox jumps over the lazy dog.
+EOF
+          if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 6661 "configure"
+#include "confdefs.h"
+
+#if HAVE_ERRNO_H
+# include <errno.h>
+#endif
+#if HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+#if HAVE_STRING_H
+# include <string.h>
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <aio.h>
+#include <stdio.h>
+
+main()
+{
+        struct aiocb    a;
+  const struct aiocb*   a_list = &a;
+        struct timespec a_timeout;
+
+  char buffer[32];
+
+  int i, rc, fd = open("conftest.aio", O_RDONLY);
+
+  if (fd < 0)
+    exit(1);
+
+  memset(&a, 0, sizeof(struct aiocb));
+
+  a.aio_fildes = fd;
+  a.aio_offset = 0;
+  a.aio_reqprio = 0;
+  a.aio_buf = buffer;
+  a.aio_nbytes = sizeof(buffer);
+  a.aio_sigevent.sigev_notify = SIGEV_NONE;
+
+  a_timeout.tv_sec = 1;
+  a_timeout.tv_nsec = 0;
+
+  if (aio_read(&a) < 0)
+    exit(1);
+
+  if (aio_suspend(&a_list, 1, &a_timeout) < 0)
+  {
+    #if HAVE_ERRNO_H
+    /* some linux systems don't await timeout and return instantly */
+    if (errno == EAGAIN)
+    {
+      nanosleep(&a_timeout, (struct timespec*) 0);
+      if (aio_suspend(&a_list, 1, &a_timeout) < 0)
+        exit(1);
+    }
+    else
+      exit(1);
+    #else
+    exit(1);
+    #endif
+  }
+
+  if (aio_error(&a) < 0)
+    exit(1);
+
+  if (aio_return(&a) < 0)
+    exit(1);
+
+  exit(0);
+}
+            
+EOF
+if { (eval echo configure:6734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_have_working_aio=yes
 else
-  echo "$ac_err" >&5
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
+  rm -fr conftest*
+  ac_cv_have_working_aio=no
 fi
-rm -f conftest*
+rm -fr conftest*
 fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
+
+          
 fi
-done
 
-for ac_hdr in sys/audioio.h sys/ioctl.h sys/soundcard.h
+echo "$ac_t""$ac_cv_have_working_aio" 1>&6
+        if test "$ac_cv_have_working_aio" = yes; then
+          cat >> confdefs.h <<\EOF
+#define ENABLE_AIO 1
+EOF
+
+        fi
+        rm -fr conftest*
+      fi
+    fi
+
+    if test "$ac_with_mtmalloc" = yes; then
+      for ac_hdr in mtmalloc.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1710: checking for $ac_hdr" >&5
+echo "configure:6765: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1715 "configure"
+#line 6770 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1720: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1742,198 +6797,321 @@ else
 fi
 done
 
-
-if test "$ac_cv_header_sys_time_h" = yes; then
-  echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
-echo "configure:1749: checking for gettimeofday" >&5
-if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then
+      echo $ac_n "checking for -lmtmalloc""... $ac_c" 1>&6
+echo "configure:6802: checking for -lmtmalloc" >&5
+if eval "test \"`echo '$''{'ac_cv_lib_mtmalloc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 1754 "configure"
+  ac_save_LIBS="$LIBS"
+LIBS="-lmtmalloc  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 6809 "configure"
 #include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gettimeofday(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettimeofday();
 
 int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
-choke me
-#else
-gettimeofday();
-#endif
-
+main()
 ; return 0; }
 EOF
-if { (eval echo configure:1777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_gettimeofday=yes"
+  ac_cv_lib_mtmalloc=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func_gettimeofday=no"
+  ac_cv_lib_mtmalloc=no
 fi
 rm -f conftest*
-fi
+LIBS="$ac_save_LIBS"
 
-if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  
-    cat >> confdefs.h <<\EOF
-#define HAVE_GETTIMEOFDAY 1
+fi
+echo "$ac_t""$ac_cv_lib_mtmalloc" 1>&6
+if test "$ac_cv_lib_mtmalloc" = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_LIBMTMALLOC 1
 EOF
 
-    
-else
-  echo "$ac_t""no" 1>&6
-fi
+  LIBS="-lmtmalloc $LIBS"
 
-  echo $ac_n "checking for gethrtime""... $ac_c" 1>&6
-echo "configure:1802: checking for gethrtime" >&5
-if eval "test \"`echo '$''{'ac_cv_func_gethrtime'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1807 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethrtime(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethrtime();
+fi
 
-int main() {
+    fi
+    ;;
+esac
 
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gethrtime) || defined (__stub___gethrtime)
-choke me
-#else
-gethrtime();
-#endif
+CFLAGS=""
+CPPFLAGS=""
+LDFLAGS=""
 
-; return 0; }
-EOF
-if { (eval echo configure:1830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_gethrtime=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_gethrtime=no"
-fi
-rm -f conftest*
+if test "$ac_enable_optimized" = yes; then
+  case $target_cpu in
+  alpha*)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_ALPHA"
+    ;;
+  arm*)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_ARM"
+    ;;
+  ia64)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_IA64"
+    ;;
+  i386)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I386"
+    ;;
+  i486)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I486"
+    ;;
+  i586)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I586"
+    ;;
+  i686)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I686"
+    ;;
+  ia64)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_IA64"
+    ;;
+  powerpc)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_POWERPC"
+    ;;
+  sparcv8)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV8"
+    ;;
+  sparcv8plus*)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV8PLUS"
+    CFLAGS="$CFLAGS -Wa,-xarch=v8plus"
+    ;;
+  sparcv9)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV9"
+    CFLAGS="$CFLAGS -Wa,-xarch=v9"
+    ;;
+  sparcv9a)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV9"
+    CFLAGS="$CFLAGS -Wa,-xarch=v9a"
+    ;;
+  sparcv9b)
+    CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV9"
+    CFLAGS="$CFLAGS -Wa,-xarch=v9b"
+    ;;
+  x86)
+  # QNX Neutrino doesn't list the exact cpu type
+    ;;
+  esac
 fi
 
-if eval "test \"`echo '$ac_cv_func_'gethrtime`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  
-    cat >> confdefs.h <<\EOF
-#define HAVE_GETHRTIME 1
-EOF
-
-    
+if test "$ac_enable_debug" = yes; then
+  CFLAGS="$CFLAGS -g"
+  if test "$ac_cv_prog_gcc" = yes; then
+    CFLAGS="$CFLAGS -Wall"
+  elif test "$ac_cv_prog_SUNPRO_CC" = yes; then
+    if test "$ac_enable_threads" = yes; then
+      CFLAGS="$CFLAGS -mt"
+    fi
+  fi
 else
-  echo "$ac_t""no" 1>&6
+  if test "$ac_cv_prog_gcc" = yes; then
+    CFLAGS="$CFLAGS -O3"
+    if test "$ac_enable_optimized" = yes; then
+      case $target_cpu in
+# This switch makes the mp32 routines slower by about 10%, so it's disabled
+#     alphaev6)
+#       CFLAGS="$CFLAGS -mcpu=ev6"
+#       ;;
+      arm*)
+        CFLAGS="$CFLAGS -fomit-frame-pointer"
+        ;;
+      i386)
+        CFLAGS="$CFLAGS -m386 -march=i386 -fomit-frame-pointer"
+        ;;
+      i486)
+        CFLAGS="$CFLAGS -m486 -march=i486 -fomit-frame-pointer"
+        ;;
+      i586)
+        CFLAGS="$CFLAGS -mpentium -march=pentium -fomit-frame-pointer"
+        ;;
+      i686)
+        CFLAGS="$CFLAGS -mpentiumpro -march=pentiumpro -fomit-frame-pointer"
+        ;;
+      sparcv8)
+        CFLAGS="$CFLAGS -mv8"
+        ;;
+# This actually performs WORSE on gcc up to 2.95.3!
+#     sparcv8plus*)
+#       CFLAGS="$CFLAGS -mv8plus"
+#       ;;
+      sparcv9*)
+        echo "configure: warning: gcc currently cannot build 64-bit objects" 1>&2
+        CFLAGS="$CFLAGS -mcpu=v9 -m64 -mptr64"
+        ;;
+      esac
+    fi
+  elif test "$ac_cv_prog_SUNPRO_CC" = yes; then
+    CFLAGS="$CFLAGS -fast"
+    if test "$ac_enable_threads" = yes; then
+      CFLAGS="$CFLAGS -mt"
+    fi
+    if test "$ac_enable_optimized" = yes; then
+      case $target_cpu in
+      sparcv8)
+        CFLAGS="$CFLAGS -xtarget=generic -xarch=v8"
+        ;;
+      sparcv8plus)
+        CFLAGS="$CFLAGS -xtarget=generic -xarch=v8plus"
+        ;;
+      sparcv8plusa)
+        CFLAGS="$CFLAGS -xtarget=generic -xarch=v8plusa"
+        ;;
+      sparcv8plusb)
+        CFLAGS="$CFLAGS -xtarget=generic -xarch=v8plusb"
+        ;;
+      sparcv9)
+        CFLAGS="-xarch=v9"
+        CFLAGS="$CFLAGS -xtarget=generic64 -xarch=v9"
+        LDFLAGS="$LDFLAGS -64"
+        ;;
+      sparcv9a)
+        CFLAGS="-xarch=v9"
+        CFLAGS="$CFLAGS -xtarget=generic64 -xarch=v9a"
+        LDFLAGS="$LDFLAGS -64"
+        ;;
+      sparcv9b)
+        CFLAGS="-xarch=v9"
+        CFLAGS="$CFLAGS -xtarget=generic64 -xarch=v9b"
+        LDFLAGS="$LDFLAGS -64"
+        ;;
+      esac
+    fi
+  elif test "$ac_cv_prog_DECC" = yes; then
+    CFLAGS="$CFLAGS -fast"
+    if test "$ac_enable_threads" = yes; then
+      CFLAGS="$CFLAGS -pthread"
+    fi
+  else
+    CFLAGS="$CFLAGS -O2"
+  fi
 fi
 
+case $target_os in
+  freebsd*)
+    if test "$ac_enable_threads" = yes; then
+      CFLAGS="$CFLAGS -pthread"
+      LDFLAGS="$LDFLAGS -pthread"
+    fi
+    ;;
+esac
+
+if test "$ac_with_javaglue" = yes ; then
+  CFLAGS="$CFLAGS -I$ac_cv_java_include"
+  case $target_os in
+  cygwin*)
+    CFLAGS="$CFLAGS -I$ac_cv_java_include"/win32
+    ;;
+  linux*)
+    CFLAGS="$CFLAGS -I$ac_cv_java_include"/linux
+    ;;
+  osf*)
+    CFLAGS="$CFLAGS -I$ac_cv_java_include"/osf
+    ;;
+  solaris*)
+    CFLAGS="$CFLAGS -I$ac_cv_java_include"/solaris
+    ;;
+  *)
+    echo "configure: warning: please add appropriate -I$ac_cv_java_include/<operating system> flag" 1>&2
+    ;;
+  esac
 fi
 
-if test "$ac_cv_header_thread_h" = yes; then
-  echo $ac_n "checking for -lthread""... $ac_c" 1>&6
-echo "configure:1858: checking for -lthread" >&5
-if eval "test \"`echo '$''{'ac_cv_lib_thread'+set}'`\" = set"; then
+echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+echo "configure:7024: checking whether byte ordering is bigendian" >&5
+if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-lthread  $LIBS"
+  ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 1865 "configure"
+#line 7031 "configure"
 #include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
+int main() {
 
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#endif
+; return 0; }
+EOF
+if { (eval echo configure:7042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+cat > conftest.$ac_ext <<EOF
+#line 7046 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
 int main() {
-main()
+
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif
 ; return 0; }
 EOF
-if { (eval echo configure:1872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7057: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
-  ac_cv_lib_thread=yes
+  ac_cv_c_bigendian=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ac_cv_lib_thread=no
+  ac_cv_c_bigendian=no
 fi
 rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-echo "$ac_t""$ac_cv_lib_thread" 1>&6
-if test "$ac_cv_lib_thread" = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_LIBTHREAD 1
-EOF
-
-  LIBS="-lthread $LIBS"
-
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
 fi
-
-elif test  "$ac_cv_header_pthread_h" = yes; then
-  echo $ac_n "checking for -lpthread""... $ac_c" 1>&6
-echo "configure:1897: checking for -lpthread" >&5
-if eval "test \"`echo '$''{'ac_cv_lib_pthread'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+rm -f conftest*
+if test $ac_cv_c_bigendian = unknown; then
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-lpthread  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1904 "configure"
+  cat > conftest.$ac_ext <<EOF
+#line 7077 "configure"
 #include "confdefs.h"
-
-int main() {
-main()
-; return 0; }
+main () {
+  /* Are we little or big endian?  From Harbison&Steele.  */
+  union
+  {
+    long l;
+    char c[sizeof (long)];
+  } u;
+  u.l = 1;
+  exit (u.c[sizeof (long) - 1] == 1);
+}
 EOF
-if { (eval echo configure:1911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_lib_pthread=yes
+if { (eval echo configure:7090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_c_bigendian=no
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_lib_pthread=no
+  rm -fr conftest*
+  ac_cv_c_bigendian=yes
+fi
+rm -fr conftest*
 fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
 
 fi
-echo "$ac_t""$ac_cv_lib_pthread" 1>&6
-if test "$ac_cv_lib_pthread" = yes; then
+fi
+
+echo "$ac_t""$ac_cv_c_bigendian" 1>&6
+if test $ac_cv_c_bigendian = yes; then
   cat >> confdefs.h <<\EOF
-#define HAVE_LIBPTHREAD 1
+#define WORDS_BIGENDIAN 1
 EOF
 
-  LIBS="-lpthread $LIBS"
-
 fi
 
-fi
 
 echo $ac_n "checking size of char""... $ac_c" 1>&6
-echo "configure:1937: checking size of char" >&5
+echo "configure:7115: checking size of char" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1941,18 +7119,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 1945 "configure"
+#line 7123 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(char));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:1956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_char=`cat conftestval`
 else
@@ -1972,7 +7150,7 @@ EOF
 
 
 echo $ac_n "checking size of unsigned char""... $ac_c" 1>&6
-echo "configure:1976: checking size of unsigned char" >&5
+echo "configure:7154: checking size of unsigned char" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_char'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1980,18 +7158,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 1984 "configure"
+#line 7162 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(unsigned char));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:1995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_unsigned_char=`cat conftestval`
 else
@@ -2010,8 +7188,25 @@ cat >> confdefs.h <<EOF
 EOF
 
 
+if test "$ac_cv_sizeof_char" -eq 1; then
+  cat >> confdefs.h <<\EOF
+#define INT8_TYPE char
+EOF
+
+else
+  { echo "configure: error: compiler has no 1 byte char" 1>&2; exit 1; }
+fi
+if test "$ac_cv_sizeof_unsigned_char" -eq 1; then
+  cat >> confdefs.h <<\EOF
+#define UINT8_TYPE unsigned char
+EOF
+
+else
+  { echo "configure: error: compiler has no 1 byte unsigned char" 1>&2; exit 1; }
+fi
+
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:2015: checking size of short" >&5
+echo "configure:7210: checking size of short" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2019,18 +7214,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2023 "configure"
+#line 7218 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(short));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -2050,7 +7245,7 @@ EOF
 
 
 echo $ac_n "checking size of unsigned short""... $ac_c" 1>&6
-echo "configure:2054: checking size of unsigned short" >&5
+echo "configure:7249: checking size of unsigned short" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_short'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2058,18 +7253,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2062 "configure"
+#line 7257 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(unsigned short));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_unsigned_short=`cat conftestval`
 else
@@ -2088,8 +7283,25 @@ cat >> confdefs.h <<EOF
 EOF
 
 
+if test "$ac_cv_sizeof_short" -eq 2; then
+  cat >> confdefs.h <<\EOF
+#define INT16_TYPE short
+EOF
+
+else
+  { echo "configure: error: compiler has no 2 byte short" 1>&2; exit 1; }
+fi
+if test "$ac_cv_sizeof_unsigned_short" -eq 2; then
+  cat >> confdefs.h <<\EOF
+#define UINT16_TYPE unsigned short
+EOF
+
+else
+  { echo "configure: error: compiler has no 2 byte unsigned short" 1>&2; exit 1; }
+fi
+
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:2093: checking size of int" >&5
+echo "configure:7305: checking size of int" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2097,18 +7309,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2101 "configure"
+#line 7313 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(int));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -2128,7 +7340,7 @@ EOF
 
 
 echo $ac_n "checking size of unsigned int""... $ac_c" 1>&6
-echo "configure:2132: checking size of unsigned int" >&5
+echo "configure:7344: checking size of unsigned int" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_int'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2136,18 +7348,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2140 "configure"
+#line 7352 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(unsigned int));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_unsigned_int=`cat conftestval`
 else
@@ -2167,7 +7379,7 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:2171: checking size of long" >&5
+echo "configure:7383: checking size of long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2175,18 +7387,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2179 "configure"
+#line 7391 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(long));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -2206,7 +7418,7 @@ EOF
 
 
 echo $ac_n "checking size of unsigned long""... $ac_c" 1>&6
-echo "configure:2210: checking size of unsigned long" >&5
+echo "configure:7422: checking size of unsigned long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2214,18 +7426,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2218 "configure"
+#line 7430 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(unsigned long));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_unsigned_long=`cat conftestval`
 else
@@ -2244,8 +7456,41 @@ cat >> confdefs.h <<EOF
 EOF
 
 
-echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:2249: checking size of long long" >&5
+if test "$ac_cv_sizeof_int" -eq 4; then
+  cat >> confdefs.h <<\EOF
+#define INT32_TYPE int
+EOF
+
+elif test "$ac_cv_sizeof_long" -eq 4; then
+  cat >> confdefs.h <<\EOF
+#define INT32_TYPE long
+EOF
+
+else
+  { echo "configure: error: compiler has no 4 byte integer" 1>&2; exit 1; }
+fi
+if test "$ac_cv_sizeof_unsigned_int" -eq 4; then
+  cat >> confdefs.h <<\EOF
+#define UINT32_TYPE unsigned int
+EOF
+
+elif test "$ac_cv_sizeof_unsigned_long" -eq 4; then
+  cat >> confdefs.h <<\EOF
+#define UINT32_TYPE unsigned long
+EOF
+
+else
+  { echo "configure: error: compiler has no 4 byte unsigned integer" 1>&2; exit 1; }
+fi
+
+if test "$ac_cv_sizeof_long" -eq 8; then
+  cat >> confdefs.h <<\EOF
+#define INT64_TYPE long
+EOF
+
+else
+  echo $ac_n "checking size of long long""... $ac_c" 1>&6
+echo "configure:7494: checking size of long long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2253,18 +7498,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2257 "configure"
+#line 7502 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(long long));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -2283,8 +7528,27 @@ cat >> confdefs.h <<EOF
 EOF
 
 
-echo $ac_n "checking size of unsigned long long""... $ac_c" 1>&6
-echo "configure:2288: checking size of unsigned long long" >&5
+  if test "$ac_cv_sizeof_long_long" -eq 8; then
+    cat >> confdefs.h <<\EOF
+#define HAVE_LONG_LONG 1
+EOF
+
+    cat >> confdefs.h <<\EOF
+#define INT64_TYPE long long
+EOF
+
+  else
+    { echo "configure: error: compiler has no 8 byte integer" 1>&2; exit 1; }
+  fi
+fi
+if test "$ac_cv_sizeof_unsigned_long" -eq 8; then
+  cat >> confdefs.h <<\EOF
+#define UINT64_TYPE unsigned long
+EOF
+
+else
+  echo $ac_n "checking size of unsigned long long""... $ac_c" 1>&6
+echo "configure:7552: checking size of unsigned long long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2292,18 +7556,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2296 "configure"
+#line 7560 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(unsigned long long));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_unsigned_long_long=`cat conftestval`
 else
@@ -2322,8 +7586,22 @@ cat >> confdefs.h <<EOF
 EOF
 
 
+  if test "$ac_cv_sizeof_unsigned_long_long" -eq 8; then
+    cat >> confdefs.h <<\EOF
+#define HAVE_UNSIGNED_LONG_LONG 1
+EOF
+
+    cat >> confdefs.h <<\EOF
+#define UINT64_TYPE unsigned long long
+EOF
+
+  else
+    { echo "configure: error: compiler has no 8 byte unsigned integer" 1>&2; exit 1; }
+  fi
+fi
+
 echo $ac_n "checking size of float""... $ac_c" 1>&6
-echo "configure:2327: checking size of float" >&5
+echo "configure:7605: checking size of float" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_float'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2331,18 +7609,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2335 "configure"
+#line 7613 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(float));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_float=`cat conftestval`
 else
@@ -2361,8 +7639,17 @@ cat >> confdefs.h <<EOF
 EOF
 
 
+if test "$ac_cv_sizeof_float" -eq 4; then
+  cat >> confdefs.h <<\EOF
+#define FLOAT4_TYPE float
+EOF
+
+else
+  { echo "configure: error: compiler has no 4 byte float" 1>&2; exit 1; }
+fi
+
 echo $ac_n "checking size of double""... $ac_c" 1>&6
-echo "configure:2366: checking size of double" >&5
+echo "configure:7653: checking size of double" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_double'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2370,18 +7657,18 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 2374 "configure"
+#line 7661 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(double));
-  exit(0);
+  return(0);
 }
 EOF
-if { (eval echo configure:2385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_double=`cat conftestval`
 else
@@ -2400,172 +7687,212 @@ cat >> confdefs.h <<EOF
 EOF
 
 
-
-echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:2406: checking whether byte ordering is bigendian" >&5
-if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_cv_c_bigendian=unknown
-# See if sys/param.h defines the BYTE_ORDER macro.
-cat > conftest.$ac_ext <<EOF
-#line 2413 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/param.h>
-int main() {
-
-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
-#endif
-; return 0; }
+if test "$ac_cv_sizeof_double" -eq 8; then
+  cat >> confdefs.h <<\EOF
+#define DOUBLE8_TYPE double
 EOF
-if { (eval echo configure:2424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-cat > conftest.$ac_ext <<EOF
-#line 2428 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/param.h>
-int main() {
 
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
-#endif
-; return 0; }
-EOF
-if { (eval echo configure:2439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_bigendian=yes
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_c_bigendian=no
+  { echo "configure: error: compiler has no 8 byte double" 1>&2; exit 1; }
 fi
-rm -f conftest*
+
+echo "checking for specific entropy devices" 1>&6
+echo "configure:7701: checking for specific entropy devices" >&5
+case $target_os in
+  cygwin*)
+    echo $ac_n "checking for wavein""... $ac_c" 1>&6
+echo "configure:7705: checking for wavein" >&5
+    echo "$ac_t""yes" 1>&6
+    echo $ac_n "checking for wincrypt""... $ac_c" 1>&6
+echo "configure:7708: checking for wincrypt" >&5
+    echo "$ac_t""yes" 1>&6
+    echo $ac_n "checking for console""... $ac_c" 1>&6
+echo "configure:7711: checking for console" >&5
+    echo "$ac_t""yes" 1>&6
+    ;;
+  linux*)
+    echo $ac_n "checking for /dev/dsp""... $ac_c" 1>&6
+echo "configure:7716: checking for /dev/dsp" >&5
+if eval "test \"`echo '$''{'ac_cv_have_dev_dsp'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
+  
+      if test -r /dev/dsp; then
+        ac_cv_have_dev_dsp=yes
+      else
+        ac_cv_have_dev_dsp=no
+      fi
+      
 fi
-rm -f conftest*
-if test $ac_cv_c_bigendian = unknown; then
-if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2459 "configure"
-#include "confdefs.h"
-main () {
-  /* Are we little or big endian?  From Harbison&Steele.  */
-  union
-  {
-    long l;
-    char c[sizeof (long)];
-  } u;
-  u.l = 1;
-  exit (u.c[sizeof (long) - 1] == 1);
-}
+
+echo "$ac_t""$ac_cv_have_dev_dsp" 1>&6
+    if test "$ac_cv_have_dev_dsp" = yes; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_DEV_DSP 1
 EOF
-if { (eval echo configure:2472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  ac_cv_c_bigendian=no
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_c_bigendian=yes
-fi
-rm -fr conftest*
-fi
 
-fi
+    fi
+    ;;
+  solaris*)
+    echo $ac_n "checking for /dev/audio""... $ac_c" 1>&6
+echo "configure:7739: checking for /dev/audio" >&5
+if eval "test \"`echo '$''{'ac_cv_have_dev_audio'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+      if test -r /dev/audio; then
+        ac_cv_have_dev_audio=yes
+      else
+        ac_cv_have_dev_audio=no
+      fi
+      
 fi
 
-echo "$ac_t""$ac_cv_c_bigendian" 1>&6
-if test $ac_cv_c_bigendian = yes; then
-  cat >> confdefs.h <<\EOF
-#define WORDS_BIGENDIAN 1
+echo "$ac_t""$ac_cv_have_dev_audio" 1>&6
+    if test "$ac_cv_have_dev_audio" = yes; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_DEV_AUDIO 1
 EOF
 
-fi
-
+    fi
+    ;;
+  *)
+    echo "configure: warning: no specific entropy devices present" 1>&2
+    ;;
+esac
 
-if test "$ac_use_debug_code" = yes; then
-  if test "$ac_cv_prog_gcc" = yes; then
-    CFLAGS="-g -shared"
-  elif test "$ac_cv_prog_SUNPRO_CC" = yes; then
-    CFLAGS="-g -mt -KPIC"
-  else
-    CFLAGS="-g -shared"
-  fi
+case $target_os in
+  cygwin*)
+    ;;
+  *)
+    echo "checking for generic entropy devices" 1>&6
+echo "configure:7770: checking for generic entropy devices" >&5
+    echo $ac_n "checking for /dev/random""... $ac_c" 1>&6
+echo "configure:7772: checking for /dev/random" >&5
+if eval "test \"`echo '$''{'ac_cv_have_dev_random'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test "$ac_cv_prog_gcc" = yes; then
-    CFLAGS="-O3 -shared"
-    case $target_cpu in
-    i386)
-      ;;
-    i486)
-      CFLAGS="$CFLAGS -m486 -Di486" ;;
-    i586)
-      CFLAGS="$CFLAGS -mpentium -Di586" ;;
-    i686)
-      CFLAGS="$CFLAGS -mpentiumpro -Di686" ;;
-    *)
-      echo "Don't know how to optimize for" $target_cpu ;;
-    esac
-  elif test "$ac_cv_prog_SUNPRO_CC" = yes; then
-    CFLAGS="-fast -mt -KPIC"
-    case $target_cpu in
-    sparcv8plus)
-      CFLAGS="$CFLAGS -Dsparcv8plus -xchip=ultra -xarch=v8plus" ;;
-    sparcv9)
-      CFLAGS="$CFLAGS -Dsparcv9 -xchip=ultra -xarch=v9" ;;
-    *)
-      echo "Using general optimization for" $target_cpu ;;
-    esac
-  else
-    CFLAGS="-O2 -shared"
-  fi
+  
+      if test -r /dev/random; then
+        ac_cv_have_dev_random=yes
+      else
+        ac_cv_have_dev_random=no
+      fi
+      
 fi
 
-echo $ac_n "checking for entropy device""... $ac_c" 1>&6
-echo "configure:2535: checking for entropy device" >&5
-case $host in
-  *-*-solaris*)
-    cat >> confdefs.h <<\EOF
-#define HAVE_DEV_AUDIO 1
+echo "$ac_t""$ac_cv_have_dev_random" 1>&6
+    if test "$ac_cv_have_dev_random" = yes; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_DEV_RANDOM 1
 EOF
 
-    cat >> confdefs.h <<\EOF
-#define HAVE_DEV_TTY 1
-EOF
+    fi
+    echo $ac_n "checking for /dev/urandom""... $ac_c" 1>&6
+echo "configure:7793: checking for /dev/urandom" >&5
+if eval "test \"`echo '$''{'ac_cv_have_dev_urandom'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+      if test -r /dev/urandom; then
+        ac_cv_have_dev_urandom=yes
+      else
+        ac_cv_have_dev_urandom=no
+      fi
+      
+fi
 
-    ac_cv_entropy_device="/dev/audio,/dev/tty"
-    ;;
-  *-*-linux*)
-    cat >> confdefs.h <<\EOF
-#define HAVE_DEV_DSP 1
+echo "$ac_t""$ac_cv_have_dev_urandom" 1>&6
+    if test "$ac_cv_have_dev_urandom" = yes; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_DEV_URANDOM 1
 EOF
 
-    cat >> confdefs.h <<\EOF
-#define HAVE_DEV_RANDOM 1
-EOF
+    fi
+    echo $ac_n "checking for /dev/tty""... $ac_c" 1>&6
+echo "configure:7814: checking for /dev/tty" >&5
+if eval "test \"`echo '$''{'ac_cv_have_dev_tty'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+      if test -r /dev/tty; then
+        ac_cv_have_dev_tty=yes
+      else
+        ac_cv_have_dev_tty=no
+      fi
+      
+fi
 
-    cat >> confdefs.h <<\EOF
+echo "$ac_t""$ac_cv_have_dev_tty" 1>&6
+    if test "$ac_cv_have_dev_tty" = yes; then
+      cat >> confdefs.h <<\EOF
 #define HAVE_DEV_TTY 1
 EOF
 
-    ac_cv_entropy_device="/dev/dsp,/dev/random,/dev/tty"
+    fi
     ;;
-  *)
-    { echo "configure: error: 
-There is no entropy device to initialize the random generator on host $host
-" 1>&2; exit 1; }
-  ;;
 esac
-echo "$ac_t""$ac_cv_entropy_device" 1>&6
+
+rm -f $srcdir/blowfishopt.c $srcdir/blowfishopt.S
+rm -f $srcdir/fips180opt.c $srcdir/fips180opt.S
+rm -f $srcdir/mp32opt.c $srcdir/mp32opt.S
+if test "$ac_enable_optimized" = yes; then
+  case $target_cpu in
+    arm*)
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.arm.S"
+EOF
+      ;;
+    i[34]86)
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.i386.S"
+EOF
+      ;;
+    i[56]86)
+      cat > $srcdir/blowfishopt.S << EOF
+#include "gas/blowfishopt.i586.S"
+EOF
+      cat > $srcdir/fips180opt.S << EOF
+#include "gas/fips180opt.i586.S"
+EOF
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.i386.S"
+EOF
+      ;;
+    ia64)
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.ia64.S"
+EOF
+      ;;
+    powerpc)
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.powerpc.S"
+EOF
+      ;;
+    sparcv8) 
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.sparcv8.S"
+EOF
+      ;;
+    sparcv8plus* | sparcv9*)
+      cat > $srcdir/mp32opt.S << EOF
+#include "gas/mp32opt.sparcv9.S"
+EOF
+      ;;
+  esac
+fi
+if test ! -r $srcdir/blowfishopt.S; then
+  cat > $srcdir/blowfishopt.c << EOF
+EOF
+fi
+if test ! -r $srcdir/fips180opt.S; then
+  cat > $srcdir/fips180opt.c << EOF
+EOF
+fi
+if test ! -r $srcdir/mp32opt.S; then
+  cat > $srcdir/mp32opt.c << EOF
+EOF
+fi
 
 trap '' 1 2 15
 cat > confcache <<\EOF
@@ -2668,7 +7995,7 @@ done
 ac_given_srcdir=$srcdir
 ac_given_INSTALL="$INSTALL"
 
-trap 'rm -fr `echo "Makefile gnu/config.gnu.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "Makefile docs/Makefile gas/Makefile masm/Makefile mwerks/Makefile tests/Makefile config.gnu.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -2715,13 +8042,33 @@ s%@build_alias@%$build_alias%g
 s%@build_cpu@%$build_cpu%g
 s%@build_vendor@%$build_vendor%g
 s%@build_os@%$build_os%g
-s%@PRODUCT@%$PRODUCT%g
-s%@VERSION@%$VERSION%g
-s%@CC@%$CC%g
 s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
 s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
 s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@PACKAGE@%$PACKAGE%g
+s%@VERSION@%$VERSION%g
+s%@ACLOCAL@%$ACLOCAL%g
+s%@AUTOCONF@%$AUTOCONF%g
+s%@AUTOMAKE@%$AUTOMAKE%g
+s%@AUTOHEADER@%$AUTOHEADER%g
+s%@MAKEINFO@%$MAKEINFO%g
+s%@SET_MAKE@%$SET_MAKE%g
+s%@CC@%$CC%g
 s%@CPP@%$CPP%g
+s%@LN_S@%$LN_S%g
+s%@OBJEXT@%$OBJEXT%g
+s%@EXEEXT@%$EXEEXT%g
+s%@ECHO@%$ECHO%g
+s%@RANLIB@%$RANLIB%g
+s%@STRIP@%$STRIP%g
+s%@DLLTOOL@%$DLLTOOL%g
+s%@AS@%$AS%g
+s%@OBJDUMP@%$OBJDUMP%g
+s%@LIBTOOL@%$LIBTOOL%g
+s%@LIBTOOL_DEPS@%$LIBTOOL_DEPS%g
+s%@ac_cv_have_java@%$ac_cv_have_java%g
+s%@ac_cv_have_javac@%$ac_cv_have_javac%g
+s%@LD@%$LD%g
 s%@LIBOBJS@%$LIBOBJS%g
 
 CEOF
@@ -2764,7 +8111,7 @@ EOF
 
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
+CONFIG_FILES=\${CONFIG_FILES-"Makefile docs/Makefile gas/Makefile masm/Makefile mwerks/Makefile tests/Makefile"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
@@ -2845,7 +8192,7 @@ ac_eD='%g'
 if test "${CONFIG_HEADERS+set}" != set; then
 EOF
 cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="gnu/config.gnu.h"
+  CONFIG_HEADERS="config.gnu.h"
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 fi
@@ -2933,8 +8280,10 @@ fi; done
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
+
 EOF
 cat >> $CONFIG_STATUS <<\EOF
+test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
 
 exit 0
 EOF
index a34144c..9442cb0 100644 (file)
 #if HAVE_STDLIB_H
 # include <stdlib.h>
 #endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
+#endif
 
 /**
- *
  * Good combinations will be:
  *
  * For 64-bit encryption:
- *     DHAES(Blowfish, MD5/HMAC, MD5)
- *     DHAES(Blowfish, SHA-1/HMAC, MD5)
- *  DHAES(Blowfish, SHA-256/HMAC, MD5)
+ *     DHAES(MD5, Blowfish, HMAC-MD5) <- best candidate
+ *     DHAES(MD5, Blowfish, HMAC-SHA-1)
+ *  DHAES(MD5, Blowfish, HMAC-SHA-256)
  *
- * For 128-bit encryption:
- *     DHAES(Blowfish, MD5/HMAC, SHA-256)
- *     DHAES(Blowfish, SHA-1/HMAC, SHA-256)
- *  DHAES(Blowfish, SHA-256/HMAC, SHA-256)
+ * For 96-bit encryption with 64-bit mac:
+ *  DHAES(SHA-1, Blowfish, HMAC-MD5, 96)
+ *  DHAES(SHA-1, Blowfish, HMAC-SHA-1, 96) <- best candidate
+ *  DHAES(SHA-1, Blowfish, HMAC-SHA-256, 96) <- best candidate
  *
+ * For 128-bit encryption:
+ *     DHAES(SHA-256, Blowfish, HMAC-MD5)
+ *     DHAES(SHA-256, Blowfish, HMAC-SHA-1)
+ *  DHAES(SHA-256, Blowfish, HMAC-SHA-256)
  */
 
-int dhaes_usable(const blockCipher* cipher, const keyedHashFunction* mac, const hashFunction* hash)
+int dhaes_pUsable(const dhaes_pParameters* params)
 {
-       int keybits = hash->digestsize << 4;
+       int keybits = (params->hash->digestsize << 3); /* digestsize in bytes times 8 bits */
+       int cipherkeybits = params->cipherkeybits;
+       int mackeybits = params->mackeybits;
 
        /* test if keybits is a multiple of 32 */
        if ((keybits & 31) != 0)
                return 0;
 
+       /* test if cipherkeybits + mackeybits < keybits */
+       if ((cipherkeybits + mackeybits) > keybits)
+               return 0;
+
+       if (mackeybits == 0)
+       {
+               if (cipherkeybits == 0)
+                       cipherkeybits = mackeybits = (keybits >> 1);
+               else
+                       mackeybits = keybits - cipherkeybits;
+       }
+
        /* test if keybits length is appropriate for cipher */
-       if ((keybits < cipher->keybitsmin) || (keybits > cipher->keybitsmax))
+       if ((cipherkeybits < params->cipher->keybitsmin) ||
+                       (cipherkeybits > params->cipher->keybitsmax))
                return 0;
 
-       if (((keybits - cipher->keybitsmin) % cipher->keybitsinc) != 0)
+       if (((cipherkeybits - params->cipher->keybitsmin) % params->cipher->keybitsinc) != 0)
                return 0;
 
        /* test if keybits length is appropriate for mac */
-       if ((keybits < mac->keybitsmin) || (keybits > mac->keybitsmax))
+       if ((mackeybits < params->mac->keybitsmin) ||
+                       (params->mackeybits > params->mac->keybitsmax))
                return 0;
 
-       if (((keybits - mac->keybitsmin) % mac->keybitsinc) != 0)
+       if (((mackeybits - params->mac->keybitsmin) % params->mac->keybitsinc) != 0)
                return 0;
 
        return 1;
 }
 
-int dhaes_pInit(dhaes_p* p, const dldp_p* param, const blockCipher* cipher, const keyedHashFunction* mac, const hashFunction* hash, const randomGenerator* rng)
+int dhaes_pContextInit(dhaes_pContext* ctxt, const dhaes_pParameters* params)
 {
-       if (dhaes_usable(cipher, mac, hash))
-       {
-               dldp_pInit(&p->param);
-               dldp_pCopy(&p->param, param);
+       if (ctxt == (dhaes_pContext*) 0)
+               return -1;
+
+       if (params == (dhaes_pParameters*) 0)
+               return -1;
 
-               if (blockCipherContextInit(&p->cipher, cipher))
-                       return -1;
+       if (params->param == (dldp_p*) 0)
+               return -1;
 
-               if (keyedHashFunctionContextInit(&p->mac, mac))
-                       return -1;
+       if (params->hash == (hashFunction*) 0)
+               return -1;
 
-               if (hashFunctionContextInit(&p->hash, hash))
-                       return -1;
+       if (params->cipher == (blockCipher*) 0)
+               return -1;
 
-               if (randomGeneratorContextInit(&p->rng, rng))
-                       return -1;
+       if (params->mac == (keyedHashFunction*) 0)
+               return -1;
 
-               return 0;
-       }
-       return -1;
+       if (!dhaes_pUsable(params))
+               return -1;
+
+       (void) dldp_pInit(&ctxt->param);
+       (void) dldp_pCopy(&ctxt->param, params->param);
+
+       mp32nzero(&ctxt->pub);
+       mp32nzero(&ctxt->pri);
+
+       if (hashFunctionContextInit(&ctxt->hash, params->hash))
+               return -1;
+
+       if (blockCipherContextInit(&ctxt->cipher, params->cipher))
+               return -1;
+
+       if (keyedHashFunctionContextInit(&ctxt->mac, params->mac))
+               return -1;
+
+       ctxt->cipherkeybits = params->cipherkeybits;
+       ctxt->mackeybits = params->mackeybits;
+
+       return 0;
 }
 
-int dhaes_pFree(dhaes_p* p)
+int dhaes_pContextInitDecrypt(dhaes_pContext* ctxt, const dhaes_pParameters* params, const mp32number* pri)
 {
-       dldp_pFree(&p->param);
+       if (dhaes_pContextInit(ctxt, params))
+               return -1;
+
+       mp32ncopy(&ctxt->pri, pri);
 
-       if (blockCipherContextFree(&p->cipher))
+       return 0;
+}
+
+int dhaes_pContextInitEncrypt(dhaes_pContext* ctxt, const dhaes_pParameters* params, const mp32number* pub)
+{
+       if (dhaes_pContextInit(ctxt, params))
                return -1;
 
-       if (hashFunctionContextFree(&p->hash))
+       mp32ncopy(&ctxt->pub, pub);
+
+       return 0;
+}
+
+int dhaes_pContextFree(dhaes_pContext* ctxt)
+{
+       (void) dldp_pFree(&ctxt->param);
+
+       mp32nfree(&ctxt->pub);
+       mp32nfree(&ctxt->pri);
+
+       if (hashFunctionContextFree(&ctxt->hash))
                return -1;
 
-       if (keyedHashFunctionContextFree(&p->mac))
+       if (blockCipherContextFree(&ctxt->cipher))
                return -1;
 
-       if (randomGeneratorContextFree(&p->rng))
+       if (keyedHashFunctionContextFree(&ctxt->mac))
                return -1;
 
        return 0;
 }
 
-static int dhaes_pSetup(dhaes_p* p, const mp32number* private, const mp32number* public, const mp32number* message, cipherOperation op)
+static int dhaes_pContextSetup(dhaes_pContext* ctxt, const mp32number* private, const mp32number* public, const mp32number* message, cipherOperation op)
 {
        register int rc;
 
@@ -133,14 +195,15 @@ static int dhaes_pSetup(dhaes_p* p, const mp32number* private, const mp32number*
 
        /* compute the shared secret, Diffie-Hellman style */
        mp32nzero(&secret);
-       dlsvdp_pDHSecret(&p->param, private, public, &secret);
+       if (dlsvdp_pDHSecret(&ctxt->param, private, public, &secret))
+               return -1;
 
        /* compute the hash of the message (ephemeral public) key and the shared secret */
        mp32nzero(&digest);
-       hashFunctionContextReset     (&p->hash);
-       hashFunctionContextUpdateMP32(&p->hash, message);
-       hashFunctionContextUpdateMP32(&p->hash, &secret);
-       hashFunctionContextDigest    (&p->hash, &digest);
+       (void) hashFunctionContextReset     (&ctxt->hash);
+       (void) hashFunctionContextUpdateMP32(&ctxt->hash, message);
+       (void) hashFunctionContextUpdateMP32(&ctxt->hash, &secret);
+       (void) hashFunctionContextDigest    (&ctxt->hash, &digest);
 
        /* we don't need the secret anymore */
        mp32nwipe(&secret);
@@ -156,16 +219,16 @@ static int dhaes_pSetup(dhaes_p* p, const mp32number* private, const mp32number*
         * and pad with zero bits or truncate if necessary to meet algorithm key
         * size requirements.
         */
-       
-       if ((digest.size & 1) == 0)
-       {       /* digest contains an even number of 32 bit words */
-               int keysize = digest.size >> 1;
-               int keybits = digest.size << 4;
 
-               if ((rc = keyedHashFunctionContextSetup(&p->mac, digest.data, keybits)))
+       if (digest.size > 0)
+       {
+               uint32* mackey = digest.data;
+               uint32* cipherkey = digest.data + ((ctxt->mackeybits + 31) >> 5);
+
+               if ((rc = keyedHashFunctionContextSetup(&ctxt->mac, mackey, ctxt->mackeybits)))
                        goto setup_end;
 
-               if ((rc = blockCipherContextSetup(&p->cipher, digest.data+keysize, keybits, op)))
+               if ((rc = blockCipherContextSetup(&ctxt->cipher, cipherkey, ctxt->cipherkeybits, op)))
                        goto setup_end;
 
                rc = 0;
@@ -180,7 +243,7 @@ setup_end:
        return rc;
 }
 
-memchunk* dhaes_pEncrypt(dhaes_p* p, const mp32number* publicKey, mp32number* ephemeralPublicKey, mp32number* mac, const memchunk* cleartext)
+memchunk* dhaes_pContextEncrypt(dhaes_pContext* ctxt, mp32number* ephemeralPublicKey, mp32number* mac, const memchunk* cleartext, randomGeneratorContext* rng)
 {
        memchunk* ciphertext = (memchunk*) 0;
        memchunk* paddedtext;
@@ -189,17 +252,19 @@ memchunk* dhaes_pEncrypt(dhaes_p* p, const mp32number* publicKey, mp32number* ep
 
        /* make the ephemeral keypair */
        mp32nzero(&ephemeralPrivateKey);
-       dldp_pPair(&p->param, &p->rng, &ephemeralPrivateKey, ephemeralPublicKey);
+       (void) dldp_pPair(&ctxt->param, rng, &ephemeralPrivateKey, ephemeralPublicKey);
 
        /* Setup the key and initialize the mac and the blockcipher */
-       if (dhaes_pSetup(p, &ephemeralPrivateKey, publicKey, ephemeralPublicKey, ENCRYPT))
+       if (dhaes_pContextSetup(ctxt, &ephemeralPrivateKey, &ctxt->pub, ephemeralPublicKey, ENCRYPT))
                goto encrypt_end;
 
        /* add pkcs-5 padding */
-       paddedtext = pkcs5Pad(p->cipher.ciph->blocksize, cleartext);
+       paddedtext = pkcs5PadCopy(ctxt->cipher.algo->blocksize, cleartext);
+       if (paddedtext == (memchunk*) 0)
+               goto encrypt_end;
 
        /* encrypt the memchunk in CBC mode */
-       if (blockEncrypt(p->cipher.ciph, p->cipher.param, CBC, paddedtext->size / p->cipher.ciph->blocksize, (uint32*) paddedtext->data, (const uint32*) paddedtext->data))
+       if (blockEncrypt(ctxt->cipher.algo, ctxt->cipher.param, CBC, paddedtext->size / ctxt->cipher.algo->blocksize, (uint32*) paddedtext->data, (const uint32*) paddedtext->data))
        {
                free(paddedtext->data);
                free(paddedtext);
@@ -207,14 +272,14 @@ memchunk* dhaes_pEncrypt(dhaes_p* p, const mp32number* publicKey, mp32number* ep
        }
 
        /* Compute the mac */
-       if (keyedHashFunctionContextUpdateMC(&p->mac, paddedtext))
+       if (keyedHashFunctionContextUpdateMC(&ctxt->mac, paddedtext))
        {
                free(paddedtext->data);
                free(paddedtext);
                goto encrypt_end;
        }
 
-       if (keyedHashFunctionContextDigest(&p->mac, mac))
+       if (keyedHashFunctionContextDigest(&ctxt->mac, mac))
        {
                free(paddedtext->data);
                free(paddedtext);
@@ -230,20 +295,20 @@ encrypt_end:
        return ciphertext;
 }
 
-memchunk* dhaes_pDecrypt(dhaes_p* p, const mp32number* privateKey, const mp32number* ephemeralPublicKey, const mp32number* mac, const memchunk* ciphertext)
+memchunk* dhaes_pContextDecrypt(dhaes_pContext* ctxt, const mp32number* ephemeralPublicKey, const mp32number* mac, const memchunk* ciphertext)
 {
        memchunk* cleartext = (memchunk*) 0;
        memchunk* paddedtext;
 
        /* Setup the key and initialize the mac and the blockcipher */
-       if (dhaes_pSetup(p, privateKey, ephemeralPublicKey, ephemeralPublicKey, DECRYPT))
+       if (dhaes_pContextSetup(ctxt, &ctxt->pri, ephemeralPublicKey, ephemeralPublicKey, DECRYPT))
                goto decrypt_end;
 
        /* Verify the mac */
-       if (keyedHashFunctionContextUpdateMC(&p->mac, ciphertext))
+       if (keyedHashFunctionContextUpdateMC(&ctxt->mac, ciphertext))
                goto decrypt_end;
 
-       if (keyedHashFunctionContextDigestMatch(&p->mac, mac) == 0)
+       if (keyedHashFunctionContextDigestMatch(&ctxt->mac, mac) == 0)
                goto decrypt_end;
 
        /* decrypt the memchunk with CBC mode */
@@ -261,7 +326,7 @@ memchunk* dhaes_pDecrypt(dhaes_p* p, const mp32number* privateKey, const mp32num
                goto decrypt_end;
        }
 
-       if (blockDecrypt(p->cipher.ciph, p->cipher.param, CBC, paddedtext->size / p->cipher.ciph->blocksize, (uint32*) paddedtext->data, (const uint32*) ciphertext->data))
+       if (blockDecrypt(ctxt->cipher.algo, ctxt->cipher.param, CBC, paddedtext->size / ctxt->cipher.algo->blocksize, (uint32*) paddedtext->data, (const uint32*) ciphertext->data))
        {
                free(paddedtext->data);
                free(paddedtext);
@@ -269,15 +334,14 @@ memchunk* dhaes_pDecrypt(dhaes_p* p, const mp32number* privateKey, const mp32num
        }
 
        /* remove pkcs-5 padding */
-       if (pkcs5UnpadInline(p->cipher.ciph->blocksize, paddedtext))
+       cleartext = pkcs5Unpad(ctxt->cipher.algo->blocksize, paddedtext);
+
+       if (cleartext == (memchunk*) 0)
        {
                free(paddedtext->data);
                free(paddedtext);
-               goto decrypt_end;
        }
 
-       cleartext = paddedtext;
-
 decrypt_end:
 
        return cleartext;
index 21bb8f3..96439a9 100644 (file)
 
 typedef struct
 {
-       dldp_p param;
-       hashFunctionContext hash;
-       blockCipherContext cipher;
-       keyedHashFunctionContext mac;
-       randomGeneratorContext rng;
-} dhaes_p;
+       const dldp_p*                           param;
+       const hashFunction*                     hash;
+       const blockCipher*                      cipher;
+       const keyedHashFunction*        mac;
+       int                                                     cipherkeybits;
+       int                                                     mackeybits;
+} dhaes_pParameters;
+
+typedef struct
+{
+       dldp_p                                          param;
+       mp32number                                      pub;
+       mp32number                                      pri;
+       hashFunctionContext                     hash;
+       blockCipherContext                      cipher;
+       keyedHashFunctionContext        mac;
+       int                                                     cipherkeybits;
+       int                                                     mackeybits;
+} dhaes_pContext;
 
 BEEDLLAPI
-int dhaes_usable(const blockCipher*, const keyedHashFunction*, const hashFunction*);
+int dhaes_pUsable(const dhaes_pParameters*)
+       /*@*/;
 
 BEEDLLAPI
-int dhaes_pInit(dhaes_p*, const dldp_p*, const blockCipher*, const keyedHashFunction*, const hashFunction*, const randomGenerator*);
+int dhaes_pContextInit       (dhaes_pContext* ctxt, const dhaes_pParameters*)
+       /*@modifies ctxt */;
 BEEDLLAPI
-int dhaes_pFree(dhaes_p*);
-
+int dhaes_pContextInitDecrypt(dhaes_pContext* ctxt, const dhaes_pParameters*, const mp32number*)
+       /*@modifies ctxt */;
 BEEDLLAPI
-memchunk* dhaes_pEncrypt(dhaes_p*, const mp32number*,       mp32number*,       mp32number*, const memchunk*);
+int dhaes_pContextInitEncrypt(dhaes_pContext* ctxt, const dhaes_pParameters*, const mp32number*)
+       /*@modifies ctxt */;
 BEEDLLAPI
-memchunk* dhaes_pDecrypt(dhaes_p*, const mp32number*, const mp32number*, const mp32number*, const memchunk*);
+int dhaes_pContextFree       (/*@only@*/ dhaes_pContext* ctxt)
+       /*@modifies ctxt */;
+
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk* dhaes_pContextEncrypt(dhaes_pContext* ctxt,       mp32number* ephemeralPublicKey,       mp32number*, const memchunk*, randomGeneratorContext*)
+       /*@modifies ctxt, ephemeralPublicKey */;
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk* dhaes_pContextDecrypt(dhaes_pContext* ctxt, const mp32number*, const mp32number*, const memchunk*)
+       /*@modifies ctxt */;
 
 #endif
index 2eb47be..5576c87 100644 (file)
@@ -5,7 +5,7 @@
  *
  * <conformance statement for IEEE P1363 needed here>
  *
- * Copyright (c) 2000 Virtual Unlimited B.V.
+ * Copyright (c) 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #include "mp32.h"
 #include "mp32prime.h"
 
-#include <stdio.h>
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#if HAVE_MALLOC
+# include <malloc.h>
+#endif
 
-void dldp_pPrivate(const dldp_p* dp, randomGeneratorContext* rc, mp32number* x)
+static int dldp_pgoqGenerator_w(dldp_p*, randomGeneratorContext*, uint32*);
+static int dldp_pgonGenerator_w(dldp_p*, randomGeneratorContext*, uint32*);
+
+int dldp_pPrivate(const dldp_p* dp, randomGeneratorContext* rgc, mp32number* x)
 {
        /*
         * Note: the private key is randomly selected to be smaller than q
@@ -41,30 +49,32 @@ void dldp_pPrivate(const dldp_p* dp, randomGeneratorContext* rc, mp32number* x)
         * This is the variant of Diffie-Hellman as described in IEEE P1363
         */
 
-       mp32brnd(&dp->q, rc);
-       mp32nset(x, dp->q.size, dp->q.data);
+       mp32bnrnd(&dp->q, rgc, x);
+
+       return 0;
 }
 
-void dldp_pPublic(const dldp_p* dp, const mp32number* x, mp32number* y)
+int dldp_pPublic(const dldp_p* dp, const mp32number* x, mp32number* y)
 {
        /*
         * Public key y is computed as g^x mod p
         */
 
-       mp32bpowmod(&dp->p, dp->g.size, dp->g.data, x->size, x->data);
-       mp32nset(y, dp->p.size, dp->p.data);
+       mp32bnpowmod(&dp->p, &dp->g, x, y);
+
+       return 0;
 }
 
-void dldp_pPair(const dldp_p* dp, randomGeneratorContext* rc, mp32number* x, mp32number* y)
+int dldp_pPair(const dldp_p* dp, randomGeneratorContext* rgc, mp32number* x, mp32number* y)
 {
        /*
         * Combination of the two previous functions
         */
 
-       mp32brnd(&dp->q, rc);
-       mp32nset(x, dp->q.size, dp->q.data);
-       mp32bpowmod(&dp->p, dp->g.size, dp->g.data, x->size, x->data);
-       mp32nset(y, dp->p.size, dp->p.data);
+       mp32bnrnd(&dp->q, rgc, x);
+       mp32bnpowmod(&dp->p, &dp->g, x, y);
+
+       return 0;
 }
 
 int dldp_pEqual(const dldp_p* a, const dldp_p* b)
@@ -74,250 +84,358 @@ int dldp_pEqual(const dldp_p* a, const dldp_p* b)
                mp32eqx(a->g.size, a->g.data, b->g.size, b->g.data);
 }
 
-int dldp_pValidate(const dldp_p* dp, randomGeneratorContext* rc)
+/**
+ * needs to make workspace of 8*size+2
+ */
+int dldp_pValidate(const dldp_p* dp, randomGeneratorContext* rgc)
 {
-       /* check that p > 2 and p odd, then run miller-rabin test with t 50 */
-       if (mp32even(dp->p.size, dp->p.modl))
-               return 0;
+       register uint32  size = dp->p.size;
+       register uint32* temp = (uint32*) malloc((8*size+2) * sizeof(uint32));
 
-       if (mp32pmilrab(&dp->p, rc, 50) == 0)
-               return 0;
+       if (temp)
+       {
+               /* check that p > 2 and p odd, then run miller-rabin test with t 50 */
+               if (mp32even(dp->p.size, dp->p.modl))
+               {
+                       free(temp);
+                       return 0;
+               }
 
-       /* check that q > 2 and q odd, then run miller-rabin test with t 50 */
-       if (mp32even(dp->q.size, dp->q.modl))
-               return 0;
+               if (mp32pmilrab_w(&dp->p, rgc, 50, temp) == 0)
+               {
+                       free(temp);
+                       return 0;
+               }
 
-       if (mp32pmilrab(&dp->q, rc, 50) == 0)
-               return 0;
+               /* check that q > 2 and q odd, then run miller-rabin test with t 50 */
+               if (mp32even(dp->q.size, dp->q.modl))
+               {
+                       free(temp);
+                       return 0;
+               }
 
-       /* check that 1 < g < p */
-       if (mp32leone(dp->g.size, dp->g.data))
-               return 0;
+               if (mp32pmilrab_w(&dp->q, rgc, 50, temp) == 0)
+               {
+                       free(temp);
+                       return 0;
+               }
 
-       if (mp32gex(dp->g.size, dp->g.data, dp->p.size, dp->p.modl))
-               return 0;
+               free(temp);
 
-       return 1;
+               /* check that 1 < g < p */
+               if (mp32leone(dp->g.size, dp->g.data))
+                       return 0;
+
+               if (mp32gex(dp->g.size, dp->g.data, dp->p.size, dp->p.modl))
+                       return 0;
+
+               return 1;
+       }
+       return -1;
 }
 
-void dldp_pInit(dldp_p* dp)
+int dldp_pInit(dldp_p* dp)
 {
        mp32bzero(&dp->p);
        mp32bzero(&dp->q);
        mp32nzero(&dp->g);
        mp32nzero(&dp->r);
        mp32bzero(&dp->n);
+
+       return 0;
 }
 
-void dldp_pFree(dldp_p* dp)
+int dldp_pFree(dldp_p* dp)
 {
        mp32bfree(&dp->p);
        mp32bfree(&dp->q);
        mp32nfree(&dp->g);
        mp32nfree(&dp->r);
        mp32bfree(&dp->n);
+
+       return 0;
 }
 
-void dldp_pCopy(dldp_p* dst, const dldp_p* src)
+int dldp_pCopy(dldp_p* dst, const dldp_p* src)
 {
-       mp32bset(&dst->p, src->p.size, src->p.modl);
-       mp32bset(&dst->q, src->q.size, src->q.modl);
-       mp32nset(&dst->r, src->r.size, src->r.data);
-       mp32nset(&dst->g, src->g.size, src->g.data);
-       mp32bset(&dst->n, src->n.size, src->n.modl);
+       mp32bcopy(&dst->p, &src->p);
+       mp32bcopy(&dst->q, &src->q);
+       mp32ncopy(&dst->r, &src->r);
+       mp32ncopy(&dst->g, &src->g);
+       mp32bcopy(&dst->n, &src->n);
+
+       return 0;
 }
 
-void dldp_pgoqMake(dldp_p* dp, randomGeneratorContext* rc, uint32 psize, uint32 qsize, int cofactor)
+int dldp_pgoqMake(dldp_p* dp, randomGeneratorContext* rgc, uint32 psize, uint32 qsize, int cofactor)
 {
        /*
         * Generate parameters as described by IEEE P1363, A.16.1
         */
 
-       /* first generate q */
-       mp32prnd(&dp->q, rc, qsize, mp32ptrials(qsize << 5), (const mp32number*) 0);
+       register uint32* temp = (uint32*) malloc((8*psize+2) * sizeof(uint32));
 
-       /* generate p with the appropriate congruences */
-       mp32prndconone(&dp->p, rc, psize, mp32ptrials(psize << 5), &dp->q, (const mp32number*) 0, &dp->r, cofactor);
+       if (temp)
+       {
+               /* first generate q */
+               mp32prnd_w(&dp->q, rgc, qsize, mp32ptrials(qsize << 5), (const mp32number*) 0, temp);
 
-       /* clear n */
-       mp32bfree(&dp->n);
+               /* generate p with the appropriate congruences */
+               mp32prndconone_w(&dp->p, rgc, psize, mp32ptrials(psize << 5), &dp->q, (const mp32number*) 0, &dp->r, cofactor, temp);
+
+               /* clear n */
+               mp32bzero(&dp->n);
+
+               /* clear g */
+               mp32nzero(&dp->g);
+
+               (void) dldp_pgoqGenerator_w(dp, rgc, temp);
+
+               free(temp);
 
-       dldp_pgoqGenerator(dp, rc);
+               return 0;
+       }
+       return -1;
 }
 
-void dldp_pgoqMakeSafe(dldp_p* dp, randomGeneratorContext* rc, uint32 psize)
+int dldp_pgoqMakeSafe(dldp_p* dp, randomGeneratorContext* rgc, uint32 psize)
 {
        /*
-        * Generate parameters with a safe prime; p = 2q+1 i.e. r=1
+        * Generate parameters with a safe prime; p = 2q+1 i.e. r=2
         *
         */
 
-       /* generate p */
-       mp32prndsafe(&dp->p, rc, psize, mp32ptrials(psize << 5));
+       register uint32* temp = (uint32*) malloc((8*psize+2) * sizeof(uint32));
 
-       /* set q */
-       mp32copy(dp->p.size, dp->p.data, dp->p.modl);
-       mp32divtwo(dp->p.size, dp->p.data);
+       if (temp)
+       {
+               /* generate p */
+               mp32prndsafe_w(&dp->p, rgc, psize, mp32ptrials(psize << 5), temp);
 
-       mp32bset(&dp->q, dp->p.size, dp->p.data);
+               /* set q */
+               mp32copy(psize, temp, dp->p.modl);
+               mp32divtwo(psize, temp);
+               mp32bset(&dp->q, psize, temp);
 
-       /* set r = 1 */
-       mp32nsetw(&dp->r, 1);
+               /* set r = 2 */
+               mp32nsetw(&dp->r, 2);
 
-       /* clear n */
-       mp32bfree(&dp->n);
+               /* clear n */
+               mp32bzero(&dp->n);
+
+               (void) dldp_pgoqGenerator_w(dp, rgc, temp);
 
-       dldp_pgoqGenerator(dp, rc);
+               free(temp);
+
+               return 0;
+       }
+       return -1;
 }
 
-void dldp_pgoqGenerator(dldp_p* dp, randomGeneratorContext* rc)
+int dldp_pgoqGenerator_w(dldp_p* dp, randomGeneratorContext* rgc, uint32* wksp)
 {
        /*
         * Randomly determine a generator over the subgroup with order q
         */
 
-       register uint32  psize = dp->p.size;
-       register uint32* hdata = dp->p.data+psize*4+2;
+       register uint32  size = dp->p.size;
+
+       mp32nfree(&dp->g);
+       mp32nsize(&dp->g, size);
 
        while (1)
        {
-               mp32brndres(&dp->p, hdata, rc);
+               /* get a random value h (stored into g) */
+               mp32brnd_w(&dp->p, rgc, dp->g.data, wksp);
+
+               /* first compute h^r mod p (stored in g) */
+               mp32bpowmod_w(&dp->p, size, dp->g.data, dp->r.size, dp->r.data, dp->g.data, wksp);
 
-               mp32bpowmod(&dp->p, psize, hdata, dp->r.size, dp->r.data);
-               if (mp32isone(psize, dp->p.data))
+               if (mp32isone(size, dp->g.data))
                        continue;
 
-               mp32nset(&dp->g, psize, dp->p.data);
-               return;
+               return 0;
        }
+       return -1;
 }
 
-int dldp_pgoqValidate(const dldp_p* dp, randomGeneratorContext* rc, int cofactor)
+int dldp_pgoqGenerator(dldp_p* dp, randomGeneratorContext* rgc)
 {
-       if (dldp_pValidate(dp, rc) == 0)
+       register uint32  size = dp->p.size;
+       register uint32* temp = (uint32*) malloc((4*size+2)*sizeof(uint32));
+
+       if (temp)
+       {
+               (void) dldp_pgoqGenerator_w(dp, rgc, temp);
+
+               free(temp);
+
                return 0;
+       }
+       return -1;
+}
+
+int dldp_pgoqValidate(const dldp_p* dp, randomGeneratorContext* rgc, /*@unused@*/ int cofactor)
+{
+       register int rc = dldp_pValidate(dp, rgc);
+
+       if (rc <= 0)
+               return rc;
 
        /* check that g^q mod p = 1 */
 
-       /* if r != 0, then check that 2qr+1 = p */
+       /* if r != 0, then check that qr+1 = p */
 
-       /* if cofactor, then check that q does not divide (2r) */
+       /* if cofactor, then check that q does not divide (r) */
 
        return 1;
 }
 
-void dldp_pgonMake(dldp_p* dp, randomGeneratorContext* rc, uint32 psize, uint32 qsize)
+int dldp_pgonMake(dldp_p* dp, randomGeneratorContext* rgc, uint32 psize, uint32 qsize)
 {
        /*
-        * Generate parameters with a prime p such that p = 2qr+1, with q and r prime
+        * Generate parameters with a prime p such that p = qr+1, with q prime, and r = 2s, with s prime
         */
 
-       /* generate q */
-       mp32prnd(&dp->q, rc, qsize, mp32ptrials(qsize << 5), (const mp32number*) 0);
+       register uint32* temp = (uint32*) malloc((8*psize+2) * sizeof(uint32));
+
+       if (temp)
+       {
+               /* generate q */
+               mp32prnd_w(&dp->q, rgc, qsize, mp32ptrials(qsize << 5), (const mp32number*) 0, temp);
+
+               /* generate p with the appropriate congruences */
+               mp32prndconone_w(&dp->p, rgc, psize, mp32ptrials(psize << 5), &dp->q, (const mp32number*) 0, &dp->r, 2, temp);
+
+               /* set n */
+               mp32bsubone(&dp->p, temp);
+               mp32bset(&dp->n, psize, temp);
 
-       /* generate p with the appropriate congruences */
-       mp32prndconone(&dp->p, rc, psize, mp32ptrials(psize << 5), &dp->q, (const mp32number*) 0, &dp->r, 2);
+               (void) dldp_pgonGenerator_w(dp, rgc, temp);
 
-       /* set n */
-       mp32bmodsubone(&dp->p);
-       mp32bset(&dp->n, psize, dp->p.data);
+               free(temp);
 
-       dldp_pgonGenerator(dp, rc);
+               return 0;
+       }
+       return -1;
 }
 
-void dldp_pgonMakeSafe(dldp_p* dp, randomGeneratorContext* rc, uint32 psize)
+int dldp_pgonMakeSafe(dldp_p* dp, randomGeneratorContext* rgc, uint32 psize)
 {
        /*
         * Generate parameters with a safe prime; i.e. p = 2q+1, where q is prime
         */
 
-       /* generate safe p */
-       mp32prndsafe(&dp->p, rc, psize, mp32ptrials(psize << 5));
+       register uint32* temp = (uint32*) malloc((8*psize+2) * sizeof(uint32));
+
+       if (temp)
+       {
+               /* generate safe p */
+               mp32prndsafe_w(&dp->p, rgc, psize, mp32ptrials(psize << 5), temp);
+
+               /* set n */
+               mp32bsubone(&dp->p, temp);
+               mp32bset(&dp->n, psize, temp);
 
-       /* set n */
-       mp32bmodsubone(&dp->p);
-       mp32bset(&dp->n, dp->p.size, dp->p.data);
+               /* set q */
+               mp32copy(psize, temp, dp->p.modl);
+               mp32divtwo(psize, temp);
+               mp32bset(&dp->q, psize, temp);
 
-       /* set q */
-       mp32divtwo(dp->p.size, dp->p.data);
-       mp32bset(&dp->q, dp->p.size, dp->p.data);
+               /* set r = 2 */
+               mp32nsetw(&dp->r, 2);
 
-       /* set r = 1 */
-       mp32nsetw(&dp->r, 1);
+               (void) dldp_pgonGenerator_w(dp, rgc, temp);
 
-       dldp_pgonGenerator(dp, rc);
+               free(temp);
+
+               return 0;
+       }
+       return -1;
 }
 
-void dldp_pgonGenerator(dldp_p* dp, randomGeneratorContext* rc)
+int dldp_pgonGenerator_w(dldp_p* dp, randomGeneratorContext* rgc, uint32* wksp)
 {
-       register uint32  psize = dp->p.size;
-       register uint32* gdata = dp->p.data+psize*4+2;
+       register uint32  size = dp->p.size;
+
+       mp32nfree(&dp->g);
+       mp32nsize(&dp->g, size);
 
        while (1)
        {
-               mp32brndres(&dp->p, gdata, rc);
+               mp32brnd_w(&dp->p, rgc, dp->g.data, wksp);
 
-               if (mp32isone(dp->r.size, dp->r.data))
+               if (mp32istwo(dp->r.size, dp->r.data))
                {
                        /*
                         * A little math here: the only element in the group which has order 2 is (p-1);
                         * the two group elements raised to power two which result in 1 (mod p) are thus (p-1) and 1
                         *
-                        * mp32brndres doesn't return 1 or (p-1), so the test where g^2 mod p = 1 can be safely skipped
+                        * mp32brnd_w doesn't return 1 or (p-1), so the test where g^2 mod p = 1 can be safely skipped
                         */
 
-                       #if 0
-                       /* first check g^2 mod p */
-                       mp32bsqrmod(&dp->p, psize, gdata);
-                       if (mp32isone(psize, dp->p.data))
-                               continue;
-                       #endif
-
                        /* check g^q mod p*/
-                       mp32bpowmod(&dp->p, psize, gdata, dp->q.size, dp->q.modl);
-                       if (mp32isone(psize, dp->p.data))
+                       mp32bpowmod_w(&dp->p, size, dp->g.data, dp->q.size, dp->q.modl, wksp, wksp+size);
+                       if (mp32isone(size, wksp))
                                continue;
                }
                else
                {
-                       /* we need g^2r, g^2q and g^qr, hence we first compute t = g^r
+                       /* we can either compute g^r, g^2q and g^(qr/2) or
+                        * we first compute s = r/2, and then compute g^2s, g^2q and g^qs
+                        *
+                        * hence we first compute t = g^s
                         * then compute t^2 mod p, and test if one
                         * then compute t^q mod p, and test if one
                         * then compute (g^q mod p)^2 mod p, and test if one
                         */
 
-                       register uint32* tdata = gdata+psize;
+                       /* compute s = r/2 */
+                       mp32setx(size, wksp, dp->r.size, dp->r.data);
+                       mp32divtwo(size, wksp);
 
-                       /* compute t = g^r mod p */                     
-                       mp32bpowmod(&dp->p, psize, gdata, dp->r.size, dp->r.data);
-                       mp32copy(psize, tdata, dp->p.data);
-                       /* compute t^2 mod p = g^2r mod p */
-                       mp32bsqrmod(&dp->p, psize, dp->p.data);
-                       if (mp32isone(psize, dp->p.data))
+                       /* compute t = g^s mod p */
+                       mp32bpowmod_w(&dp->p, size, dp->g.data, size, wksp, wksp+size, wksp+2*size);
+                       /* compute t^2 mod p = g^2s mod p = g^r mod p*/
+                       mp32bsqrmod_w(&dp->p, size, wksp+size, wksp+size, wksp+2*size);
+                       if (mp32isone(size, wksp+size))
                                continue;
 
-                       /* compute t^q mod p = g^qr mod p */
-                       mp32bpowmod(&dp->p, psize, tdata, dp->q.size, dp->q.data);
-                       if (mp32isone(psize, dp->p.data))
+                       /* compute t^q mod p = g^qs mod p */
+                       mp32bpowmod_w(&dp->p, size, wksp, dp->q.size, dp->q.modl, wksp+size, wksp+2*size);
+                       if (mp32isone(size, wksp+size))
                                continue;
 
                        /* compute g^2q mod p */
-                       mp32bpowmod(&dp->p, psize, gdata, dp->q.size, dp->q.modl);
-                       mp32bsqrmod(&dp->p, psize, dp->p.data);
-                       if (mp32isone(psize, dp->p.data))
+                       mp32bpowmod_w(&dp->p, size, dp->g.data, dp->q.size, dp->q.modl, wksp, wksp+size);
+                       mp32bsqrmod_w(&dp->p, size, wksp, wksp+size, wksp+2*size);
+                       if (mp32isone(size, wksp+size))
                                continue;
                }
 
-               mp32nset(&dp->g, psize, dp->p.data);
-
-               return;
+               return 0;
        }
+
+       return -1;
 }
 
-int dldp_pgonValidate(const dldp_p* dp, randomGeneratorContext* rc)
+int dldp_pgonGenerator(dldp_p* dp, randomGeneratorContext* rgc)
 {
-       if (dldp_pValidate((const dldp_p*) dp, rc) == 0)
+       register uint32  psize = dp->p.size;
+       register uint32* temp = (uint32*) malloc((8*psize+2) * sizeof(uint32));
+
+       if (temp)
+       {
+               (void) dldp_pgonGenerator_w(dp, rgc, temp);
+
+               free(temp);
+
                return 0;
+       }
+       return -1;
+}
 
-       return 1;
+int dldp_pgonValidate(const dldp_p* dp, randomGeneratorContext* rgc)
+{
+       return dldp_pValidate((const dldp_p*) dp, rgc);
 }
index 62a5504..8775d1f 100644 (file)
@@ -5,7 +5,7 @@
  *
  * <conformance statement for IEEE P1363 needed here>
  *
- * Copyright (c) 2000 Virtual Unlimited B.V.
+ * Copyright (c) 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 /*
  * Discrete Logarithm Domain Parameters - Prime
  *
- * Standard definition where p = 2qr+1; in case where p=2q+1, r=1
+ * Standard definition where p = qr+1; in case where p=2q+1, r=2
  *
- * IEEE P1363 definition is p = rk+1
+ * In IEEE P1363 naming is p = rk+1
  *
- * Hence, IEEE r = q and IEEE cofactor k = 2 or k = 2r
+ * Hence, IEEE prime r = q and cofactor k = r
  *
  * Make sure q is large enough to foil Pohlig-Hellman attacks
  *  See: "Handbook of Applied Cryptography", Chapter 3.6.4
@@ -65,55 +65,70 @@ extern "C" {
  */
 
 BEEDLLAPI
-void dldp_pInit(dldp_p*);
+int dldp_pInit(dldp_p* dp)
+       /*@modifies dp */;
 BEEDLLAPI
-void dldp_pFree(dldp_p*);
+int dldp_pFree(dldp_p* dp)
+       /*@modifies dp */;
 BEEDLLAPI
-void dldp_pCopy(dldp_p*, const dldp_p*);
+int dldp_pCopy(dldp_p* dp, const dldp_p*)
+       /*@modifies dp */;
 
 /*
  * Functions for generating keys
  */
 
 BEEDLLAPI
-void dldp_pPrivate(const dldp_p*, randomGeneratorContext*, mp32number*);
+int dldp_pPrivate(const dldp_p* dp, randomGeneratorContext* rgc, mp32number* x)
+       /*@modifies dp, x */;
 BEEDLLAPI
-void dldp_pPublic (const dldp_p*, const mp32number*, mp32number*);
+int dldp_pPublic (const dldp_p* dp, const mp32number* x, mp32number* y)
+       /*@modifies y */;
 BEEDLLAPI
-void dldp_pPair   (const dldp_p*, randomGeneratorContext*, mp32number*, mp32number*);
+int dldp_pPair   (const dldp_p* dp, randomGeneratorContext* rgc, mp32number* x, mp32number* y)
+       /*@modifies x, y */;
 
 /*
  * Function for comparing domain parameters
  */
 
 BEEDLLAPI
-int  dldp_pEqual  (const dldp_p*, const dldp_p*);
+int  dldp_pEqual  (const dldp_p* dp, const dldp_p*)
+       /*@*/;
 
 /*
  * Functions for generating and validating dldp_pgoq variant domain parameters
  */
 
 BEEDLLAPI
-void dldp_pgoqMake     (dldp_p*, randomGeneratorContext*, uint32, uint32, int);
+int dldp_pgoqMake     (dldp_p* dp, randomGeneratorContext* rgc, uint32, uint32, int)
+       /*@modifies dp, rgc */;
 BEEDLLAPI
-void dldp_pgoqMakeSafe (dldp_p*, randomGeneratorContext*, uint32);
+int dldp_pgoqMakeSafe (dldp_p* dp, randomGeneratorContext* rgc, uint32)
+       /*@modifies dp, rgc */;
 BEEDLLAPI
-void dldp_pgoqGenerator(dldp_p*, randomGeneratorContext*);
+int dldp_pgoqGenerator(dldp_p* dp, randomGeneratorContext* rgc)
+       /*@modifies dp */;
 BEEDLLAPI
-int  dldp_pgoqValidate (const dldp_p*, randomGeneratorContext*, int);
+int  dldp_pgoqValidate (const dldp_p*, randomGeneratorContext* rgc, int)
+       /*@*/;
 
 /*
  * Functions for generating and validating dldp_pgon variant domain parameters
  */
 
 BEEDLLAPI
-void dldp_pgonMake     (dldp_p*, randomGeneratorContext*, uint32, uint32);
+int dldp_pgonMake     (dldp_p* dp, randomGeneratorContext* rgc, uint32, uint32)
+       /*@modifies dp, rgc */;
 BEEDLLAPI
-void dldp_pgonMakeSafe (dldp_p*, randomGeneratorContext*, uint32);
+int dldp_pgonMakeSafe (dldp_p* dp, randomGeneratorContext* rgc, uint32)
+       /*@modifies dp, rgc */;
 BEEDLLAPI
-void dldp_pgonGenerator(dldp_p*, randomGeneratorContext*);
+int dldp_pgonGenerator(dldp_p* dp, randomGeneratorContext* rgc)
+       /*@modifies dp */;
 BEEDLLAPI
-int  dldp_pgonValidate (const dldp_p*, randomGeneratorContext*);
+int  dldp_pgonValidate (const dldp_p* dp, randomGeneratorContext* rgc)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index c484f43..0361630 100644 (file)
@@ -5,7 +5,7 @@
  *
  * <conformance statement for IEEE P1363 needed here>
  *
- * Copyright (c) 2000 Virtual Unlimited B.V.
+ * Copyright (c) 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -42,11 +42,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void dlkp_pPair(dlkp_p*, randomGeneratorContext*, const dldp_p*);
+int dlkp_pPair(dlkp_p* kp, randomGeneratorContext* rgc, const dldp_p*)
+       /*@modifies kp */;
 BEEDLLAPI
-void dlkp_pFree(dlkp_p*);
+int dlkp_pInit(dlkp_p* kp)
+       /*@modifies kp */;
 BEEDLLAPI
-void dlkp_pCopy(dlkp_p*, const dlkp_p*);
+int dlkp_pFree(dlkp_p* kp)
+       /*@modifies kp */;
+BEEDLLAPI
+int dlkp_pCopy(dlkp_p* kp, const dlkp_p*)
+       /*@modifies kp */;
 
 #ifdef __cplusplus
 }
index 029d62e..0db06e6 100644 (file)
@@ -39,17 +39,25 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void dlpk_pFree(dlpk_p*);
+int dlpk_pInit(dlpk_p* pk)
+       /*@modifies pk */;
 BEEDLLAPI
-void dlpk_pCopy(dlpk_p*, const dlpk_p*);
+int dlpk_pFree(dlpk_p* pk)
+       /*@modifies pk */;
+BEEDLLAPI
+int dlpk_pCopy(dlpk_p* pk, const dlpk_p*)
+       /*@modifies pk */;
 
 BEEDLLAPI
-int  dlpk_pEqual(const dlpk_p*, const dlpk_p*);
+int  dlpk_pEqual(const dlpk_p* pk, const dlpk_p*)
+       /*@*/;
 
 BEEDLLAPI
-int  dlpk_pgoqValidate(const dlpk_p*, randomGeneratorContext*, int cofactor);
+int  dlpk_pgoqValidate(const dlpk_p* pk, randomGeneratorContext* rgc, int cofactor)
+       /*@*/;
 BEEDLLAPI
-int  dlpk_pgonValidate(const dlpk_p*, randomGeneratorContext*);
+int  dlpk_pgonValidate(const dlpk_p* pk, randomGeneratorContext* rgc)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index a580ab6..c0f091a 100644 (file)
@@ -33,7 +33,8 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void dlsvdp_pDHSecret(const dldp_p*, const mp32number*, const mp32number*, mp32number*);
+int dlsvdp_pDHSecret(const dldp_p* dp, const mp32number*, const mp32number*, mp32number* s)
+       /*@modifies s */;
 
 #ifdef __cplusplus
 }
diff --git a/beecrypt/docs/.cvsignore b/beecrypt/docs/.cvsignore
new file mode 100644 (file)
index 0000000..540cfea
--- /dev/null
@@ -0,0 +1,19 @@
+.deps
+.depend
+.depend-done
+.libs
+Makefile
+Makefile.in
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+libtool
+ltconfig
+ltmain.sh
+*.o
+*.lo
+stamp-h
+stamp-h.in
index 6c5c818..f6d2d99 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -89,14 +89,18 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+EXEEXT = @EXEEXT@
 LD = @LD@
 LIBTOOL = @LIBTOOL@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 LN_S = @LN_S@
 MAKEINFO = @MAKEINFO@
 OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 RANLIB = @RANLIB@
+STRIP = @STRIP@
 VERSION = @VERSION@
 ac_cv_have_java = @ac_cv_have_java@
 ac_cv_have_javac = @ac_cv_have_javac@
@@ -112,7 +116,7 @@ DIST_COMMON =  Makefile.am Makefile.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 all: all-redirect
 .SUFFIXES:
@@ -135,7 +139,7 @@ distdir: $(DISTFILES)
        @for file in $(DISTFILES); do \
          d=$(srcdir); \
          if test -d $$d/$$file; then \
-           cp -pr $$/$$file $(distdir)/$$file; \
+           cp -pr $$d/$$file $(distdir)/$$file; \
          else \
            test -f $(distdir)/$$file \
            || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
index 0edb6b8..de73584 100644 (file)
@@ -7,7 +7,7 @@
  *  "Handbook of Applied Cryptography"
  *  11.5.2 "The ElGamal signature scheme", p. 454-459
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -34,8 +34,8 @@
  *   s = inv(k) * (h(m) - x*r) mod (p-1)
  *  Verifying equation:
  *   check 1 <= r <= (p-1)
- *   v1 = y^r * r^s mod p
- *   v2 = g^h(m) mod p
+ *   v1 = g^h(m) mod p
+ *   v2 = y^r * r^s mod p
  *   check v1 == v2
  *  Simultaneous multiple exponentiation verification:
  *   y^r * r^s * g^(p-1-h(m)) mod p = 1 or (the former is probably faster)
 #define BEECRYPT_DLL_EXPORT
 
 #include "elgamal.h"
+#include "dldp.h"
 #include "mp32.h"
 
 #if HAVE_STDLIB_H
-#include <stdlib.h>
+# include <stdlib.h>
+#endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
 #endif
 
-void elgv3sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext* rc, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s)
+int elgv1sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext* rgc, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s)
 {
-       register uint32  size   = p->size;
-       register uint32* kdata  = p->wksp+size*4+4; /* leave enough workspace for a powmod operation */
-       register uint32* u1data = n->wksp+size*4+4; /* leave enough workspace for a mulmod and addmod operation */
-       register uint32* u2data = u1data+size;
+       register uint32  size = p->size;
+       register uint32* temp = (uint32*) malloc((8*size+6)*sizeof(uint32));
+
+       if (temp)
+       {
+               /* get a random k, invertible modulo (p-1) */
+               mp32brndinv_w(n, rgc, temp, temp+size, temp+2*size);
+
+               /* compute r = g^k mod p */
+               mp32nfree(r);
+               mp32nsize(r, size);
+               mp32bpowmod_w(p, g->size, g->data, size, temp, r->data, temp+2*size);
 
-       /* get a random k */
-       mp32brnd(p, rc);
-       mp32copy(size, kdata, p->data);
+               /* compute x*r mod n */
+               mp32bmulmod_w(n, x->size, x->data, r->size, r->data, temp, temp+2*size);
 
-       /* compute r = g^k mod p */
-       mp32bpowmod(p, g->size, g->data, size, kdata);
-       mp32nset(r, size, p->data);
+               /* compute -(x*r) mod n */
+               mp32neg(size, temp);
+               (void) mp32add(size, temp, n->modl);
 
-       /* compute u1 = x*r mod n */
-       mp32bmulmodres(n, u1data, x->size, x->data, size, p->data);
+               /* compute h(m) - x*r mod n */
+               mp32baddmod_w(n, hm->size, hm->data, size, temp, temp, temp+2*size);
 
-       /* compute u2 = k*h(m) mod n */
-       mp32bmulmodres(n, u2data, hm->size, hm->data, size, kdata);
+               /* compute s = inv(k)*(h(m) - x*r) mod n */
+               mp32nfree(s);
+               mp32nsize(s, size);
+               mp32bmulmod_w(n, size, temp, size, temp+size, s->data, temp+2*size);
 
-       /* compute s = u1+u2 mod n */
-       mp32baddmod(n, size, u1data, size, u2data);
-       mp32nset(s, size, n->data);
+               free(temp);
+
+               return 0;
+       }
+       return -1;
+}
+
+int elgv1vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, const mp32number* hm, const mp32number* y, const mp32number* r, const mp32number* s)
+{
+       register uint32  size = p->size;
+       register uint32* temp;
+
+       if (mp32z(r->size, r->data))
+               return 0;
+
+       if (mp32gex(r->size, r->data, size, p->modl))
+               return 0;
+
+       if (mp32z(s->size, s->data))
+               return 0;
+
+       if (mp32gex(s->size, s->data, n->size, n->modl))
+               return 0;
+
+       temp = (uint32*) malloc((6*size+2)*sizeof(uint32));
+
+       if (temp)
+       {
+               register int rc;
+
+               /* compute u1 = y^r mod p */
+               mp32bpowmod_w(p, y->size, y->data, r->size, r->data, temp, temp+2*size);
+
+               /* compute u2 = r^s mod p */
+               mp32bpowmod_w(p, r->size, r->data, s->size, s->data, temp+size, temp+2*size);
+
+               /* compute v2 = u1*u2 mod p */
+               mp32bmulmod_w(p, size, temp, size, temp+size, temp+size, temp+2*size);
+
+               /* compute v1 = g^h(m) mod p */
+               mp32bpowmod_w(p, g->size, g->data, hm->size, hm->data, temp, temp+2*size);
+
+               rc = mp32eq(size, temp, temp+size);
+
+               free(temp);
+
+               return rc;
+       }
+       return 0;
+}
+
+int elgv3sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext* rgc, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s)
+{
+       register uint32  size = p->size;
+       register uint32* temp = (uint32*) malloc((6*size+2)*sizeof(uint32));
+
+       if (temp)
+       {
+               /* get a random k */
+               mp32brnd_w(p, rgc, temp, temp+2*size);
+
+               /* compute r = g^k mod p */
+               mp32nfree(r);
+               mp32nsize(r, size);
+               mp32bpowmod_w(p, g->size, g->data, size, temp, r->data, temp+2*size);
+
+               /* compute u1 = x*r mod n */
+               mp32bmulmod_w(n, x->size, x->data, size, r->data, temp+size, temp+2*size);
+
+               /* compute u2 = k*h(m) mod n */
+               mp32bmulmod_w(n, size, temp, hm->size, hm->data, temp, temp+2*size);
+
+               /* compute s = u1+u2 mod n */
+               mp32nfree(s);
+               mp32nsize(s, n->size);
+               mp32baddmod_w(n, size, temp, size, temp+size, s->data, temp+2*size);
+
+               free(temp);
+
+               return 0;
+       }
+       return -1;
 }
 
 int elgv3vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, const mp32number* hm, const mp32number* y, const mp32number* r, const mp32number* s)
 {
-       register uint32  size =   p->size;
-       register uint32* v1data = p->wksp+size*4+4;
-       register uint32* u1data = v1data+size;
+       register uint32  size = p->size;
+       register uint32* temp;
 
        if (mp32z(r->size, r->data))
                return 0;
@@ -107,23 +198,29 @@ int elgv3vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, c
        if (mp32gex(s->size, s->data, n->size, n->modl))
                return 0;
 
-       #ifdef COMING_SOON
-       /* here we need the simultaneous multiple exponentiation with three pairs */
-       #endif
+       temp = (uint32*) malloc((6*size+2)*sizeof(uint32));
+
+       if (temp)
+       {
+               register int rc;
+
+               /* compute u1 = y^r mod p */
+               mp32bpowmod_w(p, y->size, y->data, r->size, r->data, temp, temp+2*size);
+
+               /* compute u2 = r^h(m) mod p */
+               mp32bpowmod_w(p, r->size, r->data, hm->size, hm->data, temp+size, temp+2*size);
 
-       /* compute v1 = g^s mod p */
-       mp32bpowmod(p, g->size, g->data, s->size, s->data);
-       mp32copy(size, v1data, p->data);
+               /* compute v2 = u1*u2 mod p */
+               mp32bmulmod_w(p, size, temp, size, temp+size, temp+size, temp+2*size);
 
-       /* compute u1 = y^r mod p */
-       mp32bpowmod(p, y->size, y->data, r->size, r->data);
-       mp32copy(size, u1data, p->data);
+               /* compute v1 = g^s mod p */
+               mp32bpowmod_w(p, g->size, g->data, s->size, s->data, temp, temp+2*size);
 
-       /* compute u2 = r^h(m) mod p */
-       mp32bpowmod(p, r->size, r->data, hm->size, hm->data);
+               rc = mp32eq(size, temp, temp+size);
 
-       /* compute v2 = u1*u2 mod p */
-       mp32bmulmod(p, size, p->data, size, u1data);
+               free(temp);
 
-       return mp32eq(size, v1data, p->data);
+               return rc;
+       }
+       return 0;
 }
index 973fa45..d2ca7c8 100644 (file)
@@ -3,7 +3,7 @@
  *
  * ElGamal signature scheme, header
  *
- * Copyright (c) 2000 Virtual Unlimited B.V.
+ * Copyright (c) 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -26,7 +26,6 @@
 #ifndef _ELGAMAL_H
 #define _ELGAMAL_H
 
-#include "mp32number.h"
 #include "mp32barrett.h"
 
 #ifdef __cplusplus
@@ -34,14 +33,18 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void elgv1sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext*, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s);
+int elgv1sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext*, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s)
+       /*@modifies r, s */;
 BEEDLLAPI
-void elgv3sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext*, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s);
+int elgv3sign(const mp32barrett* p, const mp32barrett* n, const mp32number* g, randomGeneratorContext*, const mp32number* hm, const mp32number* x, mp32number* r, mp32number* s)
+       /*@modifies r, s */;
 
 BEEDLLAPI
-int elgv1vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, const mp32number* hm, const mp32number* y, const mp32number* r, const mp32number* s);
+int elgv1vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, const mp32number* hm, const mp32number* y, const mp32number* r, const mp32number* s)
+       /*@*/;
 BEEDLLAPI
-int elgv3vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, const mp32number* hm, const mp32number* y, const mp32number* r, const mp32number* s);
+int elgv3vrfy(const mp32barrett* p, const mp32barrett* n, const mp32number* g, const mp32number* hm, const mp32number* y, const mp32number* r, const mp32number* s)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index e09e7b8..be43260 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Endian-dependant encoding/decoding, header
  *
- * Copyright (c) 1998-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -75,7 +75,7 @@ inline uint32 swapu32(uint32 n)
 
 inline int64 swap64(int64 n)
 {
-       #if (SIZEOF_LONG == 4)
+       #if HAVE_LONG_LONG
        return (    ((n & 0xffLL) << 56) |
                                ((n & 0xff00LL) << 40) |
                                ((n & 0xff0000LL) << 24) |
@@ -96,11 +96,16 @@ inline int64 swap64(int64 n)
        #endif
 }
 #else
- int16 swap16 (int16);
-uint16 swapu16(uint16);
- int32 swap32 (int32);
-uint32 swapu32(uint32);
- int64 swap64 (int64);
+ int16 swap16 (int16 n)
+       /*@*/;
+uint16 swapu16(uint16 n)
+       /*@*/;
+ int32 swap32 (int32 n)
+       /*@*/;
+uint32 swapu32(uint32 n)
+       /*@*/;
+ int64 swap64 (int64 n)
+       /*@*/;
 #endif
 
 #ifdef __cplusplus
@@ -108,77 +113,115 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int encodeByte(javabyte, byte*);
+int encodeByte(javabyte b, byte* data)
+       /*@modifies data */;
 BEEDLLAPI
-int encodeShort(javashort, byte*);
+int encodeShort(javashort s, byte* data)
+       /*@modifies data */;
 BEEDLLAPI
-int encodeInt(javaint, byte*);
+int encodeInt(javaint i, byte* data)
+       /*@modifies data */;
 
 BEEDLLAPI
-int encodeLong(javalong, byte*);
+int encodeLong(javalong l, byte* data)
+       /*@modifies data */;
 BEEDLLAPI
-int encodeChar(javachar, byte*);
+int encodeChar(javachar c, byte* data)
+       /*@modifies data */;
 BEEDLLAPI
-int encodeFloat(javafloat, byte*);
+int encodeFloat(javafloat f, byte* data)
+       /*@modifies data */;
 BEEDLLAPI
-int encodeDouble(javadouble, byte*);
+int encodeDouble(javadouble d, byte* data)
+       /*@modifies data */;
 
 BEEDLLAPI
-int encodeInts(const javaint*, byte*, int);
+int encodeInts(const javaint* i, byte* data, int count)
+       /*@modifies data */;
+BEEDLLAPI
+int encodeIntsPartial(const javaint* i, byte* data, int bytecount)
+       /*@modifies data */;
 BEEDLLAPI
-int encodeChars(const javachar*, byte*, int);
+int encodeChars(const javachar* c, byte* data, int count)
+       /*@modifies data */;
 
 BEEDLLAPI
-int decodeByte(javabyte*, const byte*);
+int decodeByte(javabyte* b, const byte* data)
+       /*@modifies b */;
 BEEDLLAPI
-int decodeShort(javashort*, const byte*);
+int decodeShort(javashort* s, const byte* data)
+       /*@modifies s */;
 BEEDLLAPI
-int decodeInt(javaint*, const byte*);
+int decodeInt(javaint* i, const byte* data)
+       /*@modifies i */;
 BEEDLLAPI
-int decodeLong(javalong*, const byte*);
+int decodeLong(javalong* l, const byte* data)
+       /*@modifies l */;
 BEEDLLAPI
-int decodeChar(javachar*, const byte*);
+int decodeChar(javachar* c, const byte* data)
+       /*@modifies c */;
 BEEDLLAPI
-int decodeFloat(javafloat*, const byte*);
+int decodeFloat(javafloat* f, const byte* data)
+       /*@modifies f */;
 BEEDLLAPI
-int decodeDouble(javadouble*, const byte*);
+int decodeDouble(javadouble* d, const byte* data)
+       /*@modifies d */;
 
 BEEDLLAPI
-int decodeInts(javaint*, const byte*, int);
+int decodeInts(javaint* i, const byte* data, int count)
+       /*@modifies i */;
+BEEDLLAPI
+int decodeIntsPartial(javaint* i, const byte* data, int bytecount)
+       /*@modifies i */;
 BEEDLLAPI
-int decodeChars(javachar*, const byte*, int);
+int decodeChars(javachar* c, const byte* data, int count)
+       /*@modifies c */;
 
 BEEDLLAPI
-int writeByte(javabyte, FILE*);
+int writeByte(javabyte b, FILE* ofp)
+       /*@modifies ofp, fileSystem */;
 BEEDLLAPI
-int writeShort(javashort, FILE*);
+int writeShort(javashort s, FILE* ofp)
+       /*@modifies ofp, fileSystem */;
 BEEDLLAPI
-int writeInt(javaint, FILE*);
+int writeInt(javaint i, FILE* ofp)
+       /*@modifies ofp, fileSystem */;
 BEEDLLAPI
-int writeLong(javalong, FILE*);
+int writeLong(javalong l, FILE* ofp)
+       /*@modifies ofp, fileSystem */;
 BEEDLLAPI
-int writeChar(javachar, FILE*);
+int writeChar(javachar c, FILE* ofp)
+       /*@modifies ofp, fileSystem */;
 
 BEEDLLAPI
-int writeInts(const javaint*, FILE*, int);
+int writeInts(const javaint* i, FILE* ofp, int count)
+       /*@modifies ofp, fileSystem */;
 BEEDLLAPI
-int writeChars(const javachar*, FILE*, int);
+int writeChars(const javachar* c, FILE* ofp, int count)
+       /*@modifies ofp, fileSystem */;
 
 BEEDLLAPI
-int readByte(javabyte*, FILE*);
+int readByte(javabyte* b, FILE* ifp)
+       /*@modifies b, ifp, fileSystem */;
 BEEDLLAPI
-int readShort(javashort*, FILE*);
+int readShort(javashort* s, FILE* ifp)
+       /*@modifies s, ifp, fileSystem */;
 BEEDLLAPI
-int readInt(javaint*, FILE*);
+int readInt(javaint* i, FILE* ifp)
+       /*@modifies i, ifp, fileSystem */;
 BEEDLLAPI
-int readLong(javalong*, FILE*);
+int readLong(javalong* l, FILE* ifp)
+       /*@modifies l, ifp, fileSystem */;
 BEEDLLAPI
-int readChar(javachar*, FILE*);
+int readChar(javachar* c, FILE* ifp)
+       /*@modifies c, ifp, fileSystem */;
 
 BEEDLLAPI
-int readInts(javaint*, FILE*, int);
+int readInts(javaint* i, FILE* ifp, int count)
+       /*@modifies i, ifp, fileSystem */;
 BEEDLLAPI
-int readChars(javachar*, FILE*, int);
+int readChars(javachar* c, FILE* ifp, int count)
+       /*@modifies c, ifp, fileSystem */;
 
 #ifdef __cplusplus
 }
index 0952d3f..71712c3 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Entropy gathering routine(s) for pseudo-random generator initialization, header
  *
- * Copyright (c) 1998-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 
 #include "beecrypt.h"
 
+#if WIN32
+#include <Windows.h>
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #if WIN32
-
 BEEDLLAPI
 int entropy_provider_setup(HINSTANCE);
 BEEDLLAPI
-int entropy_provider_cleanup();
+int entropy_provider_cleanup(void);
 
 BEEDLLAPI
 int entropy_wavein(uint32*, int);
+BEEDLLAPI
+int entropy_console(uint32*, int);
+BEEDLLAPI
+int entropy_wincrypt(uint32*, int);
 #else
 #if HAVE_DEV_AUDIO
-int entropy_dev_audio (uint32*, int);
+int entropy_dev_audio (uint32* data, int size)
+       /*@*/;
 #endif
 #if HAVE_DEV_DSP
-int entropy_dev_dsp   (uint32*, int);
+int entropy_dev_dsp   (uint32* data, int size)
+       /*@modifies data */;
 #endif
 #if HAVE_DEV_RANDOM
-int entropy_dev_random(uint32*, int);
+int entropy_dev_random(uint32* data, int size)
+       /*@modifies data */;
+#endif
+#if HAVE_DEV_URANDOM
+int entropy_dev_urandom(uint32* data, int size)
+       /*@modifies data */;
 #endif
 #if HAVE_DEV_TTY
-int entropy_dev_tty   (uint32*, int);
+int entropy_dev_tty   (uint32* data, int size)
+       /*@modifies data */;
 #endif
 #endif
 
index 4388ad1..cb9992f 100644 (file)
@@ -6,7 +6,7 @@
  * For more information on this algorithm, see:
  * NIST FIPS PUB 180-1
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #include "mp32.h"
 #include "endianness.h"
 
-static uint32 sha1hinit[5] = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 };
+static const uint32 k[4] = { 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6 };
 
-const hashFunction sha1 = { "SHA-1", sizeof(sha1Param), 5 * sizeof(uint32), (hashFunctionReset) sha1Reset, (hashFunctionUpdate) sha1Update, (hashFunctionDigest) sha1Digest };
+static const uint32 hinit[5] = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 };
+
+const hashFunction sha1 = { "SHA-1", sizeof(sha1Param), 64, 5 * sizeof(uint32), (hashFunctionReset) sha1Reset, (hashFunctionUpdate) sha1Update, (hashFunctionDigest) sha1Digest };
 
 int sha1Reset(register sha1Param *p)
 {
-       mp32copy(5, p->h, sha1hinit);
+       mp32copy(5, p->h, hinit);
        mp32zero(80, p->data);
        p->length = 0;
        p->offset = 0;
        return 0;
 }
 
-#define K00 0x5a827999
-#define K20 0x6ed9eba1
-#define K40 0x8f1bbcdc
-#define K60 0xca62c1d6
-
-#define ROL1(x) (((x) << 1) | ((x) >> 31))
-#define ROL5(x) (((x) << 5) | ((x) >> 27))
-#define ROR2(x) (((x) >> 2) | ((x) << 30))
-
-#define subround1(a, b, c, d, e, w) \
-       e = ROL5(a) + ((b&(c^d))^d) + e + w + K00; b = ROR2(b)
-#define subround2(a, b, c, d, e, w) \
-       e = ROL5(a) + (b^c^d) + e + w + K20; b = ROR2(b)
-#define subround3(a, b, c, d, e, w) \
-       e = ROL5(a) + (((b|c)&d)|(b&c)) + e + w + K40; b = ROR2(b)
-#define subround4(a, b, c, d, e, w) \
-       e = ROL5(a) + (b^c^d) + e + w + K60; b = ROR2(b)
+#define SUBROUND1(a, b, c, d, e, w, k) \
+       e = ROTL32(a, 5) + ((b&(c^d))^d) + e + w + k;   \
+       b = ROTR32(b, 2)
+#define SUBROUND2(a, b, c, d, e, w, k) \
+       e = ROTL32(a, 5) + (b^c^d) + e + w + k; \
+       b = ROTR32(b, 2)
+#define SUBROUND3(a, b, c, d, e, w, k) \
+       e = ROTL32(a, 5) + (((b|c)&d)|(b&c)) + e + w + k;       \
+       b = ROTR32(b, 2)
+#define SUBROUND4(a, b, c, d, e, w, k) \
+       e = ROTL32(a, 5) + (b^c^d) + e + w + k; \
+       b = ROTR32(b, 2)
 
 #ifndef ASM_SHA1PROCESS
 void sha1Process(register sha1Param *p)
@@ -86,55 +83,96 @@ void sha1Process(register sha1Param *p)
        while (t--)
        {
                register uint32 temp = w[-3] ^ w[-8] ^ w[-14] ^ w[-16];
-               *(w++) = ROL1(temp);
+               *(w++) = ROTL32(temp, 1);
        }
 
        w = p->data;
 
        a = p->h[0]; b = p->h[1]; c = p->h[2]; d = p->h[3]; e = p->h[4];
 
-       t = 4;
-       while (t--)
-       {
-               subround1(a,b,c,d,e,w[0]);
-               subround1(e,a,b,c,d,w[1]);
-               subround1(d,e,a,b,c,w[2]);
-               subround1(c,d,e,a,b,w[3]);
-               subround1(b,c,d,e,a,w[4]);
-               w += 5;
-       }
-
-       t = 4;
-       while (t--)
-       {
-               subround2(a,b,c,d,e,w[0]);
-               subround2(e,a,b,c,d,w[1]);
-               subround2(d,e,a,b,c,w[2]);
-               subround2(c,d,e,a,b,w[3]);
-               subround2(b,c,d,e,a,w[4]);
-               w += 5;
-       }
-
-       t = 4;
-       while (t--)
-       {
-               subround3(a,b,c,d,e,w[0]);
-               subround3(e,a,b,c,d,w[1]);
-               subround3(d,e,a,b,c,w[2]);
-               subround3(c,d,e,a,b,w[3]);
-               subround3(b,c,d,e,a,w[4]);
-               w += 5;
-       }
-       t = 4;
-       while (t--)
-       {
-               subround4(a,b,c,d,e,w[0]);
-               subround4(e,a,b,c,d,w[1]);
-               subround4(d,e,a,b,c,w[2]);
-               subround4(c,d,e,a,b,w[3]);
-               subround4(b,c,d,e,a,w[4]);
-               w += 5;
-       }
+       SUBROUND1(a,b,c,d,e,w[ 0],k[0]);
+       SUBROUND1(e,a,b,c,d,w[ 1],k[0]);
+       SUBROUND1(d,e,a,b,c,w[ 2],k[0]);
+       SUBROUND1(c,d,e,a,b,w[ 3],k[0]);
+       SUBROUND1(b,c,d,e,a,w[ 4],k[0]);
+       SUBROUND1(a,b,c,d,e,w[ 5],k[0]);
+       SUBROUND1(e,a,b,c,d,w[ 6],k[0]);
+       SUBROUND1(d,e,a,b,c,w[ 7],k[0]);
+       SUBROUND1(c,d,e,a,b,w[ 8],k[0]);
+       SUBROUND1(b,c,d,e,a,w[ 9],k[0]);
+       SUBROUND1(a,b,c,d,e,w[10],k[0]);
+       SUBROUND1(e,a,b,c,d,w[11],k[0]);
+       SUBROUND1(d,e,a,b,c,w[12],k[0]);
+       SUBROUND1(c,d,e,a,b,w[13],k[0]);
+       SUBROUND1(b,c,d,e,a,w[14],k[0]);
+       SUBROUND1(a,b,c,d,e,w[15],k[0]);
+       SUBROUND1(e,a,b,c,d,w[16],k[0]);
+       SUBROUND1(d,e,a,b,c,w[17],k[0]);
+       SUBROUND1(c,d,e,a,b,w[18],k[0]);
+       SUBROUND1(b,c,d,e,a,w[19],k[0]);
+
+       SUBROUND2(a,b,c,d,e,w[20],k[1]);
+       SUBROUND2(e,a,b,c,d,w[21],k[1]);
+       SUBROUND2(d,e,a,b,c,w[22],k[1]);
+       SUBROUND2(c,d,e,a,b,w[23],k[1]);
+       SUBROUND2(b,c,d,e,a,w[24],k[1]);
+       SUBROUND2(a,b,c,d,e,w[25],k[1]);
+       SUBROUND2(e,a,b,c,d,w[26],k[1]);
+       SUBROUND2(d,e,a,b,c,w[27],k[1]);
+       SUBROUND2(c,d,e,a,b,w[28],k[1]);
+       SUBROUND2(b,c,d,e,a,w[29],k[1]);
+       SUBROUND2(a,b,c,d,e,w[30],k[1]);
+       SUBROUND2(e,a,b,c,d,w[31],k[1]);
+       SUBROUND2(d,e,a,b,c,w[32],k[1]);
+       SUBROUND2(c,d,e,a,b,w[33],k[1]);
+       SUBROUND2(b,c,d,e,a,w[34],k[1]);
+       SUBROUND2(a,b,c,d,e,w[35],k[1]);
+       SUBROUND2(e,a,b,c,d,w[36],k[1]);
+       SUBROUND2(d,e,a,b,c,w[37],k[1]);
+       SUBROUND2(c,d,e,a,b,w[38],k[1]);
+       SUBROUND2(b,c,d,e,a,w[39],k[1]);
+
+       SUBROUND3(a,b,c,d,e,w[40],k[2]);
+       SUBROUND3(e,a,b,c,d,w[41],k[2]);
+       SUBROUND3(d,e,a,b,c,w[42],k[2]);
+       SUBROUND3(c,d,e,a,b,w[43],k[2]);
+       SUBROUND3(b,c,d,e,a,w[44],k[2]);
+       SUBROUND3(a,b,c,d,e,w[45],k[2]);
+       SUBROUND3(e,a,b,c,d,w[46],k[2]);
+       SUBROUND3(d,e,a,b,c,w[47],k[2]);
+       SUBROUND3(c,d,e,a,b,w[48],k[2]);
+       SUBROUND3(b,c,d,e,a,w[49],k[2]);
+       SUBROUND3(a,b,c,d,e,w[50],k[2]);
+       SUBROUND3(e,a,b,c,d,w[51],k[2]);
+       SUBROUND3(d,e,a,b,c,w[52],k[2]);
+       SUBROUND3(c,d,e,a,b,w[53],k[2]);
+       SUBROUND3(b,c,d,e,a,w[54],k[2]);
+       SUBROUND3(a,b,c,d,e,w[55],k[2]);
+       SUBROUND3(e,a,b,c,d,w[56],k[2]);
+       SUBROUND3(d,e,a,b,c,w[57],k[2]);
+       SUBROUND3(c,d,e,a,b,w[58],k[2]);
+       SUBROUND3(b,c,d,e,a,w[59],k[2]);
+
+       SUBROUND4(a,b,c,d,e,w[60],k[3]);
+       SUBROUND4(e,a,b,c,d,w[61],k[3]);
+       SUBROUND4(d,e,a,b,c,w[62],k[3]);
+       SUBROUND4(c,d,e,a,b,w[63],k[3]);
+       SUBROUND4(b,c,d,e,a,w[64],k[3]);
+       SUBROUND4(a,b,c,d,e,w[65],k[3]);
+       SUBROUND4(e,a,b,c,d,w[66],k[3]);
+       SUBROUND4(d,e,a,b,c,w[67],k[3]);
+       SUBROUND4(c,d,e,a,b,w[68],k[3]);
+       SUBROUND4(b,c,d,e,a,w[69],k[3]);
+       SUBROUND4(a,b,c,d,e,w[70],k[3]);
+       SUBROUND4(e,a,b,c,d,w[71],k[3]);
+       SUBROUND4(d,e,a,b,c,w[72],k[3]);
+       SUBROUND4(c,d,e,a,b,w[73],k[3]);
+       SUBROUND4(b,c,d,e,a,w[74],k[3]);
+       SUBROUND4(a,b,c,d,e,w[75],k[3]);
+       SUBROUND4(e,a,b,c,d,w[76],k[3]);
+       SUBROUND4(d,e,a,b,c,w[77],k[3]);
+       SUBROUND4(c,d,e,a,b,w[78],k[3]);
+       SUBROUND4(b,c,d,e,a,w[79],k[3]);
 
        p->h[0] += a;
        p->h[1] += b;
@@ -152,7 +190,7 @@ int sha1Update(register sha1Param *p, const byte *data, int size)
        while (size > 0)
        {
                proclength = ((p->offset + size) > 64) ? (64 - p->offset) : size;
-               memcpy(((byte *) p->data) + p->offset, data, proclength);
+               memmove(((byte *) p->data) + p->offset, data, proclength);
                size -= proclength;
                data += proclength;
                p->offset += proclength;
@@ -186,11 +224,11 @@ static void sha1Finish(register sha1Param *p)
                *(ptr++) = 0;
 
        #if WORDS_BIGENDIAN
-       p->data[14] = (p->length >> 29);
-       p->data[15] = (p->length << 3) & 0xffffffff;
+       p->data[14] = ((uint32)(p->length >> 29));
+       p->data[15] = ((uint32)((p->length << 3) & 0xffffffff));
        #else
-       p->data[14] = swapu32(p->length >> 29);
-       p->data[15] = swapu32(p->length << 3) & 0xffffffff;
+       p->data[14] = swapu32((uint32)(p->length >> 29));
+       p->data[15] = swapu32((uint32)((p->length << 3) & 0xffffffff));
        #endif
 
        sha1Process(p);
@@ -201,6 +239,6 @@ int sha1Digest(register sha1Param *p, uint32 *data)
 {
        sha1Finish(p);
        mp32copy(5, data, p->h);
-       sha1Reset(p);
+       (void) sha1Reset(p);
        return 0;
 }
index 64666e2..5d7d4d5 100644 (file)
@@ -3,7 +3,7 @@
  *
  * SHA-1 hash function, header
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -44,13 +44,17 @@ extern "C" {
 extern BEEDLLAPI const hashFunction sha1;
 
 BEEDLLAPI
-void sha1Process(sha1Param*);
+void sha1Process(sha1Param* p)
+       /*@modifies p */;
 BEEDLLAPI
-int  sha1Reset  (sha1Param*);
+int  sha1Reset  (sha1Param* p)
+       /*@modifies p */;
 BEEDLLAPI
-int  sha1Update (sha1Param*, const byte*, int);
+int  sha1Update (sha1Param* p, const byte* data, int size)
+       /*@modifies p */;
 BEEDLLAPI
-int  sha1Digest (sha1Param*, uint32*);
+int  sha1Digest (sha1Param* p, /*@out@*/ uint32* data)
+       /*@modifies p, data */;
 
 #ifdef __cplusplus
 }
index 2911b35..90937f2 100644 (file)
@@ -3,7 +3,7 @@
  *
  * NIST FIPS 186 pseudo-random generator, code
  *
- * Copyright (c) 1998-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1998, 1999, 2000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #include "mp32opt.h"
 
 #if HAVE_STDLIB_H
-#include <stdlib.h>
+# include <stdlib.h>
+#endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
 #endif
 
 static uint32 fips186hinit[5] = { 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0, 0x67452301 };
@@ -47,30 +50,24 @@ int fips186Setup(fips186Param* fp)
 {
        if (fp)
        {
-               const entropySource* es = entropySourceDefault();
-
                #ifdef _REENTRANT
                # if WIN32
                if (!(fp->lock = CreateMutex(NULL, FALSE, NULL)))
                        return -1;
                # else
-               #  if HAVE_SYNCH_H
+               #  if defined(HAVE_SYNCH_H)
                if (mutex_init(&fp->lock, USYNC_THREAD, (void *) 0))
                        return -1;
-               #  elif HAVE_PTHREAD_H
+               #  elif defined(HAVE_PTHREAD_H)
                if (pthread_mutex_init(&fp->lock, (pthread_mutexattr_t *) 0))
                        return -1;
-               #  else
-               #   error need locking mechanism
                #  endif
                # endif
                #endif
-               if (es)
-               {
-                       fp->digestsize = 0;
 
-                       return es->next(fp->state, FIPS186_STATE_SIZE);
-               }
+               fp->digestsize = 0;
+
+               return entropyGatherNext(fp->state, FIPS186_STATE_SIZE);
        }
        return -1;
 }
@@ -84,32 +81,28 @@ int fips186Seed(fips186Param* fp, const uint32* data, int size)
                if (WaitForSingleObject(fp->lock, INFINITE) != WAIT_OBJECT_0)
                        return -1;
                # else
-               #  if HAVE_SYNCH_H
+               #  if defined(HAVE_SYNCH_H)
                if (mutex_lock(&fp->lock))
                        return -1;
-               #  elif HAVE_PTHREAD_H
+               #  elif defined(HAVE_PTHREAD_H)
                if (pthread_mutex_lock(&fp->lock))
                        return -1;
-               #  else
-               #   error need locking mechanism
                #  endif
                # endif
                #endif
                if (data)
-                       mp32addx(FIPS186_STATE_SIZE, fp->state, size, data);
+                       (void) mp32addx(FIPS186_STATE_SIZE, fp->state, size, data);
                #ifdef _REENTRANT
                # if WIN32
                if (!ReleaseMutex(fp->lock))
                        return -1;
                # else
-               #  if HAVE_SYNCH_H
+               #  if defined(HAVE_SYNCH_H)
                if (mutex_unlock(&fp->lock))
                        return -1;
-               #  elif HAVE_PTHREAD_H
+               #  elif defined(HAVE_PTHREAD_H)
                if (pthread_mutex_unlock(&fp->lock))
                        return -1;
-               #  else
-               #   error need locking mechanism
                #  endif
                # endif
                #endif
@@ -127,14 +120,12 @@ int fips186Next(fips186Param* fp, uint32* data, int size)
                if (WaitForSingleObject(fp->lock, INFINITE) != WAIT_OBJECT_0)
                        return -1;
                # else
-               #  if HAVE_SYNCH_H
+               #  if defined(HAVE_SYNCH_H)
                if (mutex_lock(&fp->lock))
                        return -1;
-               #  elif HAVE_PTHREAD_H
+               #  elif defined(HAVE_PTHREAD_H)
                if (pthread_mutex_lock(&fp->lock))
                        return -1;
-               #  else
-               #   error need locking mechanism
                #  endif
                # endif
                #endif
@@ -144,14 +135,14 @@ int fips186Next(fips186Param* fp, uint32* data, int size)
 
                        if (fp->digestsize == 0)
                        {
-                               fips186init(&fp->param);
+                               (void) fips186init(&fp->param);
                                /* copy the 512 bits of state data into the sha1Param */
                                mp32copy(FIPS186_STATE_SIZE, fp->param.data, fp->state);
                                /* process the data */
                                sha1Process(&fp->param);
                                /* set state to state + digest + 1 mod 2^512 */
-                               mp32addx(FIPS186_STATE_SIZE, fp->state, 5, fp->param.h);
-                               mp32addw(FIPS186_STATE_SIZE, fp->state, 1);
+                               (void) mp32addx(FIPS186_STATE_SIZE, fp->state, 5, fp->param.h);
+                               (void) mp32addw(FIPS186_STATE_SIZE, fp->state, 1);
                                /* we now have 5 words of pseudo-random data */
                                fp->digestsize = 5;
                        }
@@ -167,14 +158,12 @@ int fips186Next(fips186Param* fp, uint32* data, int size)
                if (!ReleaseMutex(fp->lock))
                        return -1;
                # else
-               #  if HAVE_SYNCH_H
+               #  if defined(HAVE_SYNCH_H)
                if (mutex_unlock(&fp->lock))
                        return -1;
-               #  elif HAVE_PTHREAD_H
+               #  elif defined(HAVE_PTHREAD_H)
                if (pthread_mutex_unlock(&fp->lock))
                        return -1;
-               #  else
-               #   error need locking mechanism
                #  endif
                # endif
                #endif
@@ -192,14 +181,12 @@ int fips186Cleanup(fips186Param* fp)
                if (!CloseHandle(fp->lock))
                        return -1;
                # else
-               #  if HAVE_SYNCH_H
+               #  if defined(HAVE_SYNCH_H)
                if (mutex_destroy(&fp->lock))
                        return -1;
-               #  elif HAVE_PTHREAD_H
+               #  elif defined(HAVE_PTHREAD_H)
                if (pthread_mutex_destroy(&fp->lock))
                        return -1;
-               #  else
-               #   error need locking mechanism
                #  endif
                # endif
                #endif
index 3d737c2..a2ef449 100644 (file)
@@ -3,7 +3,7 @@
  *
  * FIPS186 pseudo-random generator, with SHA-1 as H function, header
  *
- * Copyright (c) 1998-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -30,7 +30,8 @@
 
 #ifdef _REENTRANT
 # if WIN32
-#  include <Winbase.h>
+#  include <windows.h>
+#  include <winbase.h>
 # else
 #  if HAVE_SYNCH_H
 #   include <synch.h>
@@ -74,13 +75,17 @@ extern "C" {
 extern BEEDLLAPI const randomGenerator fips186prng;
 
 BEEDLLAPI
-int fips186Setup  (fips186Param*);
+int fips186Setup  (fips186Param* fp)
+       /*@modifies fp */;
 BEEDLLAPI
-int fips186Seed   (fips186Param*, const uint32*, int);
+int fips186Seed   (fips186Param* fp, const uint32* data, int size)
+       /*@modifies fp */;
 BEEDLLAPI
-int fips186Next   (fips186Param*, uint32*, int);
+int fips186Next   (fips186Param* fp, uint32* data, int size)
+       /*@modifies fp, data */;
 BEEDLLAPI
-int fips186Cleanup(fips186Param*);
+int fips186Cleanup(fips186Param* fp)
+       /*@modifies fp */;
 
 #ifdef __cplusplus
 }
diff --git a/beecrypt/gas/.cvsignore b/beecrypt/gas/.cvsignore
new file mode 100644 (file)
index 0000000..540cfea
--- /dev/null
@@ -0,0 +1,19 @@
+.deps
+.depend
+.depend-done
+.libs
+Makefile
+Makefile.in
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+libtool
+ltconfig
+ltmain.sh
+*.o
+*.lo
+stamp-h
+stamp-h.in
index d16618b..862033a 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -89,14 +89,18 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+EXEEXT = @EXEEXT@
 LD = @LD@
 LIBTOOL = @LIBTOOL@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 LN_S = @LN_S@
 MAKEINFO = @MAKEINFO@
 OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 RANLIB = @RANLIB@
+STRIP = @STRIP@
 VERSION = @VERSION@
 ac_cv_have_java = @ac_cv_have_java@
 ac_cv_have_javac = @ac_cv_have_javac@
@@ -112,7 +116,7 @@ DIST_COMMON =  Makefile.am Makefile.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 all: all-redirect
 .SUFFIXES:
@@ -135,7 +139,7 @@ distdir: $(DISTFILES)
        @for file in $(DISTFILES); do \
          d=$(srcdir); \
          if test -d $$d/$$file; then \
-           cp -pr $$/$$file $(distdir)/$$file; \
+           cp -pr $$d/$$file $(distdir)/$$file; \
          else \
            test -f $(distdir)/$$file \
            || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
index 80b6858..4186998 100644 (file)
@@ -3,7 +3,7 @@
  *
  * HMAC message authentication code, code
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 19992000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -33,7 +33,7 @@
 
 int hmacSetup(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param, const uint32* key, int keybits)
 {
-       int keywords = keybits >> 5;
+       int keywords = (keybits >> 5);
 
        if (keywords <= 16)
        {
@@ -41,8 +41,8 @@ int hmacSetup(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param,
 
                if (keywords > 0)
                {
-                       encodeInts((const javaint*) key, (byte*) hp->kxi, keywords);
-                       encodeInts((const javaint*) key, (byte*) hp->kxo, keywords);
+                       (void) encodeInts((const javaint*) key, (byte*) hp->kxi, keywords);
+                       (void) encodeInts((const javaint*) key, (byte*) hp->kxo, keywords);
 
                        for (i = 0; i < keywords; i++)
                        {
@@ -76,7 +76,7 @@ int hmacReset(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param)
        return 0;
 }
 
-int hmacUpdate(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param, const byte* data, int size)
+int hmacUpdate(/*@unused@*/ hmacParam* hp, const hashFunction* hash, hashFunctionParam* param, const byte* data, int size)
 {
        return hash->update(param, data, size);
 }
@@ -90,7 +90,7 @@ int hmacDigest(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param
                return -1;
 
        /* digestsize is in bytes; divide by 4 to get the number of words */
-       encodeInts((const javaint*) data, (byte*) data, hash->digestsize >> 2);
+       (void) encodeInts((const javaint*) data, (byte*) data, hash->digestsize >> 2);
 
        if (hash->update(param, (const byte*) data, hash->digestsize))
                return -1;
index 540e285..b973d31 100644 (file)
@@ -3,7 +3,7 @@
  *
  * HMAC message authentication code, header
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 19992000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -41,13 +41,17 @@ extern "C" {
 /* not used directly as keyed hash function, but instead used as generic methods */
 
 BEEDLLAPI
-int hmacSetup (hmacParam*, const hashFunction*, hashFunctionParam*, const uint32*, int);
+int hmacSetup (hmacParam* hp, const hashFunction* hash, hashFunctionParam* param, const uint32* key, int keybits)
+       /*@modifies hp */;
 BEEDLLAPI
-int hmacReset (hmacParam*, const hashFunction*, hashFunctionParam*);
+int hmacReset (hmacParam* hp, const hashFunction* hash, hashFunctionParam* param)
+       /*@modifies hp */;
 BEEDLLAPI
-int hmacUpdate(hmacParam*, const hashFunction*, hashFunctionParam*, const byte*, int);
+int hmacUpdate(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param, const byte* data, int size)
+       /*@modifies hp */;
 BEEDLLAPI
-int hmacDigest(hmacParam*, const hashFunction*, hashFunctionParam*, uint32*);
+int hmacDigest(hmacParam* hp, const hashFunction* hash, hashFunctionParam* param, /*@out@*/ uint32* data)
+       /*@modifies hp, data */;
 
 #ifdef __cplusplus
 }
index 541847a..24d8e0a 100644 (file)
@@ -31,8 +31,8 @@
 
 typedef struct
 {
-       byte kxi[64];
-       byte kxo[64];
+/*@unused@*/   byte kxi[64];
+/*@unused@*/   byte kxo[64];
        md5Param param;
 } hmacmd5Param;
 
@@ -43,13 +43,17 @@ extern "C" {
 extern BEEDLLAPI const keyedHashFunction hmacmd5;
 
 BEEDLLAPI
-int hmacmd5Setup (hmacmd5Param*, const uint32*, int);
+int hmacmd5Setup (hmacmd5Param* sp, const uint32* key, int keybits)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacmd5Reset (hmacmd5Param*);
+int hmacmd5Reset (hmacmd5Param* sp)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacmd5Update(hmacmd5Param*, const byte*, int);
+int hmacmd5Update(hmacmd5Param* sp, const byte* data, int size)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacmd5Digest(hmacmd5Param*, uint32*);
+int hmacmd5Digest(hmacmd5Param* sp, uint32* data)
+       /*@modifies sp, data @*/;
 
 #ifdef __cplusplus
 }
index dab8000..acc30c7 100644 (file)
@@ -31,8 +31,8 @@
 
 typedef struct
 {
-       byte kxi[64];
-       byte kxo[64];
+/*@unused@*/   byte kxi[64];
+/*@unused@*/   byte kxo[64];
        sha1Param param;
 } hmacsha1Param;
 
@@ -43,13 +43,17 @@ extern "C" {
 extern BEEDLLAPI const keyedHashFunction hmacsha1;
 
 BEEDLLAPI
-int hmacsha1Setup (hmacsha1Param*, const uint32*, int);
+int hmacsha1Setup (hmacsha1Param* sp, const uint32* key, int keybits)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacsha1Reset (hmacsha1Param*);
+int hmacsha1Reset (hmacsha1Param* sp)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacsha1Update(hmacsha1Param*, const byte*, int);
+int hmacsha1Update(hmacsha1Param* sp, const byte* data, int size)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacsha1Digest(hmacsha1Param*, uint32*);
+int hmacsha1Digest(hmacsha1Param* sp, uint32* data)
+       /*@modifies sp, data @*/;
 
 #ifdef __cplusplus
 }
index e59a332..7b42f82 100644 (file)
@@ -31,8 +31,8 @@
 
 typedef struct
 {
-       byte kxi[64];
-       byte kxo[64];
+/*@unused@*/   byte kxi[64];
+/*@unused@*/   byte kxo[64];
        sha256Param param;
 } hmacsha256Param;
 
@@ -43,13 +43,17 @@ extern "C" {
 extern BEEDLLAPI const keyedHashFunction hmacsha256;
 
 BEEDLLAPI
-int hmacsha256Setup (hmacsha256Param*, const uint32*, int);
+int hmacsha256Setup (hmacsha256Param* sp, const uint32* key, int keybits)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacsha256Reset (hmacsha256Param*);
+int hmacsha256Reset (hmacsha256Param* sp)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacsha256Update(hmacsha256Param*, const byte*, int);
+int hmacsha256Update(hmacsha256Param* sp, const byte* data, int size)
+       /*@modifies sp @*/;
 BEEDLLAPI
-int hmacsha256Digest(hmacsha256Param*, uint32*);
+int hmacsha256Digest(hmacsha256Param* sp, uint32* data)
+       /*@modifies sp, data @*/;
 
 #ifdef __cplusplus
 }
index 766732d..2393e14 100644 (file)
@@ -1,7 +1,8 @@
 # ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+# NOTE: Changing this file will not affect anything until you rerun configure.
 #
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 # This program is free software; you can redistribute it and/or modify
@@ -54,8 +55,8 @@ modename="$progname"
 # Constants.
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.3.5
-TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+VERSION=1.4
+TIMESTAMP=" (1.920 2001/04/24 23:26:18)"
 
 default_mode=
 help="Try \`$progname --help' for more information."
@@ -83,12 +84,6 @@ 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
@@ -113,16 +108,16 @@ do
   arg="$1"
   shift
 
-  case "$arg" in
+  case $arg in
   -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
   *) optarg= ;;
   esac
 
   # If the previous option needs an argument, assign it.
   if test -n "$prev"; then
-    case "$prev" in
+    case $prev in
     execute_dlfiles)
-      eval "$prev=\"\$$prev \$arg\""
+      execute_dlfiles="$execute_dlfiles $arg"
       ;;
     *)
       eval "$prev=\$arg"
@@ -135,7 +130,7 @@ do
   fi
 
   # Have we seen a non-optional argument yet?
-  case "$arg" in
+  case $arg in
   --help)
     show_help=yes
     ;;
@@ -146,7 +141,7 @@ do
     ;;
 
   --config)
-    sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
+    sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
     exit 0
     ;;
 
@@ -211,12 +206,12 @@ if test -z "$show_help"; then
 
   # Infer the operation mode.
   if test -z "$mode"; then
-    case "$nonopt" in
+    case $nonopt in
     *cc | *++ | gcc* | *-gcc*)
       mode=link
       for arg
       do
-       case "$arg" in
+       case $arg in
        -c)
           mode=compile
           break
@@ -261,12 +256,13 @@ if test -z "$show_help"; then
   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
+  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=
@@ -274,8 +270,34 @@ if test -z "$show_help"; then
     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
+
+       # 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
+      case $arg in
       -o)
        if test "$user_target" != "no"; then
          $echo "$modename: you cannot specify \`-o' more than once" 1>&2
@@ -288,9 +310,53 @@ if test -z "$show_help"; then
        build_old_libs=yes
        continue
        ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -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/^ //"`
+
+       # 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
+      case $user_target in
       next)
        # The next one is the -o target name
        user_target=yes
@@ -316,10 +382,10 @@ if test -z "$show_help"; then
       lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
 
       # 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
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
        lastarg="\"$lastarg\""
        ;;
       esac
@@ -332,7 +398,7 @@ if test -z "$show_help"; then
       fi
     done
 
-    case "$user_target" in
+    case $user_target in
     set)
       ;;
     no)
@@ -348,7 +414,7 @@ if test -z "$show_help"; then
     # Recognize several different file suffixes.
     # If the user specifies -o file.o, it is replaced with file.lo
     xform='[cCFSfmso]'
-    case "$libobj" in
+    case $libobj in
     *.ada) xform=ada ;;
     *.adb) xform=adb ;;
     *.ads) xform=ads ;;
@@ -363,7 +429,7 @@ if test -z "$show_help"; then
 
     libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
 
-    case "$libobj" in
+    case $libobj in
     *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
     *)
       $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
@@ -387,10 +453,21 @@ if test -z "$show_help"; then
     $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*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
     if test "$compiler_c_o" = no; then
-      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
       lockfile="$output_obj.lock"
       removelist="$removelist $output_obj $lockfile"
       trap "$run $rm $removelist; exit 1" 1 2 15
@@ -402,7 +479,7 @@ if test -z "$show_help"; then
     # 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 ln "$0" "$lockfile" 2>/dev/null; do
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
        $show "Waiting for $lockfile to be removed"
        sleep 2
       done
@@ -434,8 +511,13 @@ compiler."
       # Without this assignment, base_compile gets emptied.
       fbsd_hideous_sh_bug=$base_compile
 
-      # All platforms use -DPIC, to notify preprocessed assembler code.
-      command="$base_compile $srcfile $pic_flag -DPIC"
+      if test "$pic_mode" != no; then
+       # All platforms use -DPIC, to notify preprocessed assembler code.
+       command="$base_compile $srcfile $pic_flag -DPIC"
+      else
+       # Don't build PIC code
+       command="$base_compile $srcfile"
+      fi
       if test "$build_old_libs" = yes; then
        lo_libobj="$libobj"
        dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
@@ -506,7 +588,8 @@ compiler."
       fi
 
       # If we have no pic_flag, then copy the object into place and finish.
-      if test -z "$pic_flag" && test "$build_old_libs" = yes; then
+      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
+        test "$build_old_libs" = yes; then
        # Rename the .lo from within objdir to obj
        if test -f $obj; then
          $show $rm $obj
@@ -546,7 +629,13 @@ compiler."
 
     # Only build a position-dependent object if we build old libraries.
     if test "$build_old_libs" = yes; then
-      command="$base_compile $srcfile"
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $srcfile"
+      else
+       # All platforms use -DPIC, to notify preprocessed assembler code.
+       command="$base_compile $srcfile $pic_flag -DPIC"
+      fi
       if test "$compiler_c_o" = yes; then
        command="$command -o $obj"
        output_obj="$obj"
@@ -612,17 +701,17 @@ compiler."
 
     # Unlock the critical section if it was locked
     if test "$need_locks" != no; then
-      $rm "$lockfile"
+      $run $rm "$lockfile"
     fi
 
     exit 0
     ;;
 
   # libtool link mode
-  link)
+  link | relink)
     modename="$modename: link"
-    case "$host" in
-    *-*-cygwin* | *-*-mingw* | *-*-os2*)
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
       # which system we are compiling for in order to pass an extra
@@ -635,179 +724,12 @@ compiler."
       # -no-undefined on the libtool link line when we can be certain
       # that all symbols are satisfied, otherwise we get a static library.
       allow_undefined=yes
-
-      # This is a source program that is used to create dlls on Windows
-      # Don't remove nor modify the starting and closing comments
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #ifndef __CYGWIN__
-# #  ifdef __CYGWIN32__
-# #    define __CYGWIN__ __CYGWIN32__
-# #  endif
-# #endif
-#
-# #ifdef __cplusplus
-# extern "C" {
-# #endif
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-# #ifdef __cplusplus
-# }
-# #endif
-#
-# #ifdef __CYGWIN__
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# #endif
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-#   __hDllInstance_base = hInst;
-#   return TRUE;
-# }
-# /* ltdll.c ends here */
-      # This is a source program that is used to create import libraries
-      # on Windows for dlls which lack them. Don't remove nor modify the
-      # starting and closing comments
-# /* impgen.c starts here */
-# /*   Copyright (C) 1999 Free Software Foundation, Inc.
-# 
-#  This file is part of GNU libtool.
-# 
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
-# 
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-# 
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#  */
-# 
-#  #include <stdio.h>          /* for printf() */
-#  #include <unistd.h>         /* for open(), lseek(), read() */
-#  #include <fcntl.h>          /* for O_RDONLY, O_BINARY */
-#  #include <string.h>         /* for strdup() */
-# 
-#  static unsigned int
-#  pe_get16 (fd, offset)
-#       int fd;
-#       int offset;
-#  {
-#    unsigned char b[2];
-#    lseek (fd, offset, SEEK_SET);
-#    read (fd, b, 2);
-#    return b[0] + (b[1]<<8);
-#  }
-# 
-#  static unsigned int
-#  pe_get32 (fd, offset)
-#      int fd;
-#      int offset;
-#  {
-#    unsigned char b[4];
-#    lseek (fd, offset, SEEK_SET);
-#    read (fd, b, 4);
-#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-#  }
-# 
-#  static unsigned int
-#  pe_as32 (ptr)
-#       void *ptr;
-#  {
-#    unsigned char *b = ptr;
-#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-#  }
-# 
-#  int
-#  main (argc, argv)
-#      int argc;
-#      char *argv[];
-#  {
-#      int dll;
-#      unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-#      unsigned long export_rva, export_size, nsections, secptr, expptr;
-#      unsigned long name_rvas, nexp;
-#      unsigned char *expdata, *erva;
-#      char *filename, *dll_name;
-# 
-#      filename = argv[1];
-# 
-#      dll = open(filename, O_RDONLY|O_BINARY);
-#      if (!dll)
-#      return 1;
-# 
-#      dll_name = filename;
-#    
-#      for (i=0; filename[i]; i++)
-#      if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
-#          dll_name = filename + i +1;
-# 
-#      pe_header_offset = pe_get32 (dll, 0x3c);
-#      opthdr_ofs = pe_header_offset + 4 + 20;
-#      num_entries = pe_get32 (dll, opthdr_ofs + 92);
-# 
-#      if (num_entries < 1) /* no exports */
-#      return 1;
-# 
-#      export_rva = pe_get32 (dll, opthdr_ofs + 96);
-#      export_size = pe_get32 (dll, opthdr_ofs + 100);
-#      nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-#      secptr = (pe_header_offset + 4 + 20 +
-#            pe_get16 (dll, pe_header_offset + 4 + 16));
-# 
-#      expptr = 0;
-#      for (i = 0; i < nsections; i++)
-#      {
-#      char sname[8];
-#      unsigned long secptr1 = secptr + 40 * i;
-#      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-#      unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-#      unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-#      lseek(dll, secptr1, SEEK_SET);
-#      read(dll, sname, 8);
-#      if (vaddr <= export_rva && vaddr+vsize > export_rva)
-#      {
-#          expptr = fptr + (export_rva - vaddr);
-#          if (export_rva + export_size > vaddr + vsize)
-#              export_size = vsize - (export_rva - vaddr);
-#          break;
-#      }
-#      }
-# 
-#      expdata = (unsigned char*)malloc(export_size);
-#      lseek (dll, expptr, SEEK_SET);
-#      read (dll, expdata, export_size);
-#      erva = expdata - export_rva;
-# 
-#      nexp = pe_as32 (expdata+24);
-#      name_rvas = pe_as32 (expdata+32);
-# 
-#      printf ("EXPORTS\n");
-#      for (i = 0; i<nexp; i++)
-#      {
-#      unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-#      printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-#      }
-# 
-#      return 0;
-#  }
-# /* impgen.c ends here */
       ;;
     *)
       allow_undefined=yes
       ;;
     esac
+    libtool_args="$nonopt"
     compile_command="$nonopt"
     finalize_command="$nonopt"
 
@@ -818,18 +740,12 @@ compiler."
     convenience=
     old_convenience=
     deplibs=
-    linkopts=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
 
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-    else
-      lib_search_path=
-    fi
-    # now prepend the system-specific ones
-    eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-    
     avoid_version=no
     dlfiles=
     dlprefiles=
@@ -839,9 +755,9 @@ compiler."
     export_symbols_regex=
     generated=
     libobjs=
-    link_against_libtool_libs=
     ltlibs=
     module=no
+    no_install=no
     objs=
     prefer_static_libs=no
     preload=no
@@ -858,7 +774,7 @@ compiler."
     # We need to know -static, to get the right output filenames.
     for arg
     do
-      case "$arg" in
+      case $arg in
       -all-static | -static)
        if test "X$arg" = "X-all-static"; then
          if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
@@ -887,17 +803,24 @@ compiler."
     while test $# -gt 0; do
       arg="$1"
       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"
 
       # If the previous option needs an argument, assign it.
       if test -n "$prev"; then
-       case "$prev" in
+       case $prev in
        output)
          compile_command="$compile_command @OUTPUT@"
          finalize_command="$finalize_command @OUTPUT@"
          ;;
        esac
 
-       case "$prev" in
+       case $prev in
        dlfiles|dlprefiles)
          if test "$preload" = no; then
            # Add the symbol object into the linking commands.
@@ -905,7 +828,7 @@ compiler."
            finalize_command="$finalize_command @SYMFILE@"
            preload=yes
          fi
-         case "$arg" in
+         case $arg in
          *.la | *.lo) ;;  # We handle these cases below.
          force)
            if test "$dlself" = no; then
@@ -934,6 +857,7 @@ compiler."
              dlprefiles="$dlprefiles $arg"
            fi
            prev=
+           continue
            ;;
          esac
          ;;
@@ -958,7 +882,7 @@ compiler."
          ;;
        rpath | xrpath)
          # We need an absolute path.
-         case "$arg" in
+         case $arg in
          [\\/]* | [A-Za-z]:[\\/]*) ;;
          *)
            $echo "$modename: only absolute run-paths are allowed" 1>&2
@@ -979,17 +903,32 @@ compiler."
          prev=
          continue
          ;;
+       xcompiler)
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         compile_command="$compile_command $qarg"
+         finalize_command="$finalize_command $qarg"
+         continue
+         ;;
+       xlinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $wl$qarg"
+         prev=
+         compile_command="$compile_command $wl$qarg"
+         finalize_command="$finalize_command $wl$qarg"
+         continue
+         ;;
        *)
          eval "$prev=\"\$arg\""
          prev=
          continue
          ;;
        esac
-      fi
+      fi # test -n $prev
 
       prevarg="$arg"
 
-      case "$arg" in
+      case $arg in
       -all-static)
        if test -n "$link_static_flag"; then
          compile_command="$compile_command $link_static_flag"
@@ -1026,7 +965,7 @@ compiler."
 
       -export-symbols | -export-symbols-regex)
        if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-         $echo "$modename: not more than one -exported-symbols argument allowed"
+         $echo "$modename: more than one -exported-symbols argument is not allowed"
          exit 1
        fi
        if test "X$arg" = "X-export-symbols"; then
@@ -1037,58 +976,65 @@ compiler."
        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"
+         ;;
+       esac
+       continue
+       ;;
+
       -L*)
        dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
        # We need an absolute path.
-       case "$dir" in
+       case $dir in
        [\\/]* | [A-Za-z]:[\\/]*) ;;
        *)
          absdir=`cd "$dir" && pwd`
          if test -z "$absdir"; then
-           $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-           $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-           absdir="$dir"
+           $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+           exit 1
          fi
          dir="$absdir"
          ;;
        esac
-       case " $deplibs " in
-       *" $arg "*) ;;
-       *) deplibs="$deplibs $arg";;
-       esac
-       case " $lib_search_path " in
-       *" $dir "*) ;;
-       *) lib_search_path="$lib_search_path $dir";;
+       case "$deplibs " in
+       *" -L$dir "*) ;;
+       *)
+         deplibs="$deplibs -L$dir"
+         lib_search_path="$lib_search_path $dir"
+         ;;
        esac
-       case "$host" in
-       *-*-cygwin* | *-*-mingw* | *-*-os2*)
-         dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
-         case ":$dllsearchpath:" in
-         ::) dllsearchpath="$dllsearchdir";;
-         *":$dllsearchdir:"*) ;;
-         *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$dir";;
          esac
          ;;
        esac
+       continue
        ;;
 
       -l*)
-       if test "$arg" = "-lc"; then
-         case "$host" in
-         *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
-           # These systems don't actually have c library (as such)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+         case $host in
+         *-*-cygwin* | *-*-pw32* | *-*-beos*)
+           # These systems don't actually have a C or math library (as such)
            continue
            ;;
-         esac
-       elif test "$arg" = "-lm"; then
-         case "$host" in
-         *-*-cygwin* | *-*-beos*)
-           # These systems don't actually have math library (as such)
-           continue
+         *-*-mingw* | *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
            ;;
          esac
        fi
        deplibs="$deplibs $arg"
+       continue
        ;;
 
       -module)
@@ -1096,6 +1042,25 @@ compiler."
        continue
        ;;
 
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # in order for the loader to find any dlls it needs.
+         $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+         $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
       -no-undefined)
        allow_undefined=no
        continue
@@ -1121,7 +1086,7 @@ compiler."
       -R*)
        dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
        # We need an absolute path.
-       case "$dir" in
+       case $dir in
        [\\/]* | [A-Za-z]:[\\/]*) ;;
        *)
          $echo "$modename: only absolute run-paths are allowed" 1>&2
@@ -1136,11 +1101,11 @@ compiler."
        ;;
 
       -static)
-       # If we have no pic_flag, then this is the same as -all-static.
-       if test -z "$pic_flag" && test -n "$link_static_flag"; then
-         compile_command="$compile_command $link_static_flag"
-         finalize_command="$finalize_command $link_static_flag"
-       fi
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
        continue
        ;;
 
@@ -1154,28 +1119,71 @@ compiler."
        continue
        ;;
 
+      -Wc,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+       arg=
+       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"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Wl,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+       arg=
+       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"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       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
-       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
          arg="\"$arg\""
          ;;
        esac
        ;;
 
-      *.o | *.obj | *.a | *.lib)
-       # A standard object.
-       objs="$objs $arg"
-       ;;
-
-      *.lo)
-       # A library object.
+      *.lo | *.$objext)
+       # A library or standard object.
        if test "$prev" = dlfiles; then
-         dlfiles="$dlfiles $arg"
-         if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
+         # This file was specified with -dlopen.
+         if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+           dlfiles="$dlfiles $arg"
            prev=
            continue
          else
@@ -1188,357 +1196,890 @@ compiler."
          # Preload the old-style object.
          dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
          prev=
+       else
+         case $arg in
+         *.lo) libobjs="$libobjs $arg" ;;
+         *) objs="$objs $arg" ;;
+         esac
        fi
-       libobjs="$libobjs $arg"
+       ;;
+
+      *.$libext)
+       # An archive.
+       deplibs="$deplibs $arg"
+       old_deplibs="$old_deplibs $arg"
+       continue
        ;;
 
       *.la)
        # A libtool-controlled library.
 
-       dlname=
-       libdir=
-       library_names=
-       old_library=
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         dlfiles="$dlfiles $arg"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         dlprefiles="$dlprefiles $arg"
+         prev=
+       else
+         deplibs="$deplibs $arg"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+      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"
+      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
+
+    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"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    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\'\`
+    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
+    # 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
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      case "$libs " in
+      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+      esac
+      libs="$libs $deplib"
+    done
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+       passes="conv link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+           exit 1
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode" = prog; then
+       # Determine which files to process
+       case $pass in
+       dlopen)
+         libs="$dlfiles"
+         save_deplibs="$deplibs" # Collect dlpreopened libraries
+         deplibs=
+         ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
+      fi
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -l*)
+         if test "$linkmode" = oldlib && test "$linkmode" = obj; then
+           $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+           continue
+         fi
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         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
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         fi
+         ;; # -l
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test "$pass" = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           ;;
+         prog)
+           if test "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           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
+           ;;
+         *)
+           $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test "$pass" = link; then
+           dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) xrpath="$xrpath $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la) lib="$deplib" ;;
+       *.$libext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           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
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = 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"
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+       if test $found = yes || test -f "$lib"; then :
+       else
+         $echo "$modename: cannot find the library \`$lib'" 1>&2
+         exit 1
+       fi
 
        # Check to see that this really is a libtool archive.
-       if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
        else
-         $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
          exit 1
        fi
 
+       ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$ladir" = "X$lib" && ladir="."
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
        # If the library was installed with an old release of libtool,
        # it will not redefine variable installed.
        installed=yes
 
        # Read the .la file
-       # If there is no directory component, then add one.
-       case "$arg" in
-       */* | *\\*) . $arg ;;
-       *) . ./$arg ;;
+       case $lib in
+       */* | *\\*) . $lib ;;
+       *) . ./$lib ;;
        esac
 
+       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"
+       fi
+
+       if test "$pass" = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+             exit 1
+           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"
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$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
+         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 -z "$linklib"; then
-         $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
+         $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
          exit 1
        fi
 
-       # Find the relevant object directory and library name.
-       name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
-
-       if test "X$installed" = Xyes; then
-         dir="$libdir"
-       else
-         dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-         if test "X$dir" = "X$arg"; then
-           dir="$objdir"
+       # This library was specified with -dlopen.
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+           exit 1
+         fi
+         if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.
+           dlprefiles="$dlprefiles $lib"
          else
-           dir="$dir/$objdir"
+           newdlfiles="$newdlfiles $lib"
          fi
-       fi
-
-       if test -n "$dependency_libs"; then
-         # Extract -R and -L from dependency_libs
-         temp_deplibs=
-         for deplib in $dependency_libs; do
-           case "$deplib" in
-           -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
-                case " $rpath $xrpath " in
-                *" $temp_xrpath "*) ;;
-                *) xrpath="$xrpath $temp_xrpath";;
-                esac;;
-           -L*) case "$compile_command $temp_deplibs " in
-                *" $deplib "*) ;;
-                *) temp_deplibs="$temp_deplibs $deplib";;
-                esac
-                temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
-                case " $lib_search_path " in
-                *" $temp_dir "*) ;;
-                *) lib_search_path="$lib_search_path $temp_dir";;
-                esac
-                ;;
-           *) temp_deplibs="$temp_deplibs $deplib";;
-           esac
-         done
-         dependency_libs="$temp_deplibs"
-       fi
-
-       if test -z "$libdir"; then
-         # It is a libtool convenience library, so add in its objects.
-         convenience="$convenience $dir/$old_library"
-         old_convenience="$old_convenience $dir/$old_library"
-         deplibs="$deplibs$dependency_libs"
-         compile_command="$compile_command $dir/$old_library$dependency_libs"
-         finalize_command="$finalize_command $dir/$old_library$dependency_libs"
          continue
-       fi
+       fi # $pass = dlopen
 
-       # This library was specified with -dlopen.
-       if test "$prev" = dlfiles; then
-         dlfiles="$dlfiles $arg"
-         if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
-           # If there is no dlname, no dlopen support or we're linking statically,
-           # we need to preload.
-           prev=dlprefiles
-         else
-           # We should not create a dependency on this library, but we
-           # may need any libraries it requires.
-           compile_command="$compile_command$dependency_libs"
-           finalize_command="$finalize_command$dependency_libs"
-           prev=
-           continue
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+           $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+           abs_ladir="$ladir"
          fi
-       fi
+         ;;
+       esac
+       laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
 
-       # The library was specified with -dlpreopen.
-       if test "$prev" = dlprefiles; then
+       # 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
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$libdir"
+           absdir="$libdir"
+         fi
+       else
+         dir="$ladir/$objdir"
+         absdir="$abs_ladir/$objdir"
+         # Remove this search path later
+         notinst_path="$notinst_path $abs_ladir"
+       fi # $installed = yes
+       name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+       # 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
-           dlprefiles="$dlprefiles $dir/$old_library"
+           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
-           dlprefiles="$dlprefiles $dir/$linklib"
+           newdlprefiles="$newdlprefiles $dir/$linklib"
          fi
-         prev=
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs"
+         fi
+         continue
        fi
 
-       if test -n "$library_names" &&
-          { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
-         link_against_libtool_libs="$link_against_libtool_libs $arg"
-         if test -n "$shlibpath_var"; then
-           # Make sure the rpath contains only unique directories.
-           case "$temp_rpath " in
-           *" $dir "*) ;;
-           *) temp_rpath="$temp_rpath $dir" ;;
-           esac
+       if test "$linkmode" = prog && test "$pass" != link; then
+         newlib_search_path="$newlib_search_path $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
          fi
 
-         # 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
-             $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-             absdir="$dir"
+         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
+           esac
+           # Need to link against all dependency_libs?
+           if test $linkalldeplibs = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
            fi
-           ;;
-         esac
-         
-         # This is the magic to use -rpath.
-         # Skip directories that are in the system default run-time
-         # search path, unless they have been requested with -R.
-         case " $sys_lib_dlsearch_path " in
-         *" $absdir "*) ;;
-         *)
-           case "$compile_rpath " in
-           *" $absdir "*) ;;
-           *) compile_rpath="$compile_rpath $absdir" 
+           case "$tmp_libs " in
+           *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
            esac
-           ;;
-         esac
+           tmp_libs="$tmp_libs $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
 
-         case " $sys_lib_dlsearch_path " in
-         *" $libdir "*) ;;
-         *)
-           case "$finalize_rpath " in
+       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" ||
+          { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
            *" $libdir "*) ;;
-           *) finalize_rpath="$finalize_rpath $libdir"
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
            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...
 
-         lib_linked=yes
-         case "$hardcode_action" in
-         immediate | unsupported)
-           if test "$hardcode_direct" = no; then
-             compile_command="$compile_command $dir/$linklib"
-             deplibs="$deplibs $dir/$linklib"
-             case "$host" in
-             *-*-cygwin* | *-*-mingw* | *-*-os2*)
-               dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
-               if test -n "$dllsearchpath"; then
-                 dllsearchpath="$dllsearchpath:$dllsearchdir"
-               else
-                 dllsearchpath="$dllsearchdir"
-               fi
-               ;;
-             esac
-           elif test "$hardcode_minus_L" = no; then
-             case "$host" in
-             *-*-sunos*)
-               compile_shlibpath="$compile_shlibpath$dir:"
+         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
+
+         if test "$installed" = no; then
+           notinst_deplibs="$notinst_deplibs $lib"
+           need_relink=yes
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           realname="$2"
+           shift; shift
+           libname=`eval \\$echo \"$libname_spec\"`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin*)
+               major=`expr $current - $age`
+               versuffix="-$major"
                ;;
              esac
-             case "$compile_command " in
-             *" -L$dir "*) ;;
-             *) compile_command="$compile_command -L$dir";;
-             esac
-             compile_command="$compile_command -l$name"
-             deplibs="$deplibs -L$dir -l$name"
-           elif test "$hardcode_shlibpath_var" = no; then
-             case ":$compile_shlibpath:" in
-             *":$dir:"*) ;;
-             *) compile_shlibpath="$compile_shlibpath$dir:";;
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # 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"
+
+           # 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"
+           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"
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n $old_archive_from_expsyms_cmds
+
+         if test "$linkmode" = prog || test "$mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             $echo "$modename: configuration error: unsupported hardcode properties"
+             exit 1
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
              esac
-             compile_command="$compile_command -l$name"
-             deplibs="$deplibs -l$name"
+           fi
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
            else
-             lib_linked=no
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes && \
+                test "$hardcode_minus_L" != yes && \
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+               esac
+             fi
            fi
-           ;;
+         fi
 
-         relink)
+         if test "$linkmode" = prog || test "$mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
            if test "$hardcode_direct" = yes; then
-             compile_command="$compile_command $absdir/$linklib"
-             deplibs="$deplibs $absdir/$linklib"
+             add="$libdir/$linklib"
            elif test "$hardcode_minus_L" = yes; then
-             case "$compile_command " in
-             *" -L$absdir "*) ;;
-             *) compile_command="$compile_command -L$absdir";;
-             esac
-             compile_command="$compile_command -l$name"
-             deplibs="$deplibs -L$absdir -l$name"
+             add_dir="-L$libdir"
+             add="-l$name"
            elif test "$hardcode_shlibpath_var" = yes; then
-             case ":$compile_shlibpath:" in
-             *":$absdir:"*) ;;
-             *) compile_shlibpath="$compile_shlibpath$absdir:";;
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
              esac
-             compile_command="$compile_command -l$name"
-             deplibs="$deplibs -l$name"
+             add="-l$name"
            else
-             lib_linked=no
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             add="-l$name"
            fi
-           ;;
-
-         *)
-           lib_linked=no
-           ;;
-         esac
 
-         if test "$lib_linked" != yes; then
-           $echo "$modename: configuration error: unsupported hardcode properties"
-           exit 1
-         fi
-
-         # Finalize command for both is simple: just hardcode it.
-         if test "$hardcode_direct" = yes; then
-           finalize_command="$finalize_command $libdir/$linklib"
-         elif test "$hardcode_minus_L" = yes; then
-           case "$finalize_command " in
-           *" -L$libdir "*) ;;
-           *) finalize_command="$finalize_command -L$libdir";;
-           esac
-           finalize_command="$finalize_command -l$name"
-         elif test "$hardcode_shlibpath_var" = yes; then
-           case ":$finalize_shlibpath:" in
-           *":$libdir:"*) ;;
-           *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
-           esac
-           finalize_command="$finalize_command -l$name"
-         else
-           # We cannot seem to hardcode it, guess we'll fake it.
-           case "$finalize_command " in
-           *" -L$dir "*) ;;
-           *) finalize_command="$finalize_command -L$libdir";;
-           esac
-           finalize_command="$finalize_command -l$name"
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
          fi
-       else
-         # Transform directly to old archives if we don't build new libraries.
-         if test -n "$pic_flag" && test -z "$old_library"; then
-           $echo "$modename: cannot find static library for \`$arg'" 1>&2
-           exit 1
+       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
          # Here we assume that one of hardcode_direct or hardcode_minus_L
          # is not unsupported.  This is valid on all known static and
          # shared platforms.
          if test "$hardcode_direct" != unsupported; then
            test -n "$old_library" && linklib="$old_library"
-           compile_command="$compile_command $dir/$linklib"
-           finalize_command="$finalize_command $dir/$linklib"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
          else
-           case "$compile_command " in
-           *" -L$dir "*) ;;
-           *) compile_command="$compile_command -L$dir";;
-           esac
-           compile_command="$compile_command -l$name"
-           case "$finalize_command " in
-           *" -L$dir "*) ;;
-           *) finalize_command="$finalize_command -L$dir";;
-           esac
-           finalize_command="$finalize_command -l$name"
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           echo
+           echo "*** Warning: This library needs some functionality provided by $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."
+             if test -z "$global_symbol_pipe"; then
+               echo
+               echo "*** However, this would only work if libtool was able to extract symbol"
+               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               echo "*** not find such a program.  So, this module is probably useless."
+               echo "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           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 -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes || test $build_old_libs = yes ||
+              test $link_static = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) xrpath="$xrpath $temp_xrpath";;
+                  esac;;
+             *) temp_deplibs="$temp_deplibs $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
          fi
-       fi
-
-       # Add in any libraries that this one depends upon.
-       compile_command="$compile_command$dependency_libs"
-       finalize_command="$finalize_command$dependency_libs"
-       continue
-       ;;
 
-      # Some other compiler argument.
-      *)
-       # Unknown arguments in both finalize_command and compile_command need
-       # to be aesthetically quoted because they are evaled later.
-       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-       case "$arg" in
-       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
-         arg="\"$arg\""
-         ;;
-       esac
-       ;;
-      esac
+         newlib_search_path="$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"
+         done
 
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-       compile_command="$compile_command $arg"
-       finalize_command="$finalize_command $arg"
+         if test "$link_all_deplibs" != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+               test "X$dir" = "X$deplib" && dir="."
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if grep "^installed=no" $deplib > /dev/null; then
+                 path="-L$absdir/$objdir"
+               else
+                 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 if test -z "$libdir"; then
+                   $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                   exit 1
+                 fi
+                 if test "$absdir" != "$libdir"; then
+                   $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+                 fi
+                 path="-L$absdir"
+               fi
+               ;;
+             *) continue ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$deplibs $path" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
       fi
-    done
-
-    if test -n "$prev"; then
-      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
-      $echo "$help" 1>&2
-      exit 1
-    fi
-
-    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"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
-    libobjs_save="$libobjs"
-
-    case "$output" in
-    "")
-      $echo "$modename: you must specify an output file" 1>&2
-      $echo "$help" 1>&2
-      exit 1
-      ;;
+      if test "$pass" != dlopen; then
+       test "$pass" != scan && dependency_libs="$newdependency_libs"
+       if test "$pass" != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) lib_search_path="$lib_search_path $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
 
-    *.a | *.lib)
-      if test -n "$link_against_libtool_libs"; then
-       $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
-       exit 1
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           *)
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) tmp_libs="$tmp_libs $deplib" ;;
+             esac
+             ;;
+           *) tmp_libs="$tmp_libs $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
       fi
-
-      if test -n "$deplibs"; then
-       $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+       libs="$deplibs" # reset libs
+       deplibs=
       fi
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      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
       fi
@@ -1566,11 +2107,12 @@ compiler."
       # Now set the variables for building old libraries.
       build_libtool_libs=no
       oldlibs="$output"
+      objs="$objs$old_deplibs"
       ;;
 
-    *.la)
+    lib)
       # Make sure we only generate libraries of the form `libNAME.la'.
-      case "$outputname" in
+      case $outputname in
       lib*)
        name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
        eval libname=\"$libname_spec\"
@@ -1591,26 +2133,20 @@ compiler."
        ;;
       esac
 
-      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
-
       if test -n "$objs"; then
-       $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
-       exit 1
-      fi
-
-      # How the heck are we supposed to write a wrapper for a shared library?
-      if test -n "$link_against_libtool_libs"; then
-        $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
-        exit 1
+       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
+       else
+         echo
+         echo "*** Warning: Linking the shared library $output against the non-libtool"
+         echo "*** objects $objs is not portable!"
+         libobjs="$libobjs $objs"
+       fi
       fi
 
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-       $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
+      if test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
       fi
 
       set dummy $rpath
@@ -1628,7 +2164,6 @@ compiler."
          build_libtool_libs=convenience
          build_old_libs=yes
        fi
-       dependency_libs="$deplibs"
 
        if test -n "$vinfo"; then
          $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
@@ -1655,8 +2190,8 @@ compiler."
        age="$4"
 
        # Check that each of the things are valid numbers.
-       case "$current" in
-       0 | [1-9] | [1-9][0-9]*) ;;
+       case $current in
+       0 | [1-9] | [1-9][0-9] | [1-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
@@ -1664,8 +2199,8 @@ compiler."
          ;;
        esac
 
-       case "$revision" in
-       0 | [1-9] | [1-9][0-9]*) ;;
+       case $revision in
+       0 | [1-9] | [1-9][0-9] | [1-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
@@ -1673,8 +2208,8 @@ compiler."
          ;;
        esac
 
-       case "$age" in
-       0 | [1-9] | [1-9][0-9]*) ;;
+       case $age in
+       0 | [1-9] | [1-9][0-9] | [1-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
@@ -1692,12 +2227,31 @@ compiler."
        major=
        versuffix=
        verstring=
-       case "$version_type" in
+       case $version_type in
        none) ;;
 
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         minor_current=`expr $current + 1`
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current";
+         ;;
+
        irix)
          major=`expr $current - $age + 1`
-         versuffix="$major.$revision"
          verstring="sgi$major.$revision"
 
          # Add in all the interfaces that we are compatible with.
@@ -1707,6 +2261,10 @@ compiler."
            loop=`expr $loop - 1`
            verstring="sgi$major.$iface:$verstring"
          done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
          ;;
 
        linux)
@@ -1736,21 +2294,11 @@ compiler."
          versuffix=".$current.$revision"
          ;;
 
-       freebsd-aout)
-         major=".$current"
-         versuffix=".$current.$revision";
-         ;;
-
-       freebsd-elf)
-         major=".$current"
-         versuffix=".$current";
-         ;;
-
        windows)
-         # Like Linux, but with '-' rather than '.', since we only
-         # want one extension on Windows 95.
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
          major=`expr $current - $age`
-         versuffix="-$major-$age-$revision"
+         versuffix="-$major"
          ;;
 
        *)
@@ -1777,7 +2325,7 @@ compiler."
          versuffix=
          verstring=""
        fi
-       
+
        # Check to see if the archive will have undefined symbols.
        if test "$allow_undefined" = yes; then
          if test "$allow_undefined_flag" = unsupported; then
@@ -1789,34 +2337,12 @@ compiler."
          # Don't allow undefined symbols.
          allow_undefined_flag="$no_undefined_flag"
        fi
-
-       dependency_libs="$deplibs"
-       case "$host" in
-       *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
-         # these systems don't actually have a c library (as such)!
-         ;;
-        *-*-rhapsody*)
-         # rhapsody is a little odd...
-         deplibs="$deplibs -framework System"
-         ;;
-       *)
-         # Add libc to deplibs on all other systems.
-         deplibs="$deplibs -lc"
-         ;;
-       esac
       fi
 
-      # Create the output directory, or remove our outputs if we need to.
-      if test -d $output_objdir; then
+      if test "$mode" != relink; then
+       # Remove our outputs.
        $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
        $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
-      else
-       $show "$mkdir $output_objdir"
-       $run $mkdir $output_objdir
-       status=$?
-       if test $status -ne 0 && test ! -d $output_objdir; then
-         exit $status
-       fi
       fi
 
       # Now set the variables for building old libraries.
@@ -1827,7 +2353,70 @@ compiler."
        oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$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
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         temp_xrpath="$temp_xrpath -R$libdir"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+       if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) dlfiles="$dlfiles $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) dlprefiles="$dlprefiles $lib" ;;
+       esac
+      done
+
       if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           deplibs="$deplibs -framework System"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test "$build_libtool_need_lc" = "yes"; then
+             deplibs="$deplibs -lc"
+           fi
+           ;;
+         esac
+       fi
+
        # Transform deplibs into only deplibs that can be linked in shared.
        name_save=$name
        libname_save=$libname
@@ -1842,7 +2431,7 @@ compiler."
        major=""
        newdeplibs=
        droppeddeps=no
-       case "$deplibs_check_method" in
+       case $deplibs_check_method in
        pass_all)
          # Don't check for shared/static.  Everything works.
          # This might be a little naive.  We might want to check
@@ -1867,7 +2456,7 @@ EOF
            for i in $deplibs; do
              name="`expr $i : '-l\(.*\)'`"
              # If $name is empty we are operating on a -L argument.
-             if test "$name" != "" ; then
+             if test -n "$name" && test "$name" != "0"; then
                libname=`eval \\$echo \"$libname_spec\"`
                deplib_matches=`eval \\$echo \"$library_names_spec\"`
                set dummy $deplib_matches
@@ -1892,7 +2481,7 @@ EOF
            for i in $deplibs; do
              name="`expr $i : '-l\(.*\)'`"
             # If $name is empty we are operating on a -L argument.
-             if test "$name" != "" ; then
+             if test -n "$name" && test "$name" != "0"; then
                $rm conftest
                $CC -o conftest conftest.c $i
                # Did it work?
@@ -1928,19 +2517,19 @@ EOF
          ;;
        file_magic*)
          set dummy $deplibs_check_method
-         file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
+         file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
          for a_deplib in $deplibs; do
            name="`expr $a_deplib : '-l\(.*\)'`"
            # If $name is empty we are operating on a -L argument.
-           if test "$name" != "" ; then
+           if test -n "$name" && test "$name" != "0"; then
              libname=`eval \\$echo \"$libname_spec\"`
-             for i in $lib_search_path; do
+             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
                      # Follow soft links.
                      if ls -lLd "$potent_lib" 2>/dev/null \
                         | grep " -> " >/dev/null; then
-                       continue 
+                       continue
                      fi
                      # The statement above tries to avoid entering an
                      # endless loop below, in case of cyclic links.
@@ -1950,7 +2539,7 @@ EOF
                      potlib="$potent_lib"
                      while test -h "$potlib" 2>/dev/null; do
                        potliblink=`ls -ld $potlib | sed 's/.* -> //'`
-                       case "$potliblink" in
+                       case $potliblink in
                        [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
                        *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
                        esac
@@ -1978,6 +2567,40 @@ EOF
            fi
          done # Gone through all deplibs.
          ;;
+       match_pattern*)
+         set dummy $deplibs_check_method
+         match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+           if test -n "$name" && test "$name" != "0"; then
+             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
+               done
+             done
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               echo "*** Warning: This library needs some functionality provided by $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."
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
        none | unknown | *)
          newdeplibs=""
          if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
@@ -2000,6 +2623,13 @@ EOF
        libname=$libname_save
        name=$name_save
 
+       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 /'`
+         ;;
+       esac
+
        if test "$droppeddeps" = yes; then
          if test "$module" = yes; then
            echo
@@ -2025,6 +2655,21 @@ EOF
            echo "*** The inter-library dependencies that have been dropped here will be"
            echo "*** automatically added whenever a program is linked with this library"
            echo "*** or is declared to -dlopen it."
+
+           if test $allow_undefined = no; then
+             echo
+             echo "*** Since this library must not contain undefined symbols,"
+             echo "*** because either the platform does not support them or"
+             echo "*** it was explicitly requested with -no-undefined,"
+             echo "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
          fi
        fi
        # Done checking deplibs!
@@ -2035,9 +2680,64 @@ EOF
       library_names=
       old_library=
       dlname=
-      
+
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               dep_rpath="$dep_rpath $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) perm_rpath="$perm_rpath $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             rpath="$rpath$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath="$finalize_shlibpath"
+       test "$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 library_names=\"$library_names_spec\"
        set dummy $library_names
@@ -2049,6 +2749,7 @@ EOF
        else
          soname="$realname"
        fi
+       test -z "$dlname" && dlname=$soname
 
        lib="$output_objdir/$realname"
        for link
@@ -2120,7 +2821,7 @@ EOF
 
            for xlib in $convenience; do
              # Extract the objects.
-             case "$xlib" in
+             case $xlib in
              [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
              *) xabs=`pwd`"/$xlib" ;;
              esac
@@ -2145,7 +2846,12 @@ EOF
 
        if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
          eval flag=\"$thread_safe_flag_spec\"
-         linkopts="$linkopts $flag"
+         linker_flags="$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 $?
        fi
 
        # Do each of the archive commands.
@@ -2162,6 +2868,12 @@ EOF
        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
+       fi
+
        # Create links to the real library.
        for linkname in $linknames; do
          if test "$realname" != "$linkname"; then
@@ -2178,12 +2890,7 @@ EOF
       fi
       ;;
 
-    *.lo | *.o | *.obj)
-      if test -n "$link_against_libtool_libs"; then
-       $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
-       exit 1
-      fi
-
+    obj)
       if test -n "$deplibs"; then
        $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
       fi
@@ -2208,9 +2915,9 @@ EOF
        $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
       fi
 
-      case "$output" in
+      case $output in
       *.lo)
-       if test -n "$objs"; then
+       if test -n "$objs$old_deplibs"; then
          $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
          exit 1
        fi
@@ -2234,7 +2941,7 @@ EOF
       gentop=
       # reload_cmds runs $LD directly, so let us get rid of
       # -Wl from whole_archive_flag_spec
-      wl= 
+      wl=
 
       if test -n "$convenience"; then
        if test -n "$whole_archive_flag_spec"; then
@@ -2253,7 +2960,7 @@ EOF
 
          for xlib in $convenience; do
            # Extract the objects.
-           case "$xlib" in
+           case $xlib in
            [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
            *) xabs=`pwd`"/$xlib" ;;
            esac
@@ -2277,7 +2984,7 @@ EOF
       fi
 
       # Create the old-style object.
-      reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
+      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
 
       output="$obj"
       eval cmds=\"$reload_cmds\"
@@ -2312,7 +3019,7 @@ EOF
        exit 0
       fi
 
-      if test -n "$pic_flag"; then
+      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"
@@ -2348,8 +3055,10 @@ EOF
       exit 0
       ;;
 
-    # Anything else should be a program.
-    *)
+    prog)
+      case $host in
+       *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
       if test -n "$vinfo"; then
        $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
       fi
@@ -2359,20 +3068,27 @@ EOF
       fi
 
       if test "$preload" = yes; then
-       if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
+       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
       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 /'`
+       ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
       if test -n "$rpath$xrpath"; then
        # If the user specified any rpath flags, then add them.
        for libdir in $rpath $xrpath; do
          # This is the magic to use -rpath.
-         case "$compile_rpath " in
-         *" $libdir "*) ;;
-         *) compile_rpath="$compile_rpath $libdir" ;;
-         esac
          case "$finalize_rpath " in
          *" $libdir "*) ;;
          *) finalize_rpath="$finalize_rpath $libdir" ;;
@@ -2390,7 +3106,7 @@ EOF
              hardcode_libdirs="$libdir"
            else
              # Just accumulate the unique libdirs.
-             case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
              *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
                ;;
              *)
@@ -2408,6 +3124,14 @@ EOF
          *) perm_rpath="$perm_rpath $libdir" ;;
          esac
        fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$libdir";;
+         esac
+         ;;
+       esac
       done
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
@@ -2426,7 +3150,7 @@ EOF
              hardcode_libdirs="$libdir"
            else
              # Just accumulate the unique libdirs.
-             case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
              *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
                ;;
              *)
@@ -2453,23 +3177,6 @@ EOF
       fi
       finalize_rpath="$rpath"
 
-      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-      if test "X$output_objdir" = "X$output"; then
-       output_objdir="$objdir"
-      else
-       output_objdir="$output_objdir/$objdir"
-      fi
-
-      # Create the binary in the object directory, then wrap it.
-      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
-
       if test -n "$libobjs" && test "$build_old_libs" = yes; then
        # Transform all the library objects into standard objects.
        compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
@@ -2486,7 +3193,7 @@ EOF
       fi
 
       if test -n "$dlsyms"; then
-       case "$dlsyms" in
+       case $dlsyms in
        "") ;;
        *.c)
          # Discover the nlist of each of the dlfiles.
@@ -2518,7 +3225,7 @@ extern \"C\" {
            test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
 
            # Add our own program objects to the symbol list.
-           progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+           progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
            for arg in $progfiles; do
              $show "extracting global C symbols from \`$arg'"
              $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
@@ -2528,7 +3235,7 @@ extern \"C\" {
              $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"'
@@ -2617,13 +3324,13 @@ static const void *lt_preloaded_setup() {
          fi
 
          pic_flag_for_symtable=
-         case "$host" in
+         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*)\r
+         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
            case "$compile_command " in
            *" -static "*) ;;
            *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
@@ -2662,7 +3369,7 @@ static const void *lt_preloaded_setup() {
        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
       fi
 
-      if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
        # Replace the output file specification.
        compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
        link_command="$compile_command$compile_rpath"
@@ -2671,7 +3378,7 @@ static const void *lt_preloaded_setup() {
        $show "$link_command"
        $run eval "$link_command"
        status=$?
-       
+
        # Delete the generated files.
        if test -n "$dlsyms"; then
          $show "$rm $output_objdir/${outputname}S.${objext}"
@@ -2685,7 +3392,7 @@ static const void *lt_preloaded_setup() {
        # We should set the shlibpath_var
        rpath=
        for dir in $temp_rpath; do
-         case "$dir" in
+         case $dir in
          [\\/]* | [A-Za-z]:[\\/]*)
            # Absolute path.
            rpath="$rpath$dir:"
@@ -2727,11 +3434,24 @@ static const void *lt_preloaded_setup() {
        fi
       fi
 
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $run $rm $output
+       # Link the executable and exit
+       $show "$link_command"
+       $run eval "$link_command" || exit $?
+       exit 0
+      fi
+
       if test "$hardcode_action" = relink; then
        # Fast installation is not supported
        link_command="$compile_var$compile_command$compile_rpath"
        relink_command="$finalize_var$finalize_command$finalize_rpath"
-       
+
        $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
        $echo "$modename: \`$output' will be relinked during installation" 1>&2
       else
@@ -2751,7 +3471,7 @@ static const void *lt_preloaded_setup() {
 
       # Replace the output file specification.
       link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-      
+
       # Delete the old output files.
       $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
 
@@ -2763,12 +3483,24 @@ static const void *lt_preloaded_setup() {
 
       # 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"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+           relink_command="$var=\"$var_value\"; export $var; $relink_command"
+         fi
+       done
+       relink_command="cd `pwd`; $relink_command"
        relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
       fi
 
       # Quote $echo for shipping.
       if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
-       case "$0" in
+       case $0 in
        [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
        *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
        esac
@@ -2784,6 +3516,11 @@ static const void *lt_preloaded_setup() {
        case $output in
          *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
        esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*) exeext=.exe ;;
+         *) exeext= ;;
+       esac
        $rm $output
        trap "$rm $output; exit 1" 1 2 15
 
@@ -2813,7 +3550,7 @@ relink_command=\"$relink_command\"
 # This environment variable determines our operation mode.
 if test \"\$libtool_install_magic\" = \"$magic\"; then
   # install mode needs the following variable:
-  link_against_libtool_libs='$link_against_libtool_libs'
+  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
@@ -2846,7 +3583,7 @@ else
     # If there was a directory component, then change thisdir.
     if test \"x\$destdir\" != \"x\$file\"; then
       case \"\$destdir\" in
-      [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
       *) thisdir=\"\$thisdir/\$destdir\" ;;
       esac
     fi
@@ -2862,9 +3599,9 @@ else
 
        if test "$fast_install" = yes; then
          echo >> $output "\
-  program=lt-'$outputname'
+  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
@@ -2881,7 +3618,7 @@ else
 
     # relink executable if necessary
     if test -n \"\$relink_command\"; then
-      if (cd \"\$thisdir\" && eval \$relink_command); then :
+      if (eval \$relink_command); then :
       else
        $rm \"\$progdir/\$file\"
        exit 1
@@ -2931,9 +3668,9 @@ else
       # Run the actual program with our arguments.
 "
        case $host in
-         # win32 systems need to use the prog path for dll
-         # lookup to work
-       *-*-cygwin*)
+       # win32 systems need to use the prog path for dll
+       # lookup to work
+       *-*-cygwin* | *-*-pw32*)
          $echo >> $output "\
       exec \$progdir/\$program \${1+\"\$@\"}
 "
@@ -2987,7 +3724,7 @@ fi\
          oldobjs="$libobjs_save"
          build_libtool_libs=no
        else
-         oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+         oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
        fi
        addlibs="$old_convenience"
       fi
@@ -3003,11 +3740,11 @@ fi\
          exit $status
        fi
        generated="$generated $gentop"
-         
+
        # Add in members from convenience archives.
        for xlib in $addlibs; do
          # Extract the objects.
-         case "$xlib" in
+         case $xlib in
          [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
          *) xabs=`pwd`"/$xlib" ;;
          esac
@@ -3068,19 +3805,26 @@ fi\
     fi
 
     # Now create the libtool archive.
-    case "$output" in
+    case $output in
     *.la)
       old_library=
       test "$build_old_libs" = yes && old_library="$libname.$libext"
       $show "creating $output"
 
-      if test -n "$xrpath"; then
-       temp_xrpath=
-       for libdir in $xrpath; do
-         temp_xrpath="$temp_xrpath -R$libdir"
-       done
-       dependency_libs="$temp_xrpath $dependency_libs"
-      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"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+         relink_command="$var=\"$var_value\"; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
 
       # Only create the output if not a dry run.
       if test -z "$run"; then
@@ -3090,8 +3834,52 @@ fi\
              break
            fi
            output="$output_objdir/$outputname"i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               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"
+               ;;
+             *) newdependency_libs="$newdependency_libs $deplib" ;;
+             esac
+           done
+           dependency_libs="$newdependency_libs"
+           newdlfiles=
+           for lib in $dlfiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit 1
+             fi
+             newdlfiles="$newdlfiles $libdir/$name"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit 1
+             fi
+             newdlprefiles="$newdlprefiles $libdir/$name"
+           done
+           dlprefiles="$newdlprefiles"
          fi
          $rm $output
+         # place dlname in correct position for cygwin
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+         esac
          $echo > $output "\
 # $outputname - a libtool library file
 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
@@ -3100,7 +3888,7 @@ fi\
 # It is necessary for linking the library.
 
 # The name that we can dlopen(3).
-dlname='$dlname'
+dlname='$tdlname'
 
 # Names of this library.
 library_names='$library_names'
@@ -3119,16 +3907,23 @@ revision=$revision
 # Is this an already installed library?
 installed=$installed
 
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
 # Directory that this library needs to be installed in:
-libdir='$install_libdir'\
-"
+libdir='$install_libdir'"
+         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 $?
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
       ;;
     esac
     exit 0
@@ -3140,10 +3935,12 @@ libdir='$install_libdir'\
 
     # 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; then
+    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
+      case $arg in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
        arg="\"$arg\""
        ;;
@@ -3159,7 +3956,7 @@ libdir='$install_libdir'\
     # 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
+    case $arg in
     *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \      ]*|*]*)
       arg="\"$arg\""
       ;;
@@ -3182,7 +3979,7 @@ libdir='$install_libdir'\
        continue
       fi
 
-      case "$arg" in
+      case $arg in
       -d) isdir=yes ;;
       -f) prev="-f" ;;
       -g) prev="-g" ;;
@@ -3207,7 +4004,7 @@ libdir='$install_libdir'\
 
       # Aesthetically quote the argument.
       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-      case "$arg" in
+      case $arg in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
        arg="\"$arg\""
        ;;
@@ -3258,11 +4055,11 @@ libdir='$install_libdir'\
        exit 1
       fi
     fi
-    case "$destdir" in
+    case $destdir in
     [\\/]* | [A-Za-z]:[\\/]*) ;;
     *)
       for file in $files; do
-       case "$file" in
+       case $file in
        *.lo) ;;
        *)
          $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
@@ -3284,8 +4081,8 @@ libdir='$install_libdir'\
     for file in $files; do
 
       # Do each installation.
-      case "$file" in
-      *.a | *.lib)
+      case $file in
+      *.$libext)
        # Do the static libraries later.
        staticlibs="$staticlibs $file"
        ;;
@@ -3301,8 +4098,9 @@ libdir='$install_libdir'\
 
        library_names=
        old_library=
+       relink_command=
        # If there is no directory component, then add one.
-       case "$file" in
+       case $file in
        */* | *\\*) . $file ;;
        *) . ./$file ;;
        esac
@@ -3321,10 +4119,20 @@ libdir='$install_libdir'\
          esac
        fi
 
-       dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
+       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
+           continue
+         fi
+       fi
+
        # See the names of the shared library.
        set dummy $library_names
        if test -n "$2"; then
@@ -3332,9 +4140,16 @@ libdir='$install_libdir'\
          shift
          shift
 
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
+
          # Install the shared library and build the symlinks.
-         $show "$install_prog $dir/$realname $destdir/$realname"
-         $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
+         $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.
@@ -3381,11 +4196,11 @@ libdir='$install_libdir'\
        fi
 
        # Deduce the name of the destination old-style object file.
-       case "$destfile" in
+       case $destfile in
        *.lo)
          staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
          ;;
-       *.o | *.obj)
+       *.$objext)
          staticdest="$destfile"
          destfile=
          ;;
@@ -3424,39 +4239,46 @@ libdir='$install_libdir'\
 
        # 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
-         link_against_libtool_libs=
+         notinst_deplibs=
          relink_command=
 
          # If there is no directory component, then add one.
-         case "$file" in
+         case $file in
          */* | *\\*) . $file ;;
          *) . ./$file ;;
          esac
 
          # Check the variables that should have been set.
-         if test -z "$link_against_libtool_libs"; then
+         if test -z "$notinst_deplibs"; then
            $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
            exit 1
          fi
 
          finalize=yes
-         for lib in $link_against_libtool_libs; do
+         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
+             case $lib in
              */* | *\\*) . $lib ;;
              *) . ./$lib ;;
              esac
            fi
-           libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
+           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
@@ -3468,6 +4290,7 @@ libdir='$install_libdir'\
                $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'`
@@ -3489,6 +4312,23 @@ libdir='$install_libdir'\
          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"
@@ -3505,6 +4345,11 @@ libdir='$install_libdir'\
       $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='~'
@@ -3565,7 +4410,7 @@ libdir='$install_libdir'\
     fi
 
     # Exit here if they wanted silent mode.
-    test "$show" = : && exit 0
+    test "$show" = ":" && exit 0
 
     echo "----------------------------------------------------------------------"
     echo "Libraries have been installed in:"
@@ -3575,7 +4420,7 @@ libdir='$install_libdir'\
     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 \`-LLIBDIR'"
+    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"
@@ -3625,7 +4470,7 @@ libdir='$install_libdir'\
       fi
 
       dir=
-      case "$file" in
+      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 :
@@ -3640,7 +4485,7 @@ libdir='$install_libdir'\
        library_names=
 
        # If there is no directory component, then add one.
-       case "$file" in
+       case $file in
        */* | *\\*) . $file ;;
        *) . ./$file ;;
        esac
@@ -3695,13 +4540,13 @@ libdir='$install_libdir'\
     args=
     for file
     do
-      case "$file" in
+      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
+         case $file in
          */* | *\\*) . $file ;;
          *) . ./$file ;;
          esac
@@ -3718,8 +4563,8 @@ libdir='$install_libdir'\
 
     if test -z "$run"; then
       if test -n "$shlibpath_var"; then
-        # Export the shlibpath_var.
-        eval "export $shlibpath_var"
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
       fi
 
       # Restore saved enviroment variables
@@ -3738,23 +4583,30 @@ libdir='$install_libdir'\
     else
       # Display what would be done.
       if test -n "$shlibpath_var"; then
-        eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
-        $echo "export $shlibpath_var"
+       eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+       $echo "export $shlibpath_var"
       fi
       $echo "$cmd$args"
       exit 0
     fi
     ;;
 
-  # libtool uninstall mode
-  uninstall)
-    modename="$modename: uninstall"
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
     rm="$nonopt"
     files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
 
     for arg
     do
-      case "$arg" in
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
       -*) rm="$rm $arg" ;;
       *) files="$files $arg" ;;
       esac
@@ -3766,14 +4618,42 @@ libdir='$install_libdir'\
       exit 1
     fi
 
+    rmdirs=
+
     for file in $files; do
       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-      test "X$dir" = "X$file" && dir=.
+      if test "X$dir" = "X$file"; then
+       dir=.
+       objdir="$objdir"
+      else
+       objdir="$dir/$objdir"
+      fi
       name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+       case " $rmdirs " in
+         *" $objdir "*) ;;
+         *) rmdirs="$rmdirs $objdir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+        || (test -h "$file") >/dev/null 2>&1 \
+       || test -f "$file"; then
+        :
+      elif test -d "$file"; then
+        exit_status=1
+       continue
+      elif test "$rmforce" = yes; then
+        continue
+      fi
 
       rmfiles="$file"
 
-      case "$name" in
+      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
@@ -3781,38 +4661,43 @@ libdir='$install_libdir'\
 
          # Delete the libtool libraries and symlinks.
          for n in $library_names; do
-           rmfiles="$rmfiles $dir/$n"
+           rmfiles="$rmfiles $objdir/$n"
          done
-         test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
-
-         $show "$rm $rmfiles"
-         $run $rm $rmfiles
-
-         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
+         test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+         test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+         if test $mode = uninstall; then
+           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"
-             $show "$cmd"
-             $run eval "$cmd"
-           done
-           IFS="$save_ifs"
-         fi
+           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
+           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"
-             $show "$cmd"
-             $run eval "$cmd"
-           done
-           IFS="$save_ifs"
+           fi
+           # FIXME: should reinstall the best remaining shared library.
          fi
-
-         # FIXME: should reinstall the best remaining shared library.
        fi
        ;;
 
@@ -3821,17 +4706,35 @@ libdir='$install_libdir'\
          oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
          rmfiles="$rmfiles $dir/$oldobj"
        fi
-       $show "$rm $rmfiles"
-       $run $rm $rmfiles
        ;;
 
       *)
-       $show "$rm $rmfiles"
-       $run $rm $rmfiles
+       # 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
+
+         rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+         if test "$fast_install" = yes && test -n "$relink_command"; then
+           rmfiles="$rmfiles $objdir/lt-$name"
+         fi
+       fi
        ;;
       esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
     done
-    exit 0
+
+    # 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
+      fi
+    done
+
+    exit $exit_status
     ;;
 
   "")
@@ -3847,7 +4750,7 @@ libdir='$install_libdir'\
 fi # test -z "$show_help"
 
 # We need to display help for each of the modes.
-case "$mode" in
+case $mode in
 "") $echo \
 "Usage: $modename [OPTION]... [MODE-ARG]...
 
@@ -3866,6 +4769,7 @@ Provide generalized library-building support services.
 
 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
@@ -3878,6 +4782,20 @@ 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
@@ -3887,6 +4805,8 @@ 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
@@ -3966,6 +4886,8 @@ The following components of LINK-COMMAND are treated specially:
   -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
   -release RELEASE  specify package release information
diff --git a/beecrypt/masm/.cvsignore b/beecrypt/masm/.cvsignore
new file mode 100644 (file)
index 0000000..540cfea
--- /dev/null
@@ -0,0 +1,19 @@
+.deps
+.depend
+.depend-done
+.libs
+Makefile
+Makefile.in
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+libtool
+ltconfig
+ltmain.sh
+*.o
+*.lo
+stamp-h
+stamp-h.in
index 5eff34d..12c0068 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -89,14 +89,18 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+EXEEXT = @EXEEXT@
 LD = @LD@
 LIBTOOL = @LIBTOOL@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 LN_S = @LN_S@
 MAKEINFO = @MAKEINFO@
 OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 RANLIB = @RANLIB@
+STRIP = @STRIP@
 VERSION = @VERSION@
 ac_cv_have_java = @ac_cv_have_java@
 ac_cv_have_javac = @ac_cv_have_javac@
@@ -112,7 +116,7 @@ DIST_COMMON =  Makefile.am Makefile.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 all: all-redirect
 .SUFFIXES:
@@ -135,7 +139,7 @@ distdir: $(DISTFILES)
        @for file in $(DISTFILES); do \
          d=$(srcdir); \
          if test -d $$d/$$file; then \
-           cp -pr $$/$$file $(distdir)/$$file; \
+           cp -pr $$d/$$file $(distdir)/$$file; \
          else \
            test -f $(distdir)/$$file \
            || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
index e87db2c..6561197 100644 (file)
@@ -31,7 +31,7 @@
 
 static uint32 md5hinit[4] = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 };
 
-const hashFunction md5 = { "MD5", sizeof(md5Param), 4 * sizeof(uint32), (hashFunctionReset) md5Reset, (hashFunctionUpdate) md5Update, (hashFunctionDigest) md5Digest };
+const hashFunction md5 = { "MD5", sizeof(md5Param), 64, 4 * sizeof(uint32), (hashFunctionReset) md5Reset, (hashFunctionUpdate) md5Update, (hashFunctionDigest) md5Digest };
 
 int md5Reset(register md5Param* p)
 {
@@ -42,26 +42,24 @@ int md5Reset(register md5Param* p)
        return 0;
 }
 
-#define ROL(x, s) (((x) << (s)) | ((x) >> (32 - (s))))
-
 #define FF(a, b, c, d, w, s, t)        \
        a += ((b&(c^d))^d) + w + t;     \
-       a = ROL(a, s);  \
+       a = ROTL32(a, s);       \
        a += b;
 
 #define GG(a, b, c, d, w, s, t)        \
        a += ((d&(b^c))^c) + w + t;     \
-       a = ROL(a, s);  \
+       a = ROTL32(a, s);       \
        a += b;
 
 #define HH(a, b, c, d, w, s, t)        \
        a += (b^c^d) + w + t;   \
-       a = ROL(a, s);  \
+       a = ROTL32(a, s);       \
        a += b;
 
 #define II(a, b, c, d, w, s, t)        \
        a += (c^(b|~d)) + w + t;        \
-       a = ROL(a, s);  \
+       a = ROTL32(a, s);       \
        a += b;
 
 #ifndef ASM_MD5PROCESS
@@ -154,10 +152,10 @@ void md5Process(md5Param* p)
        II(c, d, a, b, w[ 2], 15, 0x2ad7d2bb);
        II(b, c, d, a, w[ 9], 21, 0xeb86d391);
 
-    p->h[0] += a;
-    p->h[1] += b;
-    p->h[2] += c;
-    p->h[3] += d;
+       p->h[0] += a;
+       p->h[1] += b;
+       p->h[2] += c;
+       p->h[3] += d;
 }
 #endif
 
@@ -169,7 +167,7 @@ int md5Update(md5Param* p, const byte* data, int size)
        while (size > 0)
        {
                proclength = ((p->offset + size) > 64) ? (64 - p->offset) : size;
-               memcpy(((byte *) p->data) + p->offset, data, proclength);
+               memmove(((byte *) p->data) + p->offset, data, proclength);
                size -= proclength;
                data += proclength;
                p->offset += proclength;
@@ -225,6 +223,6 @@ int md5Digest(md5Param* p, uint32* data)
 {
        md5Finish(p);
        mp32copy(4, data, p->h);
-       md5Reset(p);
+       (void) md5Reset(p);
        return 0;
 }
index 361c5c1..c0fc7c7 100644 (file)
@@ -27,7 +27,6 @@
 #define _MD5_H
 
 #include "beecrypt.h"
-/*#include "md5opt.h"*/
 
 typedef struct
 {
@@ -44,13 +43,17 @@ extern "C" {
 extern BEEDLLAPI const hashFunction md5;
 
 BEEDLLAPI
-void md5Process(md5Param*);
+void md5Process(md5Param* p)
+       /*@modifies p @*/;
 BEEDLLAPI
-int md5Reset   (md5Param*);
+int md5Reset   (md5Param* p)
+       /*@modifies p @*/;
 BEEDLLAPI
-int md5Update  (md5Param*, const byte*, int);
+int md5Update  (md5Param* p, const byte* data, int size)
+       /*@modifies p @*/;
 BEEDLLAPI
-int md5Digest  (md5Param*, uint32*);
+int md5Digest  (md5Param* p, uint32* data)
+       /*@modifies p, data @*/;
 
 #ifdef __cplusplus
 }
index 6edf7c7..22a8662 100644 (file)
@@ -83,8 +83,12 @@ memchunk* memchunkResize(memchunk* m, int size)
                        m = (memchunk*) 0;
                }
                else
+                       /*@-nullderef@*/
                        m->size = size;
+                       /*@=nullderef@*/
        }
 
+       /*@-nullret@*/  /* LCL: m->data might ve NULL */
        return m;
+       /*@=nullret@*/
 }
index f8495b9..a37fbbd 100644 (file)
 typedef struct
 {
        int             size;
-       byte*   data;
+/*@only@*/ byte*       data;
 } memchunk;
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk*      memchunkAlloc(int size)
+       /*@*/;
 BEEDLLAPI
-memchunk*      memchunkAlloc(int);
-BEEDLLAPI
-void           memchunkFree(memchunk*);
-BEEDLLAPI
-memchunk*      memchunkResize(memchunk*, int);
+void           memchunkFree(/*@only@*/ /*@null@*/memchunk* m)
+       /*@*/;
+BEEDLLAPI /*@only@*/ /*@null@*/
+memchunk*      memchunkResize(/*@only@*/ /*@null@*/memchunk* m, int size)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index cd29c87..e794770 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Multiprecision 2's complement integer routines for 32 bit cpu, code
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -38,7 +38,7 @@ void mp32zero(register uint32 xsize, register uint32* xdata)
 #endif
 
 #ifndef ASM_MP32FILL
-void mp32fill(register uint32 xsize, register uint32* xdata, uint32 val)
+void mp32fill(register uint32 xsize, register uint32* xdata, register uint32 val)
 {
        while (xsize--)
                *(xdata++) = val;
@@ -299,6 +299,21 @@ int mp32isone(register uint32 xsize, register const uint32* xdata)
 }
 #endif
 
+#ifndef ASM_MP32ISTWO
+int mp32istwo(register uint32 xsize, register const uint32* xdata)
+{
+       xdata += xsize;
+       if (*(--xdata) == 2)
+       {
+               while (--xsize)
+                       if (*(--xdata))
+                               return 0;
+               return 1;
+       }
+       return 0;
+}
+#endif
+
 #ifndef ASM_MP32EQMONE
 int mp32eqmone(register uint32 size, register const uint32* xdata, register const uint32* ydata)
 {
@@ -333,7 +348,7 @@ int mp32leone(register uint32 xsize, register const uint32* xdata)
 #endif
 
 #ifndef ASM_MP32MSBSET
-int mp32msbset(register uint32 xsize, register const uint32* xdata)
+int mp32msbset(/*@unused@*/ register uint32 xsize, register const uint32* xdata)
 {
        return ((*xdata) & 0x80000000);
 }
@@ -347,7 +362,7 @@ int mp32lsbset(register uint32 xsize, register const uint32* xdata)
 #endif
 
 #ifndef ASM_MP32SETMSB
-void mp32setmsb(register uint32 xsize, register uint32* xdata)
+void mp32setmsb(/*@unused@*/ register uint32 xsize, register uint32* xdata)
 {
        *xdata |= 0x80000000;
 }
@@ -361,7 +376,7 @@ void mp32setlsb(register uint32 xsize, register uint32* xdata)
 #endif
 
 #ifndef ASM_MP32CLRMSB
-void mp32clrmsb(register uint32 xsize, register uint32* xdata)
+void mp32clrmsb(/*@unused@*/ register uint32 xsize, register uint32* xdata)
 {
        *xdata &= 0x7fffffff;
 }
@@ -439,7 +454,7 @@ uint32 mp32addw(register uint32 xsize, register uint32* xdata, register uint32 y
                temp += carry;
                *xdata = (uint32) temp;
        }
-       return (temp >> 32);
+       return (uint32)(temp >> 32);
 }
 #endif
 
@@ -455,7 +470,8 @@ uint32 mp32add(register uint32 size, register uint32* xdata, register const uint
        while (size--)
        {
                temp = *(--xdata);
-               temp += *(--ydata) + carry;
+               temp += *(--ydata);
+               temp += carry;
                *xdata = (uint32) temp;
                carry = (uint32) (temp >> 32);
        }
@@ -514,7 +530,8 @@ uint32 mp32sub(register uint32 size, register uint32* xdata, register const uint
        while (size--)
        {
                temp = *(--xdata);
-               temp -= *(--ydata) + carry;
+               temp -= *(--ydata);
+               temp -= carry;
                *xdata = (uint32) temp;
                carry = (temp >> 32) != 0;
        }
@@ -543,7 +560,7 @@ uint32 mp32subx(register uint32 xsize, register uint32* xdata, register uint32 y
 void mp32neg(register uint32 xsize, register uint32* xdata)
 {
        mp32not(xsize, xdata);
-       mp32addw(xsize, xdata, 1);
+       (void) mp32addw(xsize, xdata, 1);
 }
 #endif
 
@@ -593,19 +610,21 @@ uint32 mp32addmul(register uint32 size, register uint32* result, register const
 #ifndef ASM_MP32MUL
 void mp32mul(uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
 {
-       if (xsize <= ysize)
+       /*@-mods@*/
+       /* preferred passing of parameters is x the larger of the two numbers */
+       if (xsize >= ysize)
        {
                register uint32 rc;
 
-               result += xsize;
-               xdata += xsize;
+               result += ysize;
+               ydata += ysize;
 
-               rc = mp32setmul(ysize, result, ydata, *(--xdata));
+               rc = mp32setmul(xsize, result, xdata, *(--ydata));
                *(--result) = rc;
 
-               while (--xsize)
+               while (--ysize)
                {
-                       rc = mp32addmul(ysize, result, ydata, *(--xdata));
+                       rc = mp32addmul(xsize, result, xdata, *(--ydata));
                        *(--result) = rc;
                }
        }
@@ -613,18 +632,19 @@ void mp32mul(uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, co
        {
                register uint32 rc;
 
-               result += ysize;
-               ydata += ysize;
+               result += xsize;
+               xdata += xsize;
 
-               rc = mp32setmul(xsize, result, xdata, *(--ydata));
+               rc = mp32setmul(ysize, result, ydata, *(--xdata));
                *(--result) = rc;
 
-               while (--ysize)
+               while (--xsize)
                {
-                       rc = mp32addmul(xsize, result, xdata, *(--ydata));
+                       rc = mp32addmul(ysize, result, ydata, *(--xdata));
                        *(--result) = rc;
                }
        }
+       /*@=mods@*/
 }
 #endif
 
@@ -658,6 +678,7 @@ void mp32sqr(register uint32* result, register uint32 xsize, register const uint
        register uint32 carry;
        register uint32 n = xsize-1;
 
+       /*@-mods@*/
        result += xsize;
        result[n] = 0;
 
@@ -674,9 +695,10 @@ void mp32sqr(register uint32* result, register uint32 xsize, register const uint
 
        *(--result) = 0;
 
-       mp32multwo(xsize*2, result);
+       (void) mp32multwo(xsize*2, result);
 
-       mp32addsqrtrc(xsize, result, xdata);
+       (void) mp32addsqrtrc(xsize, result, xdata);
+       /*@=mods@*/
 }
 #endif
 
@@ -715,7 +737,7 @@ uint32 mp32divpowtwo(register uint32 xsize, register uint32* xdata)
 #ifndef ASM_MP32DIVTWO
 void mp32divtwo(register uint32 xsize, register uint32* xdata)
 {
-       register uint64 temp;
+       register uint32 temp;
        register uint32 carry = 0;
 
        while (xsize--)
@@ -812,12 +834,12 @@ void mp32lshift(register uint32 xsize, register uint32* xdata, uint32 count)
                register uint8  lbits = (uint8) (count & 0x1f);
 
                /* first do the shifting, then do the moving */
-               if (lbits)
+               if (lbits != 0)
                {
                        register uint32 temp;
                        register uint32 carry = 0;
                        register uint8  rbits = 32-lbits;
-                       register int i = xsize;
+                       register uint32 i = xsize;
 
                        while (i > words)
                        {
@@ -847,7 +869,7 @@ void mp32rshift(register uint32 xsize, register uint32* xdata, uint32 count)
                register uint8 rbits = (uint8) (count & 0x1f);
 
                /* first do the shifting, then do the moving */
-               if (rbits)
+               if (rbits != 0)
                {
                        register uint32 temp;
                        register uint32 carry = 0;
@@ -872,28 +894,32 @@ void mp32rshift(register uint32 xsize, register uint32* xdata, uint32 count)
 }
 #endif
 
-#ifndef ASM_MP32GCD
-void mp32gcd(uint32* result, uint32 size, const uint32* xdata, const uint32* ydata, uint32* workspace)
+#ifndef ASM_MP32GCD_W
+/**
+ * mp32gcd_w
+ *  need workspace of (size) words
+ */
+void mp32gcd_w(uint32 size, const uint32* xdata, const uint32* ydata, uint32* result, uint32* wksp)
 {
        register uint32 shift = 0;
        register uint32 temp;
 
        if (mp32ge(size, xdata, ydata))
        {
-               mp32copy(size, workspace, xdata);
+               mp32copy(size, wksp, xdata);
                mp32copy(size, result, ydata);
        }
        else
        {
-               mp32copy(size, workspace, ydata);
+               mp32copy(size, wksp, ydata);
                mp32copy(size, result, xdata);
        }
                
        /* start with doing mp32divpowtwo on both workspace and result, and store the returned values */
        /* get the smallest returned values, and set shift to that */
 
-       if ((temp = mp32lszcnt(size, workspace)))
-               mp32rshift(size, workspace, temp);
+       if ((temp = mp32lszcnt(size, wksp)))
+               mp32rshift(size, wksp, temp);
 
        shift = temp;
 
@@ -903,18 +929,18 @@ void mp32gcd(uint32* result, uint32 size, const uint32* xdata, const uint32* yda
        if (shift > temp)
                shift = temp;
 
-       while (mp32nz(size, workspace))
+       while (mp32nz(size, wksp))
        {
-               if ((temp = mp32lszcnt(size, workspace)))
-                       mp32rshift(size, workspace, temp);
+               if ((temp = mp32lszcnt(size, wksp)))
+                       mp32rshift(size, wksp, temp);
 
                if ((temp = mp32lszcnt(size, result)))
                        mp32rshift(size, result, temp);
 
-               if (mp32ge(size, workspace, result))
-                       mp32sub(size, workspace, result);
+               if (mp32ge(size, wksp, result))
+                       (void) mp32sub(size, wksp, result);
                else
-                       mp32sub(size, result, workspace);
+                       (void) mp32sub(size, result, wksp);
        }
        mp32lshift(size, result, shift);
 }
@@ -935,7 +961,7 @@ uint32 mp32nmodw(uint32* result, uint32 xsize, const uint32* xdata, uint32 y, ui
                        *rdata -= y;
        */
        if (mp32ge(1, rdata, &y))
-               mp32sub(1, rdata, &y);
+               (void) mp32sub(1, rdata, &y);
 
        while (qsize--)
        {
@@ -954,18 +980,20 @@ uint32 mp32nmodw(uint32* result, uint32 xsize, const uint32* xdata, uint32 y, ui
                q = (uint32) temp;
 
                /* printf("q = %08x\n", q); */
+               /*@-evalorder@*/
                *workspace = mp32setmul(1, workspace+1, &y, q);
+               /*@=evalorder@*/
 
                /* printf("mplt "); mp32print(2, rdata); printf(" < "); mp32println(2, workspace); */
                while (mp32lt(2, rdata, workspace))
                {
                        /* printf("mp32lt! "); mp32print(2, rdata); printf(" < "); mp32println(2, workspace); */
                        /* printf("decreasing q\n"); */
-                       mp32subx(2, workspace, 1, &y);
+                       (void) mp32subx(2, workspace, 1, &y);
                        /* q--; */
                }
                /* printf("subtracting\n"); */
-               mp32sub(2, rdata, workspace);
+               (void) mp32sub(2, rdata, workspace);
                rdata++;
        }
 
@@ -985,7 +1013,7 @@ void mp32nmod(uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, c
 
        mp32copy(xsize, rdata, xdata);
        if (mp32ge(ysize, rdata, ydata))
-               mp32sub(ysize, rdata, ydata);
+               (void) mp32sub(ysize, rdata, ydata);
 
        while (qsize--)
        {
@@ -999,18 +1027,20 @@ void mp32nmod(uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, c
                q = (uint32) temp;
 
                /* printf("q = %08x\n", q); */
+               /*@-evalorder@*/
                *workspace = mp32setmul(ysize, workspace+1, ydata, q);
+               /*@=evalorder@*/
 
                /* printf("mp32lt "); mp32print(ysize+1, rdata); printf(" < "); mp32println(ysize+1, workspace); */
                while (mp32lt(ysize+1, rdata, workspace))
                {
                        /* printf("mp32lt! "); mp32print(ysize+1, rdata); printf(" < "); mp32println(ysize+1, workspace); */
                        /* printf("decreasing q\n"); */
-                       mp32subx(ysize+1, workspace, ysize, ydata);
+                       (void) mp32subx(ysize+1, workspace, ysize, ydata);
                        q--;
                }
                /* printf("subtracting\n"); */
-               mp32sub(ysize+1, rdata, workspace);
+               (void) mp32sub(ysize+1, rdata, workspace);
                rdata++;
        }
 }
@@ -1031,7 +1061,7 @@ void mp32ndivmod(uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize
        if (mp32ge(ysize, result+1, ydata))
        {
                /* printf("subtracting\n"); */
-               mp32sub(ysize, result+1, ydata);
+               (void) mp32sub(ysize, result+1, ydata);
                *(result++) = 1;
        }
        else
@@ -1050,28 +1080,51 @@ void mp32ndivmod(uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize
 
                /* printf("q = %08x\n", q); */
 
+               /*@-evalorder@*/
                *workspace = mp32setmul(ysize, workspace+1, ydata, q);
+               /*@=evalorder@*/
 
                /* printf("mp32lt "); mp32print(ysize+1, result); printf(" < "); mp32println(ysize+1, workspace); */
                while (mp32lt(ysize+1, result, workspace))
                {
                        /* printf("mp32lt! "); mp32print(ysize+1, result); printf(" < "); mp32println(ysize+1, workspace); */
                        /* printf("decreasing q\n"); */
-                       mp32subx(ysize+1, workspace, ysize, ydata);
+                       (void) mp32subx(ysize+1, workspace, ysize, ydata);
                        q--;
                }
                /* printf("subtracting\n"); */
-               mp32sub(ysize+1, result, workspace);
+               (void) mp32sub(ysize+1, result, workspace);
                *(result++) = q;
        }
 }
 #endif
 
+/*
+#ifndef ASM_MP32UNPACK
+void mp32unpack(uint32 size, uint8* bytes, const uint32* bits)
+{
+       register uint32 temp;
+       register int i;
+       
+       while (size--)
+       {
+               temp = *(bits++);
+
+               for (i = 0; i < 31; i++)
+               {
+                       bytes
+               }
+       }
+}
+#endif
+*/
+
 #ifndef ASM_MP32PRINT
 void mp32print(register uint32 xsize, register const uint32* xdata)
 {
        while (xsize--)
                printf("%08x", *(xdata++));
+       (void) fflush(stdout);
 }
 #endif
 
@@ -1081,5 +1134,6 @@ void mp32println(register uint32 xsize, register const uint32* xdata)
        while (xsize--)
                printf("%08x", *(xdata++));
        printf("\n");
+       (void) fflush(stdout);
 }
 #endif
index 972fe27..78e37d1 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Multiprecision 2's complement integer routines for 32 bit cpu, header
  *
- * Copyright (c) 1997-2000  Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000  Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -29,7 +29,7 @@
 #include "beecrypt.h"
 
 #if HAVE_STRING_H
-#include <string.h>
+# include <string.h>
 #endif
 
 #include "mp32opt.h"
@@ -39,7 +39,11 @@ extern "C" {
 #endif
 
 #ifndef ASM_MP32COPY
+#ifdef __LCLINT__
+#define mp32copy(size, dst, src) memmove(dst, src, (size) << 2)
+#else
 #define mp32copy(size, dst, src) memcpy(dst, src, (size) << 2)
+#endif
 #else
 BEEDLLAPI
 void mp32copy(uint32, uint32*, const uint32*);
@@ -53,145 +57,209 @@ void mp32move(uint32, uint32*, const uint32*);
 #endif
 
 BEEDLLAPI
-void mp32zero(uint32, uint32*);
+void mp32zero(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32fill(uint32, uint32*, uint32);
+void mp32fill(uint32 xsize, uint32* xdata, uint32 val)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-int mp32odd (uint32, const uint32*);
+int mp32odd (uint32 xsize, const uint32* xdata)
+       /*@*/;
 BEEDLLAPI
-int mp32even(uint32, const uint32*);
+int mp32even(uint32 xsize, const uint32* xdata)
+       /*@*/;
 
 BEEDLLAPI
-int mp32z  (uint32, const uint32*);
+int mp32z  (uint32 xsize, const uint32* xdata)
+       /*@*/;
 BEEDLLAPI
-int mp32nz (uint32, const uint32*);
+int mp32nz (uint32 xsize, const uint32* xdata)
+       /*@*/;
+
 BEEDLLAPI
-int mp32eq (uint32, const uint32*, const uint32*);
+int mp32eq (uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32ne (uint32, const uint32*, const uint32*);
+int mp32ne (uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32gt (uint32, const uint32*, const uint32*);
+int mp32gt (uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32lt (uint32, const uint32*, const uint32*);
+int mp32lt (uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32ge (uint32, const uint32*, const uint32*);
+int mp32ge (uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32le (uint32, const uint32*, const uint32*);
+int mp32le (uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
+
 BEEDLLAPI
-int mp32eqx(uint32, const uint32*, uint32, const uint32*);
+int mp32eqx(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32nex(uint32, const uint32*, uint32, const uint32*);
+int mp32nex(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32gtx(uint32, const uint32*, uint32, const uint32*);
+int mp32gtx(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32ltx(uint32, const uint32*, uint32, const uint32*);
+int mp32ltx(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32gex(uint32, const uint32*, uint32, const uint32*);
+int mp32gex(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@*/;
 BEEDLLAPI
-int mp32lex(uint32, const uint32*, uint32, const uint32*);
+int mp32lex(uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@*/;
 
 BEEDLLAPI
-int mp32isone(uint32, const uint32*);
+int mp32isone(uint32 xsize, const uint32* xdata)
+       /*@*/;
+BEEDLLAPI
+int mp32istwo(uint32 xsize, const uint32* xdata)
+       /*@*/;
 BEEDLLAPI
-int mp32leone(uint32, const uint32*);
+int mp32leone(uint32 xsize, const uint32* xdata)
+       /*@*/;
 BEEDLLAPI
-int mp32eqmone(uint32, const uint32*, const uint32*);
+int mp32eqmone(uint32 size, const uint32* xdata, const uint32* ydata)
+       /*@*/;
 
 BEEDLLAPI
-int mp32msbset(uint32, const uint32*);
+int mp32msbset(uint32 xsize, const uint32* xdata)
+       /*@*/;
 BEEDLLAPI
-int mp32lsbset(uint32, const uint32*);
+int mp32lsbset(uint32 xsize, const uint32* xdata)
+       /*@*/;
 
 BEEDLLAPI
-void mp32setmsb(uint32, uint32*);
+void mp32setmsb(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32setlsb(uint32, uint32*);
+void mp32setlsb(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32clrmsb(uint32, uint32*);
+void mp32clrmsb(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32clrlsb(uint32, uint32*);
+void mp32clrlsb(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-void mp32xor(uint32, uint32*, const uint32*);
+void mp32xor(uint32 size, uint32* xdata, const uint32* ydata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32not(uint32, uint32*);
+void mp32not(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-void mp32setw(uint32, uint32*, uint32);
+void mp32setw(uint32 xsize, uint32* xdata, uint32 y)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32setx(uint32, uint32*, uint32, const uint32*);
+void mp32setx(uint32 xsize, uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-uint32 mp32addw(uint32, uint32*, uint32);
+uint32 mp32addw(uint32 xsize, uint32* xdata, uint32 y)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-uint32 mp32add (uint32, uint32*, const uint32*);
+uint32 mp32add (uint32 size, uint32* xdata, const uint32* ydata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-uint32 mp32addx(uint32, uint32*, uint32, const uint32*);
+uint32 mp32addx(uint32 xsize, uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-uint32 mp32subw(uint32, uint32*, uint32);
+uint32 mp32subw(uint32 xsize, uint32* xdata, uint32 y)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-uint32 mp32sub (uint32, uint32*, const uint32*);
+uint32 mp32sub (uint32 size, uint32* xdata, const uint32* ydata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-uint32 mp32subx(uint32, uint32*, uint32, const uint32*);
+uint32 mp32subx(uint32 xsize, uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-uint32 mp32multwo(uint32, uint32*);
+uint32 mp32multwo(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-void mp32neg(uint32, uint32*);
+void mp32neg(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-uint32 mp32size(uint32, const uint32*);
+uint32 mp32size(uint32 xsize, const uint32* xdata)
+       /*@*/;
 
 BEEDLLAPI
-uint32 mp32mszcnt(uint32, const uint32*);
+uint32 mp32mszcnt(uint32 xsize, const uint32* xdata)
+       /*@*/;
 BEEDLLAPI
-uint32 mp32lszcnt(uint32, const uint32*);
+uint32 mp32lszcnt(uint32 xsize, const uint32* xdata)
+       /*@*/;
 
 BEEDLLAPI
-void mp32lshift(uint32, uint32*, uint32);
+void mp32lshift(uint32 xsize, uint32* xdata, uint32 count)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32rshift(uint32, uint32*, uint32);
+void mp32rshift(uint32 xsize, uint32* xdata, uint32 count)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-uint32 mp32norm(uint32, uint32*);
+uint32 mp32norm(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-uint32 mp32divpowtwo(uint32, uint32*);
+uint32 mp32divpowtwo(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-void mp32divtwo (uint32, uint32*);
+void mp32divtwo (uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 BEEDLLAPI
-void mp32sdivtwo(uint32, uint32*);
+void mp32sdivtwo(uint32 xsize, uint32* xdata)
+       /*@modifies xdata @*/;
 
 BEEDLLAPI
-uint32 mp32setmul   (uint32, uint32*, const uint32*, uint32);
+uint32 mp32setmul   (uint32 size, /*@out@*/ uint32* result, const uint32* xdata, uint32 y)
+       /*@modifies result @*/;
 BEEDLLAPI
-uint32 mp32addmul   (uint32, uint32*, const uint32*, uint32);
+uint32 mp32addmul   (uint32 size, /*@out@*/ uint32* result, const uint32* xdata, uint32 y)
+       /*@modifies result @*/;
 BEEDLLAPI
-uint32 mp32addsqrtrc(uint32, uint32*, const uint32*);
+uint32 mp32addsqrtrc(uint32 size, /*@out@*/ uint32* result, const uint32* xdata)
+       /*@modifies result @*/;
 
 BEEDLLAPI
-void mp32mul(uint32*, uint32, const uint32*, uint32, const uint32*);
+void mp32mul(/*@out@*/ uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+       /*@modifies result @*/;
 BEEDLLAPI
-void mp32sqr(uint32*, uint32, const uint32*);
+void mp32sqr(/*@out@*/ uint32* result, uint32 xsize, const uint32* xdata)
+       /*@modifies result @*/;
 
 BEEDLLAPI
-void mp32gcd(uint32*, uint32, const uint32*, const uint32*, uint32*);
+void mp32gcd_w(uint32 size, const uint32* xdata, const uint32* ydata, /*@out@*/ uint32* result, uint32* wksp)
+       /*@modifies result, wksp @*/;
 
 BEEDLLAPI
-uint32 mp32nmodw(uint32*, uint32, const uint32*, uint32, uint32*);
+uint32 mp32nmodw(/*@out@*/ uint32* result, uint32 xsize, const uint32* xdata, uint32 y, uint32* wksp)
+       /*@modifies result, wksp @*/;
 
 BEEDLLAPI
-void mp32nmod(uint32*, uint32, const uint32*, uint32, const uint32*, uint32*);
+void mp32nmod(/*@out@*/ uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* wksp)
+       /*@modifies result, wksp @*/;
 BEEDLLAPI
-void mp32ndivmod(uint32*, uint32, const uint32*, uint32, const uint32*, uint32*);
+void mp32ndivmod(/*@out@*/ uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* wksp)
+       /*@modifies result, wksp @*/;
 
 BEEDLLAPI
-void mp32print(uint32, const uint32*);
+void mp32print(uint32 xsize, const uint32* xdata)
+       /*@modifies fileSystem @*/;
 BEEDLLAPI
-void mp32println(uint32, const uint32*);
+void mp32println(uint32 xsize, const uint32* xdata)
+       /*@modifies fileSystem @*/;
 
 #ifdef __cplusplus
 }
index 67e324b..bd7ac27 100644 (file)
@@ -8,7 +8,7 @@
  *  Menezes, van Oorschot, Vanstone
  *  CRC Press
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #include "mp32barrett.h"
 
 #if HAVE_STDLIB_H
-#include <stdlib.h>
+# include <stdlib.h>
+#endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
 #endif
 
 #include <stdio.h>
 
-void mp32bmu(mp32barrett* b)
+/*@-nullstate@*/       /* b->mu may be null @*/
+/**
+ * mp32bzero
+ */
+void mp32bzero(mp32barrett* b)
+{
+       b->size = 0;
+       b->modl = (uint32*) 0;
+       b->mu = (uint32*) 0;
+}
+/*@=nullstate@*/
+
+/*@-nullstate@*/       /* b->mu may be null @*/
+/**
+ * mp32binit
+ *  allocates the data words for an mp32barrett structure
+ *  will allocate 2*size+1 words
+ */
+void mp32binit(mp32barrett* b, uint32 size)
+{
+       b->size = size;
+       b->modl = (uint32*) calloc(2*size+1, sizeof(uint32));
+
+       if (b->modl != (uint32*) 0)
+               b->mu = b->modl+size;
+       else
+               b->mu = (uint32*) 0;
+}
+/*@=nullstate@*/
+
+/*@-nullstate@*/       /* b->mu may be null @*/
+/**
+ * mp32bfree
+ */
+void mp32bfree(mp32barrett* b)
+{
+       if (b->modl != (uint32*) 0)
+       {
+               free(b->modl);
+               b->modl = (uint32*) 0;
+               b->mu = (uint32*) 0;
+       }
+       b->size = 0;
+}
+/*@=nullstate@*/
+
+/*@-nullstate@*/       /* b->mu may be null @*/
+void mp32bcopy(mp32barrett* b, const mp32barrett* copy)
+{
+       register uint32 size = copy->size;
+
+       if (size)
+       {
+               if (b->modl)
+               {
+                       if (b->size != size)
+                               b->modl = (uint32*) realloc(b->modl, (2*size+1) * sizeof(uint32));
+               }
+               else
+                       b->modl = (uint32*) malloc((2*size+1) * sizeof(uint32));
+
+               if (b->modl)
+               {
+                       b->size = size;
+                       b->mu = b->modl+copy->size;
+                       mp32copy(2*size+1, b->modl, copy->modl);
+               }
+               else
+               {
+                       b->size = 0;
+                       b->mu = (uint32*) 0;
+               }
+       }
+       else if (b->modl)
+       {
+               free(b->modl);
+               b->size = 0;
+               b->modl = (uint32*) 0;
+               b->mu = (uint32*) 0;
+       }
+}
+/*@=nullstate@*/
+
+/*@-nullstate@*/       /* b->mu may be null @*/
+/**
+ * mp32bset
+ */
+void mp32bset(mp32barrett* b, uint32 size, const uint32 *data)
+{
+       if (size > 0)
+       {
+               if (b->modl)
+               {
+                       if (b->size != size)
+                               b->modl = (uint32*) realloc(b->modl, (2*size+1) * sizeof(uint32));
+               }
+               else
+                       b->modl = (uint32*) malloc((2*size+1) * sizeof(uint32));
+
+               if (b->modl)
+               {
+                       uint32* temp = (uint32*) malloc((6*size+4) * sizeof(uint32));
+
+                       b->size = size;
+                       b->mu = b->modl+size;
+                       mp32copy(size, b->modl, data);
+                       /*@-nullpass@*/         /* temp may be NULL */
+                       mp32bmu_w(b, temp);
+
+                       free(temp);
+                       /*@=nullpass@*/
+               }
+               else
+               {
+                       b->size = 0;
+                       b->mu = (uint32*) 0;
+               }
+       }
+}
+/*@=nullstate@*/
+
+/*@-nullstate@*/       /* b->mu may be null @*/
+void mp32bsethex(mp32barrett* b, const char* hex)
+{
+       uint32 length = strlen(hex);
+       uint32 size = (length+7) >> 3;
+       uint8 rem = (uint8)(length & 0x7);
+
+       if (b->modl)
+       {
+               if (b->size != size)
+                       b->modl = (uint32*) realloc(b->modl, (2*size+1) * sizeof(uint32));
+       }
+       else
+               b->modl = (uint32*) malloc((2*size+1) * sizeof(uint32));
+
+       if (b->modl != (uint32*) 0)
+       {
+               register uint32  val = 0;
+               register uint32* dst = b->modl;
+               register uint32* temp = (uint32*) malloc((6*size+4) * sizeof(uint32));
+               register char ch;
+
+               b->size = size;
+               b->mu = b->modl+size;
+
+               while (length-- > 0)
+               {
+                       ch = *(hex++);
+                       val <<= 4;
+                       if (ch >= '0' && ch <= '9')
+                               val += (ch - '0');
+                       else if (ch >= 'A' && ch <= 'F')
+                               val += (ch - 'A') + 10;
+                       else if (ch >= 'a' && ch <= 'f')
+                               val += (ch - 'a') + 10;
+
+                       if ((length & 0x7) == 0)
+                       {
+                               *(dst++) = val;
+                               val = 0;
+                       }
+               }
+               if (rem != 0)
+                       *dst = val;
+
+               /*@-nullpass@*/         /* temp may be NULL */
+               mp32bmu_w(b, temp);
+
+               free(temp);
+               /*@=nullpass@*/
+       }
+       else
+       {
+               b->size = 0;
+               b->mu = 0;
+       }
+}
+/*@=nullstate@*/
+
+/**
+ * mp32bmu_w
+ *  computes the Barrett 'mu' coefficient
+ *  needs workspace of (6*size+4) words
+ */
+void mp32bmu_w(mp32barrett* b, uint32* wksp)
 {
-       /* workspace needs to acommodate the dividend (size*2+1), and the divmod result (size*2+1) */
        register uint32  size = b->size;
-       register uint32* divmod = b->mu-1; /* uses the last word of b->modl, which we made large enough */
+       register uint32* divmod = wksp;
        register uint32* dividend = divmod+(size*2+2);
        register uint32* workspace = dividend+(size*2+1);
        register uint32  shift;
@@ -52,37 +239,94 @@ void mp32bmu(mp32barrett* b)
        /* normalize modulus before division */
        shift = mp32norm(size, b->modl);
        /* make the dividend, initialize first word to 1 (shifted); the rest is zero */
-       *dividend = (1 << shift);
+       *dividend = (uint32) (1 << shift);
        mp32zero(size*2, dividend+1);
        mp32ndivmod(divmod, size*2+1, dividend, size, b->modl, workspace);
+       mp32copy(size+1, b->mu, divmod+1);
        /* de-normalize */
        mp32rshift(size, b->modl, shift);
 }
 
-void mp32brndres(const mp32barrett* b, uint32* result, randomGeneratorContext* rc)
+/**
+ * mp32brnd_w
+ *  generates a random number in the range 1 < r < b-1
+ *  need workspace of (size) words
+ */
+void mp32brnd_w(const mp32barrett* b, randomGeneratorContext* rc, uint32* result, uint32* wksp)
+{
+       uint32 msz = mp32mszcnt(b->size, b->modl);
+
+       mp32copy(b->size, wksp, b->modl);
+       (void) mp32subw(b->size, wksp, 1);
+
+       do
+       {
+               (void) rc->rng->next(rc->param, result, b->size);
+
+               result[0] &= (0xffffffff >> msz);
+
+               while (mp32ge(b->size, result, wksp))
+                       (void) mp32sub(b->size, result, wksp);
+       } while (mp32leone(b->size, result));
+}
+
+/**
+ * mp32brndodd_w
+ *  generates a random odd number in the range 1 < r < b-1
+ *  needs workspace of (size) words
+ */
+void mp32brndodd_w(const mp32barrett* b, randomGeneratorContext* rc, uint32* result, uint32* wksp)
 {
        uint32 msz = mp32mszcnt(b->size, b->modl);
 
-       mp32copy(b->size, b->wksp, b->modl);
-       mp32subw(b->size, b->wksp, 1);
+       mp32copy(b->size, wksp, b->modl);
+       (void) mp32subw(b->size, wksp, 1);
 
        do
        {
-               rc->rng->next(rc->param, result, b->size);
+               (void) rc->rng->next(rc->param, result, b->size);
 
                result[0] &= (0xffffffff >> msz);
+               mp32setlsb(b->size, result);
 
-               while (mp32ge(b->size, result, b->wksp))
-                       mp32sub(b->size, result, b->wksp);
+               while (mp32ge(b->size, result, wksp))
+               {
+                       (void) mp32sub(b->size, result, wksp);
+                       mp32setlsb(b->size, result);
+               }
        } while (mp32leone(b->size, result));
 }
 
-void mp32bmodres(const mp32barrett* b, uint32* result, const uint32* xdata)
+/**
+ * mp32brndinv_w
+ *  generates a random invertible (modulo b) in the range 1 < r < b-1
+ *  needs workspace of (6*size+6) words
+ */
+void mp32brndinv_w(const mp32barrett* b, randomGeneratorContext* rc, uint32* result, uint32* inverse, uint32* wksp)
+{
+       register uint32  size = b->size;
+
+       do
+       {
+               if (mp32even(size, b->modl))
+                       mp32brndodd_w(b, rc, result, wksp);
+               else
+                       mp32brnd_w(b, rc, result, wksp);
+
+       } while (mp32binv_w(b, size, result, inverse, wksp) == 0);
+}
+
+/**
+ * mp32bmod_w
+ *  computes the barrett modular reduction of a number x, which has twice the size of b
+ *  needs workspace of (2*size+2) words
+ */
+void mp32bmod_w(const mp32barrett* b, const uint32* xdata, uint32* result, uint32* wksp)
 {
        register uint32 rc;
        register uint32 sp = 2;
        register const uint32* src = xdata+b->size+1;
-       register       uint32* dst = b->wksp+b->size+1;
+       register       uint32* dst = wksp +b->size+1;
 
        rc = mp32setmul(sp, dst, b->mu, *(--src));
        *(--dst) = rc;
@@ -112,185 +356,252 @@ void mp32bmodres(const mp32barrett* b, uint32* result, const uint32* xdata)
        sp = b->size;
        rc = 0;
 
-       dst = b->wksp+b->size+1;
+       dst = wksp+b->size+1;
        src = dst;
 
+       /*@-evalorder@*/ /* --src side effect, dst/src aliases */
        *dst = mp32setmul(sp, dst+1, b->modl, *(--src));
+       /*@=evalorder@*/
 
        while (sp > 0)
        {
-               mp32addmul(sp--, dst, b->modl+(rc++), *(--src));
+               (void) mp32addmul(sp--, dst, b->modl+(rc++), *(--src));
        }
 
-       mp32setx(b->size+1, b->wksp, b->size*2, xdata);
-       mp32sub(b->size+1, b->wksp, b->wksp+b->size+1);
-       while (mp32gex(b->size+1, b->wksp, b->size, b->modl))
-       {
-               mp32subx(b->size+1, b->wksp, b->size, b->modl);
-       }
-       mp32copy(b->size, result, b->wksp+1);
-}
+       mp32setx(b->size+1, wksp, b->size*2, xdata);
+       (void) mp32sub(b->size+1, wksp, wksp+b->size+1);
 
-void mp32binit(mp32barrett* b, uint32 size)
-{
-       /* data, modulus and mu take 3*size+2 words, wksp needed = 7*size+2; total = 10*size+4 */
-       b->size = size;
-       b->data = (uint32*) calloc(size*10+4, sizeof(uint32));
-
-       if (b->data)
-       {
-               b->modl = b->data+size+0;
-               b->mu   = b->modl+size+1;
-               b->wksp = b->mu  +size+1;
-       }
-       else
+       while (mp32gex(b->size+1, wksp, b->size, b->modl))
        {
-               b->modl = b->mu = b->wksp = (uint32*) 0;
+               (void) mp32subx(b->size+1, wksp, b->size, b->modl);
        }
+       mp32copy(b->size, result, wksp+1);
 }
 
-void mp32bzero(mp32barrett* b)
-{
-       b->size = 0;
-       b->data = b->modl = b->mu = b->wksp = (uint32*) 0;
-}
-
-void mp32bfree(mp32barrett* b)
-{
-       if (b->data)
-       {
-               free(b->data);
-               b->data = b->modl = b->mu = b->wksp = (uint32*) 0;
-       }
-       b->size = 0;
-}
-
-void mp32bset(mp32barrett* b, uint32 size, const uint32 *data)
+/**
+ * mp32bsubone
+ *  copies (b-1) into result
+ */
+void mp32bsubone(const mp32barrett* b, uint32* result)
 {
-       /* assumes that the msw of data is not zero */
-       if (b->data)
-               mp32bfree(b);
-
-       if (size)
-       {
-               mp32binit(b, size);
+       register uint32 size = b->size;
 
-               if (b->data)
-               {
-                       mp32copy(size, b->modl, data);
-                       mp32bmu(b);
-               }
-       }
+       mp32copy(size, result, b->modl);
+       (void) mp32subw(size, result, 1);
 }
 
-/* function mp32bsethex would be very useful! */
-
-void mp32bmod(const mp32barrett* b, uint32 xsize, const uint32* xdata)
+/**
+ * mp32bneg
+ *  computes the negative (modulo b) of x, where x must contain a value between 0 and b-1
+ */
+void mp32bneg(const mp32barrett* b, const uint32* xdata, uint32* result)
 {
        register uint32  size = b->size;
-       register uint32* opnd = b->wksp + size*2+2;
 
-       mp32setx(size*2, opnd, xsize, xdata);
-       mp32bmodres(b, b->data, opnd);
+       mp32copy(size, result, xdata);
+       mp32neg(size, result);
+       (void) mp32add(size, result, b->modl);
 }
 
-void mp32bmodsubone(const mp32barrett* b)
-{
-       register uint32 size = b->size;
-
-       mp32copy(size, b->data, b->modl);
-       mp32subw(size, b->data, 1);
-}
-
-void mp32bneg(const mp32barrett* b)
+/**
+ * mp32baddmod_w
+ *  computes the sum (modulo b) of x and y
+ *  needs a workspace of (4*size+2) words
+ */
+void mp32baddmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* result, uint32* wksp)
 {
+       /* xsize and ysize must be less than or equal to b->size */
        register uint32  size = b->size;
+       register uint32* temp = wksp + size*2+2;
 
-       mp32neg(size, b->data);
-       mp32add(size, b->data, b->modl);
+       mp32setx(2*size, temp, xsize, xdata);
+       (void) mp32addx(2*size, temp, ysize, ydata);
+
+       mp32bmod_w(b, temp, result, wksp);
 }
 
-void mp32baddmod(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+/**
+ * mp32bsubmod_w
+ *  computes the difference (modulo b) of x and y
+ *  needs a workspace of (4*size+2) words
+ */
+void mp32bsubmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* result, uint32* wksp)
 {
+       /* xsize and ysize must be less than or equal to b->size */
        register uint32  size = b->size;
-       register uint32* opnd = b->wksp+size*2+2;
-
-       mp32setx(2*size, opnd, xsize, xdata);
-       mp32addx(2*size, opnd, ysize, ydata);
+       register uint32* temp = wksp + size*2+2;
+       
+       mp32setx(2*size, temp, xsize, xdata);
+       if (mp32subx(2*size, temp, ysize, ydata)) /* if there's carry, i.e. the result would be negative, add the modulus */
+               (void) mp32addx(2*size, temp, size, b->modl);
 
-       mp32bmodres(b, b->data, opnd);
+       mp32bmod_w(b, temp, result, wksp);
 }
 
-void mp32bmulmodres(const mp32barrett* b, uint32* result, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
+/**
+ * mp32mulmod_w
+ *  computes the product (modulo b) of x and y
+ *  needs a workspace of (4*size+2) words
+ */
+void mp32bmulmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, uint32* result, uint32* wksp)
 {
-       /* needs workspace of (size*2) in addition to what is needed by mp32bmodres (size*2+2) */
        /* xsize and ysize must be <= b->size */
-       /* stores result in b->data */
        register uint32  size = b->size;
-       register uint32  fill = 2*size-xsize-ysize;
-       register uint32* opnd = b->wksp+size*2+2;
+       register uint32* temp = wksp + size*2+2;
+       register uint32  fill = size*2-xsize-ysize;
 
        if (fill)
-               mp32zero(fill, opnd);
+               mp32zero(fill, temp);
 
-       mp32mul(opnd+fill, xsize, xdata, ysize, ydata);
-       mp32bmodres(b, result, opnd);
+       mp32mul(temp+fill, xsize, xdata, ysize, ydata);
+       mp32bmod_w(b, temp, result, wksp);
 }
 
-void mp32bsqrmodres(const mp32barrett* b, uint32* result, uint32 xsize, const uint32* xdata)
+/**
+ * mp32bsqrmod_w
+ *  computes the square (modulo b) of x
+ *  needs a workspace of (4*size+2) words
+ */
+void mp32bsqrmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32* result, uint32* wksp)
 {
-       /* needs workspace of (size*2) in addition to what is needed by mp32bmodres (size*2+2) */
        /* xsize must be <= b->size */
        register uint32  size = b->size;
+       register uint32* temp = wksp + size*2+2;
        register uint32  fill = 2*(size-xsize);
-       register uint32* opnd = b->wksp + size*2+2;
 
        if (fill)
-               mp32zero(fill, opnd);
+               mp32zero(fill, temp);
 
-       mp32sqr(opnd+fill, xsize, xdata);
-       mp32bmodres(b, result, opnd);
+       mp32sqr(temp+fill, xsize, xdata);
+       mp32bmod_w(b, temp, result, wksp);
 }
 
-void mp32bmulmod(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata)
-{
-       mp32bmulmodres(b, b->data, xsize, xdata, ysize, ydata);
-}
+/*
+ * Sliding Window Exponentiation technique, slightly altered from the method Applied Cryptography:
+ *
+ * First of all, the table with the powers of g can be reduced by about half; the even powers don't
+ * need to be accessed or stored.
+ *
+ * Get up to K bits starting with a one, if we have that many still available
+ *
+ * Do the number of squarings of A in the first column, the multiply by the value in column two,
+ * and finally do the number of squarings in column three.
+ *
+ * This table can be used for K=2,3,4 and can be extended
+ *  
+ *     0 : - | -       | -
+ *     1 : 1 |  g1 @ 0 | 0
+ *    10 : 1 |  g1 @ 0 | 1
+ *    11 : 2 |  g3 @ 1 | 0
+ *   100 : 1 |  g1 @ 0 | 2
+ *   101 : 3 |  g5 @ 2 | 0
+ *   110 : 2 |  g3 @ 1 | 1
+ *   111 : 3 |  g7 @ 3 | 0
+ *  1000 : 1 |  g1 @ 0 | 3
+ *  1001 : 4 |  g9 @ 4 | 0
+ *  1010 : 3 |  g5 @ 2 | 1
+ *  1011 : 4 | g11 @ 5 | 0
+ *  1100 : 2 |  g3 @ 1 | 2
+ *  1101 : 4 | g13 @ 6 | 0
+ *  1110 : 3 |  g7 @ 3 | 1
+ *  1111 : 4 | g15 @ 7 | 0
+ *
+ */
 
-void mp32bsqrmod(const mp32barrett* b, uint32 xsize, const uint32* xdata)
+/**
+ * mp32bslide_w
+ *  precomputes the sliding window table for computing powers of x modulo b
+ *  needs workspace (4*size+2)
+ */
+void mp32bslide_w(const mp32barrett* b, const uint32 xsize, const uint32* xdata, uint32* slide, uint32* wksp)
 {
-       mp32bsqrmodres(b, b->data, xsize, xdata);
+       register uint32 size = b->size;
+       mp32bsqrmod_w(b, xsize, xdata,                     slide       , wksp); /* x^2 mod b, temp */
+       mp32bmulmod_w(b, xsize, xdata, size, slide       , slide+size  , wksp); /* x^3 mod b */
+       mp32bmulmod_w(b,  size, slide, size, slide+size  , slide+2*size, wksp); /* x^5 mod b */
+       mp32bmulmod_w(b,  size, slide, size, slide+2*size, slide+3*size, wksp); /* x^7 mod b */
+       mp32bmulmod_w(b,  size, slide, size, slide+3*size, slide+4*size, wksp); /* x^9 mod b */
+       mp32bmulmod_w(b,  size, slide, size, slide+4*size, slide+5*size, wksp); /* x^11 mod b */
+       mp32bmulmod_w(b,  size, slide, size, slide+5*size, slide+6*size, wksp); /* x^13 mod b */
+       mp32bmulmod_w(b,  size, slide, size, slide+6*size, slide+7*size, wksp); /* x^15 mod b */
+       mp32setx(size, slide, xsize, xdata);                                    /* x^1 mod b */
 }
 
-void mp32bpowmod(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 psize, const uint32* pdata)
+static byte mp32bslide_presq[16] = 
+{ 0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 4, 2, 4, 3, 4 };
+
+static byte mp32bslide_mulg[16] =
+{ 0, 0, 0, 1, 0, 2, 1, 3, 0, 4, 2, 5, 1, 6, 3, 7 };
+
+static byte mp32bslide_postsq[16] =
+{ 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 };
+
+/**
+ * needs workspace of 4*size+2 words
+ */
+void mp32bpowmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 psize, const uint32* pdata, uint32* result, uint32* wksp)
 {
        /*
         * Modular exponention
         *
-        * Uses left-to-right exponentiation; needs no extra storage
+        * Uses sliding window exponentiation; needs extra storage: if K=3, needs 8*size, if K=4, needs 16*size
         *
         */
+
+       /* K == 4 for the first try */
        
-       /* this routine calls mp32bmod, which needs (size*2+2), this routine needs (size*2) for sdata */
+       uint32  size = b->size;
+       uint32  temp;
+
+       while (psize)
+       {
+               if ((temp = *(pdata++))) /* break when first non-zero word found */
+                       break;
+               psize--;
+       }
+
+       /* if temp is still zero, then we're trying to raise x to power zero, and result stays one */
+       if (temp)
+       {
+               uint32* slide = (uint32*) malloc((8*size)*sizeof(uint32));
+
+               /*@-nullpass@*/         /* slide may be NULL */
+               mp32bslide_w(b, xsize, xdata, slide, wksp);
+
+               mp32bpowmodsld_w(b, slide, psize, pdata-1, result, wksp);
+
+               free(slide);
+               /*@=nullpass@*/
+       }
+}
+
+void mp32bpowmodsld_w(const mp32barrett* b, const uint32* slide, uint32 psize, const uint32* pdata, uint32* result, uint32* wksp)
+{
+       /*
+        * Modular exponentiation with precomputed sliding window table, so no x is required
+        *
+        */
 
-       register uint32  temp;
+       uint32 size = b->size;
+       uint32 temp;
 
-       mp32setw(b->size, b->data, 1);
+       mp32setw(size, result, 1);
 
        while (psize)
        {
-               if ((temp = *(pdata++))) /* break when first non-zero word found */
+               if ((temp = *(pdata++))) /* break when first non-zero word found in power */
                        break;
                psize--;
        }
 
+       /*@+charindex@*/
        /* if temp is still zero, then we're trying to raise x to power zero, and result stays one */
        if (temp)
        {
-               register int count = 32;
+               uint8 l = 0, n = 0, count = 32;
 
                /* first skip bits until we reach a one */
-               while (count)
+               while (count != 0)
                {
                        if (temp & 0x80000000)
                                break;
@@ -300,14 +611,39 @@ void mp32bpowmod(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32
 
                while (psize)
                {
-                       while (count)
+                       while (count != 0)
                        {
-                               /* always square */
-                               mp32bnsqrmodres(b, b->data, (mp32number*) b);
+                               uint8 bit = (temp & 0x80000000) != 0;
+
+                               n <<= 1;
+                               n += bit;
                                
-                               /* multiply by x if bit is 1 */
-                               if (temp & 0x80000000)
-                                       mp32bmulmod(b, xsize, xdata, b->size, b->data);
+                               if (n != 0)
+                               {
+                                       if (l != 0)
+                                               l++;
+                                       else if (bit != 0)
+                                               l = 1;
+
+                                       if (l == 4)
+                                       {
+                                               uint8 s = mp32bslide_presq[n];
+                                               
+                                               while (s--)
+                                                       mp32bsqrmod_w(b, size, result, result, wksp);
+                                               
+                                               mp32bmulmod_w(b, size, result, size, slide+mp32bslide_mulg[n]*size, result, wksp);
+                                               
+                                               s = mp32bslide_postsq[n];
+                                               
+                                               while (s--)
+                                                       mp32bsqrmod_w(b, size, result, result, wksp);
+
+                                               l = n = 0;
+                                       }
+                               }
+                               else
+                                       mp32bsqrmod_w(b, size, result, result, wksp);
 
                                temp <<= 1;
                                count--;
@@ -318,10 +654,29 @@ void mp32bpowmod(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32
                                temp = *(pdata++);
                        }
                }
-       }
+
+               if (n != 0)
+               {
+                       uint8 s = mp32bslide_presq[n];
+                       while (s--)
+                               mp32bsqrmod_w(b, size, result, result, wksp);
+                               
+                       mp32bmulmod_w(b, size, result, size, slide+mp32bslide_mulg[n]*size, result, wksp);
+                       
+                       s = mp32bslide_postsq[n];
+                       
+                       while (s--)
+                               mp32bsqrmod_w(b, size, result, result, wksp);
+               }
+       }       
+       /*@=charindex@*/
 }
 
-void mp32btwopowmod(const mp32barrett* b, uint32 psize, const uint32* pdata)
+/**
+ * mp32btwopowmod_w
+ *  needs workspace of (4*size+2) words
+ */
+void mp32btwopowmod_w(const mp32barrett* b, uint32 psize, const uint32* pdata, uint32* result, uint32* wksp)
 {
        /*
         * Modular exponention, 2^p mod modulus, special optimization
@@ -332,9 +687,10 @@ void mp32btwopowmod(const mp32barrett* b, uint32 psize, const uint32* pdata)
 
        /* this routine calls mp32bmod, which needs (size*2+2), this routine needs (size*2) for sdata */
 
-       register uint32  temp;
+       register uint32 size = b->size;
+       register uint32 temp;
 
-       mp32setw(b->size, b->data, 1);
+       mp32setw(size, result, 1);
 
        while (psize)
        {
@@ -357,55 +713,59 @@ void mp32btwopowmod(const mp32barrett* b, uint32 psize, const uint32* pdata)
                        count--;
                }
 
-               while (psize)
+               while (psize--)
                {
                        while (count)
                        {
                                /* always square */
-                               mp32bnsqrmodres(b, b->data, (mp32number*) b);
+                               mp32bsqrmod_w(b, size, result, result, wksp);
                                
                                /* multiply by two if bit is 1 */
                                if (temp & 0x80000000)
                                {
-                                       if (mp32add(b->size, b->data, b->data) || mp32ge(b->size, b->data, b->modl))
+                                       if (mp32add(size, result, result) || mp32ge(size, result, b->modl))
                                        {
                                                /* there was carry, or the result is greater than the modulus, so we need to adjust */
-                                               mp32sub(b->size, b->data, b->modl);
+                                               (void) mp32sub(size, result, b->modl);
                                        }
                                }
 
                                temp <<= 1;
                                count--;
                        }
-                       if (psize--)
-                       {
-                               count = 32;
-                               temp = *(pdata++);
-                       }
+                       count = 32;
+                       temp = *(pdata++);
                }
        }
 }
 
-int mp32binv(const mp32barrett* b, uint32 xsize, const uint32* xdata)
+/**
+ * mp32binv_w
+ *  computes the inverse (modulo b) of x, and returns 1 if x was invertible
+ *  needs workspace of (6*size+6) words
+ *  note: xdata and result cannot point to the same area
+ */
+int mp32binv_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32* result, uint32* wksp)
 {
        /*
         * Fact: if a element of Zn, then a is invertible if and only if gcd(a,n) = 1
-        * 
+        * Hence: if b->modl is even, then x must be odd, otherwise the gcd(x,n) >= 2
+        *
+        * The calling routine must guarantee this condition.
         */
 
-       /* where x or modl is odd, that algorithm will need (4*size+4) */
+       register uint32  size = b->size;
 
-       if (mp32odd(b->size, b->modl))
+       uint32* udata = wksp;
+       uint32* vdata = udata+size+1;
+       uint32* adata = vdata+size+1;
+       uint32* bdata = adata+size+1;
+       uint32* cdata = bdata+size+1;
+       uint32* ddata = cdata+size+1;
+
+       if (mp32odd(b->size, b->modl) && mp32even(xsize, xdata))
        {
                /* use simplified binary extended gcd algorithm */
-
-               register uint32  size = b->size;
-
-               uint32* udata = b->wksp;
-               uint32* vdata = udata+size+1;
-               uint32* bdata = vdata+size+1;
-               uint32* ddata = bdata+size+1;
-
                mp32setx(size+1, udata, size, b->modl);
                mp32setx(size+1, vdata, xsize, xdata);
                mp32zero(size+1, bdata);
@@ -418,7 +778,7 @@ int mp32binv(const mp32barrett* b, uint32 xsize, const uint32* xdata)
                                mp32divtwo(size+1, udata);
 
                                if (mp32odd(size+1, bdata))
-                                       mp32subx(size+1, bdata, size, b->modl);
+                                       (void) mp32subx(size+1, bdata, size, b->modl);
 
                                mp32sdivtwo(size+1, bdata);
                        }
@@ -427,29 +787,31 @@ int mp32binv(const mp32barrett* b, uint32 xsize, const uint32* xdata)
                                mp32divtwo(size+1, vdata);
 
                                if (mp32odd(size+1, ddata))
-                                       mp32subx(size+1, ddata, size, b->modl);
+                                       (void) mp32subx(size+1, ddata, size, b->modl);
 
                                mp32sdivtwo(size+1, ddata);
                        }
                        if (mp32ge(size+1, udata, vdata))
                        {
-                               mp32sub(size+1, udata, vdata);
-                               mp32sub(size+1, bdata, ddata);
+                               (void) mp32sub(size+1, udata, vdata);
+                               (void) mp32sub(size+1, bdata, ddata);
                        }
                        else
                        {
-                               mp32sub(size+1, vdata, udata);
-                               mp32sub(size+1, ddata, bdata);
+                               (void) mp32sub(size+1, vdata, udata);
+                               (void) mp32sub(size+1, ddata, bdata);
                        }
 
                        if (mp32z(size+1, udata))
                        {
                                if (mp32isone(size+1, vdata))
                                {
-                                       mp32setx(size, b->data, size+1, ddata);
-                                       if (*ddata & 0x80000000)
-                                               mp32add(size, b->data, b->modl);
-
+                                       if (result)
+                                       {
+                                               mp32setx(size, result, size+1, ddata);
+                                               if (*ddata & 0x80000000)
+                                                       (void) mp32add(size, result, b->modl);
+                                       }
                                        return 1;
                                }
                                return 0;
@@ -458,30 +820,87 @@ int mp32binv(const mp32barrett* b, uint32 xsize, const uint32* xdata)
        }
        else
        {
-               /*
-                * If x is even, then it is not invertible
-                *
-                */
+               /* use full binary extended gcd algorithm */
+               mp32setx(size+1, udata, size, b->modl);
+               mp32setx(size+1, vdata, xsize, xdata);
+               mp32setw(size+1, adata, 1);
+               mp32zero(size+1, bdata);
+               mp32zero(size+1, cdata);
+               mp32setw(size+1, ddata, 1);
 
-               if (mp32even(xsize, xdata))
-                       return 0;
+               while (1)
+               {
+                       while (mp32even(size+1, udata))
+                       {
+                               mp32divtwo(size+1, udata);
 
-               /* use simplified binary extended gcd algorithm */
-               
-               /* INCOMPLETE */
-               return 0;
+                               if (mp32odd(size+1, adata) || mp32odd(size+1, bdata))
+                               {
+                                       (void) mp32addx(size+1, adata, xsize, xdata);
+                                       (void) mp32subx(size+1, bdata, size, b->modl);
+                               }
+
+                               mp32sdivtwo(size+1, adata);
+                               mp32sdivtwo(size+1, bdata);
+                       }
+                       while (mp32even(size+1, vdata))
+                       {
+                               mp32divtwo(size+1, vdata);
+
+                               if (mp32odd(size+1, cdata) || mp32odd(size+1, ddata))
+                               {
+                                       (void) mp32addx(size+1, cdata, xsize, xdata);
+                                       (void) mp32subx(size+1, ddata, size, b->modl);
+                               }
+
+                               mp32sdivtwo(size+1, cdata);
+                               mp32sdivtwo(size+1, ddata);
+                       }
+                       if (mp32ge(size+1, udata, vdata))
+                       {
+                               (void) mp32sub(size+1, udata, vdata);
+                               (void) mp32sub(size+1, adata, cdata);
+                               (void) mp32sub(size+1, bdata, ddata);
+                       }
+                       else
+                       {
+                               (void) mp32sub(size+1, vdata, udata);
+                               (void) mp32sub(size+1, cdata, adata);
+                               (void) mp32sub(size+1, ddata, bdata);
+                       }
+
+                       if (mp32z(size+1, udata))
+                       {
+                               if (mp32isone(size+1, vdata))
+                               {
+                                       if (result)
+                                       {
+                                               mp32setx(size, result, size+1, ddata);
+                                               if (*ddata & 0x80000000)
+                                                       (void) mp32add(size, result, b->modl);
+                                       }
+                                       return 1;
+                               }
+                               return 0;
+                       }
+               }
        }
 }
 
-int mp32bpprime(const mp32barrett* b, randomGeneratorContext* r, int t)
+/**
+ * needs workspace of (7*size+2) words
+ */
+int mp32bpprime_w(const mp32barrett* b, randomGeneratorContext* r, int t, uint32* wksp)
 {
        /*
-        * This test works for candidate probable primes >= 3, which are also not small primes 
+        * This test works for candidate probable primes >= 3, which are also not small primes.
         *
         * It assumes that b->modl contains the candidate prime
         *
         */
 
+       uint32 size = b->size;
+
        /* first test if modl is odd */
 
        if (mp32odd(b->size, b->modl))
@@ -496,77 +915,111 @@ int mp32bpprime(const mp32barrett* b, randomGeneratorContext* r, int t)
                 *
                 */
                
-               if (b->size > SMALL_PRIMES_PRODUCT_MAX)
+               if (size > SMALL_PRIMES_PRODUCT_MAX)
                {
-                       mp32setx(b->size, b->wksp+b->size, SMALL_PRIMES_PRODUCT_MAX, mp32spprod[SMALL_PRIMES_PRODUCT_MAX-1]);
-                       mp32gcd(b->data, b->size, b->modl, b->wksp+b->size, b->wksp);
+                       mp32setx(size, wksp+size, SMALL_PRIMES_PRODUCT_MAX, mp32spprod[SMALL_PRIMES_PRODUCT_MAX-1]);
+                       mp32gcd_w(size, b->modl, wksp+size, wksp, wksp+2*size);
                }
                else
                {
-                       mp32gcd(b->data, b->size, b->modl, mp32spprod[b->size-1], b->wksp);
+                       mp32gcd_w(size, b->modl, mp32spprod[size-1], wksp, wksp+2*size);
                }
 
-               if (mp32isone(b->size, b->data))
+               if (mp32isone(size, wksp))
                {
-                       return mp32pmilrab(b, r, t);
+                       return mp32pmilrab_w(b, r, t, wksp);
                }
        }
 
        return 0;
 }
 
-void mp32brnd(const mp32barrett* b, randomGeneratorContext* rc)
+void mp32bnrnd(const mp32barrett* b, randomGeneratorContext* rc, mp32number* result)
 {
-       mp32brndres(b, b->data, rc);
+       register uint32  size = b->size;
+       register uint32* temp = (uint32*) malloc(size * sizeof(uint32));
+
+       mp32nfree(result);
+       mp32nsize(result, size);
+       /*@-nullpass@*/         /* temp may be NULL */
+       mp32brnd_w(b, rc, result->data, temp);
+
+       free(temp);
+       /*@=nullpass@*/
 }
 
-void mp32bnmulmodres(const mp32barrett* b, uint32* result, const mp32number* x, const mp32number* y)
+void mp32bnmulmod(const mp32barrett* b, const mp32number* x, const mp32number* y, mp32number* result)
 {
-       /* needs workspace of (size*2) in addition to what is needed by mp32bmodres (size*2+2) */
-       /* xsize and ysize must be <= b->size */
-       /* stores result in b->data */
        register uint32  size = b->size;
+       register uint32* temp = (uint32*) malloc((4*size+2) * sizeof(uint32));
+
+       /* xsize and ysize must be <= b->size */
        register uint32  fill = 2*size-x->size-y->size;
-       register uint32* opnd = b->wksp+size*2+2;
+       register uint32* opnd = temp+size*2+2;
+
+       mp32nfree(result);
+       mp32nsize(result, size);
 
        if (fill)
                mp32zero(fill, opnd);
 
        mp32mul(opnd+fill, x->size, x->data, y->size, y->data);
-       mp32bmodres(b, result, opnd);
+       /*@-nullpass@*/         /* temp may be NULL */
+       mp32bmod_w(b, opnd, result->data, temp);
+
+       free(temp);
+       /*@=nullpass@*/
 }
 
-void mp32bnsqrmodres(const mp32barrett* b, uint32* result, const mp32number* x)
+void mp32bnsqrmod(const mp32barrett* b, const mp32number* x, mp32number* result)
 {
-       /* needs workspace of (size*2) in addition to what is needed by mp32bmodres (size*2+2) */
-       /* xsize must be <= b->size */
        register uint32  size = b->size;
+       register uint32* temp = (uint32*) malloc(size * sizeof(uint32));
+
+       /* xsize must be <= b->size */
        register uint32  fill = 2*(size-x->size);
-       register uint32* opnd = b->wksp + size*2+2;
+       register uint32* opnd = temp + size*2+2;
+
+       mp32nfree(result);
+       mp32nsize(result, size);
 
        if (fill)
                mp32zero(fill, opnd);
 
        mp32sqr(opnd+fill, x->size, x->data);
-       mp32bmodres(b, result, opnd);
-}
+       /*@-nullpass@*/         /* temp may be NULL */
+       mp32bmod_w(b, opnd, result->data, temp);
 
-void mp32bnmulmod(const mp32barrett* b, const mp32number* x, const mp32number* y)
-{
-       mp32bnmulmodres(b, b->data, x, y);
+       free(temp);
+       /*@=nullpass@*/
 }
 
-void mp32bnpowmod(const mp32barrett* b, const mp32number* x, const mp32number* y)
+void mp32bnpowmod(const mp32barrett* b, const mp32number* x, const mp32number* pow, mp32number* y)
 {
-       mp32bpowmod(b, x->size, x->data, y->size, y->data);
-}
+       register uint32  size = b->size;
+       register uint32* temp = (uint32*) malloc((4*size+2) * sizeof(uint32));
 
-void mp32bnsqrmod(const mp32barrett* b, const mp32number* x)
-{
-       mp32bnsqrmodres(b, b->data, x);
+       mp32nfree(y);
+       mp32nsize(y, size);
+
+       /*@-nullpass@*/         /* temp may be NULL */
+       mp32bpowmod_w(b, x->size, x->data, pow->size, pow->data, y->data, temp);
+
+       free(temp);
+       /*@=nullpass@*/
 }
 
-void mp32bspowmod3(const mp32number* b, const uint32* x0, const uint32* p0, const uint32* x1, const uint32* p1, const uint32* x2, const uint32* p2)
+void mp32bnpowmodsld(const mp32barrett* b, const uint32* slide, const mp32number* pow, mp32number* y)
 {
-       /* this algorithm needs (size*8) storage, which won't fit in the normal buffer */
+       register uint32  size = b->size;
+       register uint32* temp = (uint32*) malloc((4*size+2) * sizeof(uint32));
+
+       mp32nfree(y);
+       mp32nsize(y, size);
+
+       /*@-nullpass@*/         /* temp may be NULL */
+       mp32bpowmodsld_w(b, slide, pow->size, pow->data, y->data, temp);
+
+       free(temp);
+       /*@=nullpass@*/
 }
index ad27278..57e4218 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Barrett modular reduction, header
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 typedef struct
 {
        uint32  size;
-       uint32* data;   /* (size) words / allocated on one block of 9*size+5 words and set the other pointers appropriately */
-       uint32* modl;   /* (size+1) words */
-       uint32* mu;             /* (size+1) words */
-       uint32* wksp;   /* (6*size+4) words */
+/*@owned@*/ uint32* modl;      /* (size) words */
+/*@dependent@*/ uint32* mu;    /* (size+1) words */
 } mp32barrett;
 
 #ifdef __cplusplus
@@ -43,73 +41,109 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void mp32bzero    (mp32barrett*);
+void mp32bzero(mp32barrett* b)
+       /*@modifies b @*/;
 BEEDLLAPI
-void mp32binit     (mp32barrett*, uint32);
+void mp32binit(mp32barrett* b, uint32 size)
+       /*@modifies b @*/;
 BEEDLLAPI
-void mp32bfree     (mp32barrett*);
+void mp32bfree(mp32barrett* b)
+       /*@modifies b @*/;
 BEEDLLAPI
-void mp32bset      (mp32barrett*, uint32, const uint32*);
+void mp32bcopy(mp32barrett* b, const mp32barrett* copy)
+       /*@modifies b @*/;
 
 BEEDLLAPI
-void mp32bmu       (mp32barrett*);
-
-BEEDLLAPI
-void mp32brnd      (const mp32barrett*, randomGeneratorContext*);
+void mp32bset(mp32barrett* b, uint32 size, const uint32* data)
+       /*@modifies b @*/;
 BEEDLLAPI
-void mp32brndres   (const mp32barrett*, uint32*, randomGeneratorContext*);
+void mp32bsethex(mp32barrett* b, const char* hex)
+       /*@modifies b @*/;
 
 BEEDLLAPI
-void mp32bmodsubone(const mp32barrett*);
+void mp32bsubone(const mp32barrett* b, /*@out@*/ uint32* result)
+       /*@modifies result @*/;
+
 BEEDLLAPI
-void mp32bneg      (const mp32barrett*);
+void mp32bmu_w(mp32barrett* b, /*@out@*/ uint32* wksp)
+       /*@modifies b, wksp @*/;
 
 BEEDLLAPI
-void mp32bmod      (const mp32barrett*, uint32, const uint32*);
+void mp32brnd_w   (const mp32barrett* b, randomGeneratorContext* rc, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 BEEDLLAPI
-void mp32baddmod   (const mp32barrett*, uint32, const uint32*, uint32, const uint32*);
+void mp32brndodd_w(const mp32barrett* b, randomGeneratorContext* rc, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 BEEDLLAPI
-void mp32bsubmod   (const mp32barrett*, uint32, const uint32*, uint32, const uint32*);
+void mp32brndinv_w(const mp32barrett* b, randomGeneratorContext* rc, /*@out@*/ uint32* result, uint32* inverse, /*@out@*/ uint32* wksp)
+       /*@modifies result, inverse, wksp @*/;
 
 BEEDLLAPI
-void mp32bmulmodres(const mp32barrett*, uint32*, uint32, const uint32*, uint32, const uint32*);
+void mp32bneg_w(const mp32barrett* b, const uint32* xdata, uint32* result)
+       /*@modifies result @*/;
 BEEDLLAPI
-void mp32bsqrmodres(const mp32barrett*, uint32*, uint32, const uint32*);
+void mp32bmod_w(const mp32barrett* b, const uint32* xdata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 
 BEEDLLAPI
-void mp32bmulmod   (const mp32barrett*, uint32, const uint32*, uint32, const uint32*);
+void mp32baddmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 BEEDLLAPI
-void mp32bsqrmod   (const mp32barrett*, uint32, const uint32*);
-
+void mp32bsubmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
+BEEDLLAPI
+void mp32bmulmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 ysize, const uint32* ydata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
+BEEDLLAPI
+void mp32bsqrmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
+BEEDLLAPI
+void mp32bpowmod_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, uint32 psize, const uint32* pdata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 BEEDLLAPI
-void mp32bpowmod   (const mp32barrett*, uint32, const uint32*, uint32, const uint32*);
+void mp32bpowmodsld_w(const mp32barrett* b, const uint32* slide, uint32 psize, const uint32* pdata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 BEEDLLAPI
-void mp32btwopowmod(const mp32barrett*, uint32, const uint32*);
+void mp32btwopowmod_w(const mp32barrett* b, uint32 psize, const uint32* pdata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
+
+BEEDLLAPI
+int  mp32binv_w(const mp32barrett* b, uint32 xsize, const uint32* xdata, /*@out@*/ uint32* result, /*@out@*/ uint32* wksp)
+       /*@modifies result, wksp @*/;
 
-/* simultaneous multiple exponentiation, for use in dsa and elgamal signature verification */
 
+/* To be added:
+ * simultaneous multiple exponentiation, for use in dsa and elgamal signature verification
+ */
 BEEDLLAPI
-void mp32bsm2powmod(const mp32barrett*, const uint32*, const uint32*, const uint32*, const uint32*);
+void mp32bsm2powmod(const mp32barrett* b, const uint32*, const uint32*, const uint32*, const uint32*);
 BEEDLLAPI
-void mp32bsm3powmod(const mp32barrett*, const uint32*, const uint32*, const uint32*, const uint32*, const uint32*, const uint32*);
+void mp32bsm3powmod(const mp32barrett* b, const uint32*, const uint32*, const uint32*, const uint32*, const uint32*, const uint32*);
 
-BEEDLLAPI
-int  mp32binv      (const mp32barrett*, uint32, const uint32*);
 
 BEEDLLAPI
-int  mp32bpprime   (const mp32barrett*, randomGeneratorContext*, int);
+int  mp32bpprime_w(const mp32barrett* b, randomGeneratorContext* rc, int t, /*@out@*/ uint32* wksp)
+       /*@modifies wksp @*/;
 
 /* the next routines take mp32numbers as parameters */
 
 BEEDLLAPI
-void mp32bnmulmodres(const mp32barrett*, uint32*, const mp32number*, const mp32number*);
+void mp32bnrnd(const mp32barrett* b, randomGeneratorContext* rc, /*@out@*/ mp32number* result)
+       /*@modifies result @*/;
+
+BEEDLLAPI
+void mp32bnmulmod(const mp32barrett* b, const mp32number* x, const mp32number* y, /*@out@*/ mp32number* result)
+       /*@modifies result @*/;
 BEEDLLAPI
-void mp32bnsqrmodres(const mp32barrett*, uint32*, const mp32number*);
+void mp32bnsqrmod(const mp32barrett* b, const mp32number* x, /*@out@*/ mp32number* result)
+       /*@modifies result @*/;
 
 BEEDLLAPI
-void mp32bnpowmod   (const mp32barrett*, const mp32number*, const mp32number*);
+void mp32bnpowmod   (const mp32barrett* b, const mp32number* x, const mp32number* pow, mp32number* y)
+       /*@modifies y @*/;
 BEEDLLAPI
-void mp32bnsqrmod   (const mp32barrett*, const mp32number*);
+void mp32bnpowmodsld(const mp32barrett* b, const uint32* slide, const mp32number* pow, mp32number* y)
+       /*@modifies y @*/;
 
 #ifdef __cplusplus
 }
index ede59b0..6b67af5 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Multiple precision numbers, code
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #include "mp32.h"
 
 #if HAVE_STDLIB_H
-#include <stdlib.h>
+# include <stdlib.h>
+#endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
 #endif
 
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32nzero(mp32number* n)
 {
        n->size = 0;
        n->data = (uint32*) 0;
 }
+/*@=nullstate@*/
 
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32nsize(mp32number* n, uint32 size)
 {
-       n->size = size;
-       n->data = (uint32*) malloc(size * sizeof(uint32));
+       if (size)
+       {
+               if (n->data)
+               {
+                       if (n->size != size)
+                               n->data = (uint32*) realloc(n->data, size * sizeof(uint32));
+               }
+               else
+                       n->data = (uint32*) malloc(size * sizeof(uint32));
+
+               if (n->data == (uint32*) 0)
+                       n->size = 0;
+               else
+                       n->size = size;
+
+       }
+       else if (n->data)
+       {
+               free(n->data);
+               n->data = (uint32*) 0;
+               n->size = 0;
+       }
 }
+/*@=nullstate@*/
 
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32ninit(mp32number* n, uint32 size, const uint32* data)
 {
        n->size = size;
        n->data = (uint32*) malloc(size * sizeof(uint32));
 
-       if (n->data)
-       {
+       if (n->data && data)
                mp32copy(size, n->data, data);
-       }
 }
+/*@=nullstate@*/
 
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32nfree(mp32number* n)
 {
        if (n->data)
@@ -64,7 +92,20 @@ void mp32nfree(mp32number* n)
        }
        n->size = 0;
 }
+/*@=nullstate@*/
+
+void mp32ncopy(mp32number* n, const mp32number* copy)
+{
+       mp32nset(n, copy->size, copy->data);
+}
 
+void mp32nwipe(mp32number* n)
+{
+       if (n->data)
+               mp32zero(n->size, n->data);
+}
+
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32nset(mp32number* n, uint32 size, const uint32* data)
 {
        if (size)
@@ -75,25 +116,25 @@ void mp32nset(mp32number* n, uint32 size, const uint32* data)
                                n->data = (uint32*) realloc(n->data, size * sizeof(uint32));
                }
                else
-               {
                        n->data = (uint32*) malloc(size * sizeof(uint32));
-               }
+
+               if (n->data && data)
+                       /*@-nullpass@*/ /* LCL: data != NULL */
+                       mp32copy(n->size = size, n->data, data);
+                       /*@=nullpass@*/
+               else
+                       n->size = 0;
        }
-       else
+       else if (n->data)
        {
                free(n->data);
                n->data = (uint32*) 0;
-       }
-
-       if (n->data)
-       {
-               n->size = size;
-               mp32copy(size, n->data, data);
-       }
-       else
                n->size = 0;
+       }
 }
+/*@=nullstate@*/
 
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32nsetw(mp32number* n, uint32 val)
 {
        if (n->data)
@@ -112,12 +153,14 @@ void mp32nsetw(mp32number* n, uint32 val)
        else
                n->size = 0;
 }
+/*@=nullstate@*/
 
+/*@-nullstate@*/       /* n->data may be NULL */
 void mp32nsethex(mp32number* n, const char* hex)
 {
-       int length = strlen(hex);
-       int size = (length+7) >> 3;
-       int rem = length & 0x7;
+       uint32 length = strlen(hex);
+       uint32 size = (length+7) >> 3;
+       uint8 rem = (uint8)(length & 0x7);
 
        if (n->data)
        {
@@ -129,7 +172,7 @@ void mp32nsethex(mp32number* n, const char* hex)
 
        if (n->data)
        {
-               register uint32  temp = 0;
+               register uint32  val = 0;
                register uint32* dst = n->data;
                register char ch;
 
@@ -138,23 +181,24 @@ void mp32nsethex(mp32number* n, const char* hex)
                while (length-- > 0)
                {
                        ch = *(hex++);
-                       temp <<= 4;
+                       val <<= 4;
                        if (ch >= '0' && ch <= '9')
-                               temp += (ch - '0');
+                               val += (ch - '0');
                        else if (ch >= 'A' && ch <= 'F')
-                               temp += (ch - 'A') + 10;
+                               val += (ch - 'A') + 10;
                        else if (ch >= 'a' && ch <= 'f')
-                               temp += (ch - 'a') + 10;
+                               val += (ch - 'a') + 10;
 
                        if ((length & 0x7) == 0)
                        {
-                               *(dst++) = temp;
-                               temp = 0;
+                               *(dst++) = val;
+                               val = 0;
                        }
                }
-               if (rem)
-                       *dst = temp;
+               if (rem != 0)
+                       *dst = val;
        }
        else
                n->size = 0;
 }
+/*@=nullstate@*/
index 3ada02d..494b3b4 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Multiprecision numbers, header
  *
- * Copyright (c) 1997-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #ifndef _MP32NUMBER_H
 #define _MP32NUMBER_H
 
-#include "beecrypt.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
 
 typedef struct
 {
        uint32  size;
-       uint32* data;
+/*@only@*/ uint32* data;
 } mp32number;
 
 #ifdef __cplusplus
@@ -39,20 +41,33 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-void mp32nzero(mp32number*);
+void mp32nzero(mp32number* n)
+       /*@modifies n @*/;
+BEEDLLAPI
+void mp32nsize(mp32number* n, uint32 size)
+       /*@modifies n @*/;
+BEEDLLAPI
+void mp32ninit(mp32number* n, uint32 size, const uint32* data)
+       /*@modifies n @*/;
 BEEDLLAPI
-void mp32nsize(mp32number*, uint32);
+void mp32nfree(mp32number* n)
+       /*@modifies n @*/;
 BEEDLLAPI
-void mp32ninit(mp32number*, uint32, const uint32*);
+void mp32ncopy(mp32number* n, const mp32number* copy)
+       /*@modifies n @*/;
 BEEDLLAPI
-void mp32nfree(mp32number*);
+void mp32nwipe(mp32number* n)
+       /*@modifies n @*/;
 
 BEEDLLAPI
-void mp32nset   (mp32number*, uint32, const uint32*);
+void mp32nset   (mp32number* n, uint32 size, /*@null@*/ const uint32* data)
+       /*@modifies n @*/;
 BEEDLLAPI
-void mp32nsetw  (mp32number*, uint32);
+void mp32nsetw  (mp32number* n, uint32 val)
+       /*@modifies n @*/;
 BEEDLLAPI
-void mp32nsethex(mp32number*, const char*);
+void mp32nsethex(mp32number* n, const char* hex)
+       /*@modifies n @*/;
 
 #ifdef __cplusplus
 }
index c81eca1..8826075 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Multi-precision primes, code
  *
- * Copyright (c) 2000 Virtual Unlimited B.V.
+ * Copyright (c) 2000, 2001 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 #include "mp32barrett.h"
 
 #if HAVE_STDLIB_H
-#include <stdlib.h>
+# include <stdlib.h>
+#endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
 #endif
 
 #include <stdio.h>
@@ -863,81 +866,101 @@ int mp32ptrials(uint32 bits)
 }
 
 static void mp32prndbits(mp32barrett* p, uint8 msbclr, uint8 lsbset, randomGeneratorContext* rc)
+       /*@modifies p->modl, *rc @*/
 {
-       register uint32 size = p->size;
+       register uint32 size;
 
-    rc->rng->next(rc->param, p->modl, size);
+       if (p == (mp32barrett*) 0 || p->modl == (uint32*) 0)
+               return;
 
-       if (msbclr)
+       size = p->size;
+       (void) rc->rng->next(rc->param, p->modl, size);
+
+       if (msbclr != 0)
                p->modl[0] &= (0xffffffff >> msbclr);
 
        p->modl[0] |= (0x80000000 >> msbclr);
 
-       if (lsbset)
+       if (lsbset != 0)
                p->modl[size] |= (0xffffffff >> (32 - lsbset));
 }
 
-int mp32psppdiv(const mp32barrett* p)
+/**
+ * mp32psppdiv_w
+ *  needs workspace of (3*size) words
+ */
+int mp32psppdiv_w(const mp32barrett* p, uint32* wksp)
 {
        /* small prime product trial division test */
        register uint32 size = p->size;
 
        if (size > SMALL_PRIMES_PRODUCT_MAX)
        {
-               mp32setx(size, p->wksp+size, SMALL_PRIMES_PRODUCT_MAX, mp32spprod[SMALL_PRIMES_PRODUCT_MAX-1]);
-               mp32gcd(p->data, size, p->modl, p->wksp+size, p->wksp);
+               mp32setx(size, wksp+size, SMALL_PRIMES_PRODUCT_MAX, mp32spprod[SMALL_PRIMES_PRODUCT_MAX-1]);
+               mp32gcd_w(size, p->modl, wksp+size, wksp, wksp+2*size);
        }
        else
        {
-               mp32gcd(p->data, size, p->modl, mp32spprod[size-1], p->wksp);
+               mp32gcd_w(size, p->modl, mp32spprod[size-1], wksp, wksp+2*size);
        }
 
-       return mp32isone(size, p->data);
+       return mp32isone(size, wksp);
 }
 
-int mp32pmilrabtwo(const mp32barrett* p, uint32 s, const uint32* rdata, const uint32* ndata)
+/**
+ * needs workspace of (5*size+2)
+ */
+int mp32pmilrabtwo_w(const mp32barrett* p, uint32 s, const uint32* rdata, const uint32* ndata, uint32* wksp)
 {
+       register uint32 size = p->size;
        register uint32 j = 0;
 
-       mp32btwopowmod(p, p->size, rdata);
+       mp32btwopowmod_w(p, size, rdata, wksp, wksp+size);
 
        while (1)
        {
-               if (mp32isone(p->size, p->data))
+               if (mp32isone(size, wksp))
                        return (j == 0);
 
-               if (mp32eq(p->size, p->data, ndata))
+               if (mp32eq(size, wksp, ndata))
                        return 1;
 
                if (++j < s)
-                       mp32bnsqrmodres(p, p->data, (mp32number*) p);
+                       mp32bsqrmod_w(p, size, wksp, wksp, wksp+size);
                else
                        return 0;
        }
 }
 
-int mp32pmilraba(const mp32barrett* p, const uint32* adata, uint32 s, const uint32* rdata, const uint32* ndata)
+/**
+ * needs workspace of (5*size+2) words
+ */
+int mp32pmilraba_w(const mp32barrett* p, const uint32* adata, uint32 s, const uint32* rdata, const uint32* ndata, uint32* wksp)
 {
+       register uint32 size = p->size;
        register uint32 j = 0;
 
-       mp32bpowmod(p, p->size, adata, p->size, rdata);
+       mp32bpowmod_w(p, size, adata, size, rdata, wksp, wksp+size);
 
        while (1)
        {
-               if (mp32isone(p->size, p->data))
+               if (mp32isone(size, wksp))
                        return (j == 0);
 
-               if (mp32eq(p->size, p->data, ndata))
+               if (mp32eq(size, wksp, ndata))
                        return 1;
 
                if (++j < s)
-                       mp32bnsqrmodres(p, p->data, (mp32number*) p);
+                       mp32bsqrmod_w(p, size, wksp, wksp, wksp+size);
                else
                        return 0;
        }
 }
 
-int mp32pmilrab(const mp32barrett* p, randomGeneratorContext* rc, int t)
+/**
+ * needs workspace of (8*size+2) words
+ */
+int mp32pmilrab_w(const mp32barrett* p, randomGeneratorContext* rc, int t, uint32* wksp)
 {
        /*
         * Miller-Rabin probabilistic primality test, with modification
@@ -953,16 +976,18 @@ int mp32pmilrab(const mp32barrett* p, randomGeneratorContext* rc, int t)
        /* this routine uses (size*3) storage, and calls mp32bpowmod, which needs (size*4+2) */
        /* (size) for a, (size) for r, (size) for n-1 */
 
-       register uint32* ndata = p->wksp+p->size*4+2;
-       register uint32* rdata = ndata+p->size;
-       register uint32* adata = rdata+p->size;
+       register uint32  size  = p->size;
+       register uint32* ndata = wksp;
+       register uint32* rdata = ndata+size;
+       register uint32* adata = rdata+size;
+
        uint32 s;
 
-       mp32copy(p->size, ndata, p->modl);
-       mp32subw(p->size, ndata, 1);
-       mp32copy(p->size, rdata, ndata);
+       mp32copy(size, ndata, p->modl);
+       (void) mp32subw(size, ndata, 1);
+       mp32copy(size, rdata, ndata);
 
-       s = mp32divpowtwo(p->size, rdata); /* we've split p-1 into (2^s)*r */
+       s = mp32divpowtwo(size, rdata); /* we've split p-1 into (2^s)*r */
 
        /* should do an assert that s != 0 */
 
@@ -970,46 +995,37 @@ int mp32pmilrab(const mp32barrett* p, randomGeneratorContext* rc, int t)
        if (t == 0)
                t++;
 
-       if (!mp32pmilrabtwo(p, s, rdata, ndata))
+       if (!mp32pmilrabtwo_w(p, s, rdata, ndata, wksp+3*size))
                return 0;
 
        while (t-- > 0)
        {
                /* generate a random 'a' into b->data */
-               mp32brndres(p, adata, rc);
+               mp32brnd_w(p, rc, adata, wksp);
 
-               if (!mp32pmilraba(p, adata, s, rdata, ndata))
+               if (!mp32pmilraba_w(p, adata, s, rdata, ndata, wksp+3*size))
                        return 0;
        }
 
     return 1;
 }
 
-void mp32prnd(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, const mp32number* f)
+/**
+ * needs workspace of (7*size+2) words
+ */
+void mp32prnd_w(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, const mp32number* f, uint32* wksp)
 {
        /*
-        * Generate a prime p with (size*32) bits
+        * Generate a prime into p with (size*32) bits
         *
         * Conditions: size(f) <= size(p)
         *
         * Optional input f: if f is not null, then search p so that GCD(p-1,f) = 1
         */
 
-       p->size = size;
-       p->data = (uint32*) calloc(size*10+4, sizeof(uint32));
-
-       if (p->data)
-       {
-               p->modl = p->data+size+0;
-               p->mu   = p->modl+size+1;
-               p->wksp = p->mu  +size+1;
-       }
-       else
-       {
-               p->modl = p->mu = p->wksp = (uint32*) 0;
-       }
+       mp32binit(p, size);
 
-       if (p->data)
+       if (p->modl != (uint32*) 0)
        {
                while (1)
                {
@@ -1021,133 +1037,135 @@ void mp32prnd(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, co
                        mp32prndbits(p, 0, 1, rc);
 
                        /* do a small prime product trial division test on p */
-                       if (!mp32psppdiv(p))
+                       if (!mp32psppdiv_w(p, wksp))
                                continue;
 
                        /* if we have an f, do the congruence test */
-                       if (f)
+                       if (f != (mp32number*) 0)
                        {
-                               mp32copy(size, p->data, p->modl);
-                               mp32subw(size, p->data, 1);
-                               mp32setx(size, p->wksp, f->size, f->data);
-                               mp32gcd(p->wksp+2*size, size, p->data, p->wksp, p->wksp+size);
-                               if (!mp32isone(size, p->wksp+2*size))
+                               mp32copy(size, wksp, p->modl);
+                               (void) mp32subw(size, wksp, 1);
+                               mp32setx(size, wksp+size, f->size, f->data);
+                               mp32gcd_w(size, wksp, wksp+size, wksp+2*size, wksp+3*size);
+
+                               if (!mp32isone(size, wksp+2*size))
                                        continue;
                        }
 
                        /* candidate has passed so far, now we do the probabilistic test */
-                       mp32bmu(p);
+                       mp32bmu_w(p, wksp);
 
-                       if (mp32pmilrab(p, rc, t))
+                       if (mp32pmilrab_w(p, rc, t, wksp))
                                return;
                }
        }
 }
 
-void mp32prndconone(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, const mp32barrett* q, const mp32number* f, mp32number* rr, int cofactor)
+/**
+ * needs workspace of (7*size+2) words
+ */
+void mp32prndconone_w(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, const mp32barrett* q, const mp32number* f, mp32number* r, int cofactor, uint32* wksp)
 {
        /*
-        * Generate a prime p with n bits such that p mod q = 1, and p = 2qr+1; k = 2r
+        * Generate a prime p with n bits such that p mod q = 1, and p = qr+1; r = 2s
         *
         * Conditions: q > 2 and size(q) < size(p) and size(f) <= size(p)
         *
-        * Conditions: k must be chosen so that k is even, otherwise p will be even!
+        * Conditions: r must be chosen so that r is even, otherwise p will be even!
         *
-        * if cofactor == 0, then r will be chosen randomly
-        * if cofactor == 1, then make sure that q does not divide k, i.e.:
-        *    q cannot be equal to k, since k is even, and q > 2; hence if q <= r make sure that GCD(q,r) == 1
-        * if cofactor == 2, then make sure that r is prime
+        * if cofactor == 0, then s will be chosen randomly
+        * if cofactor == 1, then make sure that q does not divide r, i.e.:
+        *    q cannot be equal to r, since r is even, and q > 2; hence if q <= r make sure that GCD(q,r) == 1
+        * if cofactor == 2, then make sure that s is prime
         * 
         * Optional input f: if f is not null, then search p so that GCD(p-1,f) = 1
         */
 
        mp32binit(p, size);
 
-       if (p->data)
+       if (p->modl != (uint32*) 0)
        {
-               mp32barrett r;
-
-               memset(&r, 0, sizeof(mp32barrett));
+               mp32barrett s;
 
-               mp32binit(&r, p->size - q->size);
+               mp32bzero(&s);
+               mp32binit(&s, p->size - q->size);
 
                while (1)
                {
-                       mp32prndbits(&r, 1, 0, rc);
+                       mp32prndbits(&s, 1, 0, rc);
 
                        if (cofactor == 1)
                        {
-                               r.modl[r.size-1] |= 0x1;
+                               mp32setlsb(s.size, s.modl);
 
-                               /* if (q <= r) check if GCD(q,r) != 1 */
-                               if (mp32lex(q->size, q->modl, r.size, r.modl))
+                               /* if (q <= s) check if GCD(q,s) != 1 */
+                               if (mp32lex(q->size, q->modl, s.size, s.modl))
                                {
-                                       /* we can find adequate storage for computing the gcd in r->wksp */
-                                       mp32setx(r.size, r.wksp+r.size, q->size, q->modl);
-                                       mp32gcd(r.data, r.size, r.modl, r.wksp+r.size, r.wksp);
+                                       /* we can find adequate storage for computing the gcd in s->wksp */
+                                       mp32setx(s.size, wksp, q->size, q->modl);
+                                       mp32gcd_w(s.size, s.modl, wksp, wksp+s.size, wksp+2*s.size);
 
-                                       if (!mp32isone(r.size, r.data))
+                                       if (!mp32isone(s.size, wksp))
                                                continue;
                                }
                        }
                        else if (cofactor == 2)
                        {
-                               r.modl[r.size-1] |= 0x1;
+                               mp32setlsb(s.size, s.modl);
                        }
 
-                       /* should do an assert that k is even */
-
                        if (cofactor == 2)
                        {
                                /* do a small prime product trial division test on r */
-                               if (!mp32psppdiv(&r))
+                               if (!mp32psppdiv_w(&s, wksp))
                                        continue;
                        }
 
-                       /* multiply q*r into p, multiply by two, then add 1 */
-                       mp32mul(p->modl, r.size, r.modl, q->size, q->modl);
-                       mp32multwo(p->size, p->modl);
-                       mp32addw(p->size, p->modl, 1);
+                       /* multiply q*s into p, multiply by two, then add 1 */
+                       mp32mul(p->modl, s.size, s.modl, q->size, q->modl);
+                       (void) mp32multwo(p->size, p->modl);
+                       (void) mp32addw(p->size, p->modl, 1);
 
                        /* do a small prime product trial division test on p */
-                       if (!mp32psppdiv(p))
+                       if (!mp32psppdiv_w(p, wksp))
                                continue;
 
                        /* if we have an f, do the congruence test */
-                       if (f)
+                       if (f != (mp32number*) 0)
                        {
-                               mp32copy(size, p->data, p->modl);
-                               mp32subw(size, p->data, 1);
-                               mp32setx(size, p->wksp, f->size, f->data);
-                               mp32gcd(p->wksp+2*size, size, p->data, p->wksp, p->wksp+size);
-                               if (!mp32isone(size, p->wksp+2*size))
+                               mp32copy(size, wksp, p->modl);
+                               (void) mp32subw(size, wksp, 1);
+                               mp32setx(size, wksp, f->size, f->data);
+                               mp32gcd_w(size, wksp, wksp+size, wksp+2*size, wksp+3*size);
+                               if (!mp32isone(size, wksp+2*size))
                                        continue;
                        }
 
-                       /* if cofactor is two, test if r is prime */
+                       /* if cofactor is two, test if s is prime */
                        if (cofactor == 2)
                        {
-                               mp32bmu(&r);
+                               mp32bmu_w(&s, wksp);
 
-                               if (!mp32pmilrab(&r, rc, mp32ptrials(r.size << 5)))
+                               if (!mp32pmilrab_w(&s, rc, mp32ptrials(s.size << 5), wksp))
                                        continue;
                        }
 
                        /* candidate has passed so far, now we do the probabilistic test on p */
-                       mp32bmu(p);
+                       mp32bmu_w(p, wksp);
 
-                       if (!mp32pmilrab(p, rc, t))
+                       if (!mp32pmilrab_w(p, rc, t, wksp))
                                continue;
 
-                       mp32nset(rr, r.size, r.modl);
-                       mp32bfree(&r);
+                       mp32nset(r, s.size, s.modl);
+                       (void) mp32multwo(r->size, r->data);
+                       mp32bfree(&s);
 
                        return;
                }
        }
 }
 
-void mp32prndsafe(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t)
+void mp32prndsafe_w(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, uint32* wksp)
 {
        /*
         * Initialize with a probable safe prime of 'size' words, with probability factor t
@@ -1156,26 +1174,13 @@ void mp32prndsafe(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t
         * Use for ElGamal type schemes, where a generator of order (p-1) is required
         */
 
-       p->size = size;
-       p->data = (uint32*) calloc(size*10+4, sizeof(uint32));
-
-       if (p->data)
-       {
-               p->modl = p->data+size+0;
-               p->mu   = p->modl+size+1;
-               p->wksp = p->mu  +size+1;
-       }
-       else
-       {
-               p->modl = p->mu = p->wksp = (uint32*) 0;
-       }
+       mp32binit(p, size);
 
-       if (p->data)
+       if (p->modl != (uint32*) 0)
        {
                mp32barrett q;
 
-               memset(&q, 0, sizeof(mp32barrett));
-
+               mp32bzero(&q);
                mp32binit(&q, size);
 
                while (1)
@@ -1191,22 +1196,22 @@ void mp32prndsafe(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t
                        mp32divtwo(size, q.modl);
 
                        /* do a small prime product trial division on q */
-                       if (!mp32psppdiv(&q))
+                       if (!mp32psppdiv_w(&q, wksp))
                                continue;
 
                        /* do a small prime product trial division on p */
-                       if (!mp32psppdiv(p))
+                       if (!mp32psppdiv_w(p, wksp))
                                continue;
 
                        /* candidate prime has passed small prime division test for p and q */
-                       mp32bmu(&q);
+                       mp32bmu_w(&q, wksp);
 
-                       if (!mp32pmilrab(&q, rc, t))
+                       if (!mp32pmilrab_w(&q, rc, t, wksp))
                 continue;
 
-            mp32bmu(p);
+            mp32bmu_w(p, wksp);
 
-            if (!mp32pmilrab(p, rc, t))
+            if (!mp32pmilrab_w(p, rc, t, wksp))
                                continue;
 
                        mp32bfree(&q);
index c2ff588..10c5a66 100644 (file)
@@ -37,18 +37,24 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int  mp32ptrials   (uint32);
+int  mp32ptrials     (uint32 bits)
+       /*@*/;
 BEEDLLAPI
-int  mp32pmilrab   (const mp32barrett*, randomGeneratorContext*, int);
+int  mp32pmilrab_w   (const mp32barrett* p, randomGeneratorContext* rc, int t, uint32* wksp)
+       /*@modifies wksp @*/;
 
 BEEDLLAPI
-void mp32prnd      (mp32barrett*, randomGeneratorContext*, uint32, int, const mp32number*);
+void mp32prnd_w      (mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, /*@null@*/ const mp32number* f, uint32* wksp)
+       /*@modifies p, rc, wksp @*/;
 BEEDLLAPI
-void mp32prndsafe  (mp32barrett*, randomGeneratorContext*, uint32, int);
+void mp32prndsafe_w  (mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, uint32* wksp)
+       /*@modifies p, rc, wksp @*/;
 BEEDLLAPI
-void mp32prndcon   (mp32barrett*, randomGeneratorContext*, uint32, int, const mp32number*, const mp32number*, const mp32number*, mp32number*);
+void mp32prndcon_w   (mp32barrett* p, randomGeneratorContext* rc, uint32, int, const mp32number*, const mp32number*, const mp32number*, mp32number*, uint32* wksp)
+       /*@modifies wksp @*/;
 BEEDLLAPI
-void mp32prndconone(mp32barrett*, randomGeneratorContext*, uint32, int, const mp32barrett*, const mp32number*, mp32number*, int);
+void mp32prndconone_w(mp32barrett* p, randomGeneratorContext* rc, uint32 size, int t, const mp32barrett* q, /*@null@*/ const mp32number* f, mp32number* r, int cofactor, uint32* wksp)
+       /*@modifies p, rc, r, wksp @*/;
 
 #ifdef __cplusplus
 }
index 1efeca1..bc73cbb 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Mersenne twister pseudo-random number generator, header
  *
- * Copyright (c) 1998-2000 Virtual Unlimited B.V.
+ * Copyright (c) 1998, 1999, 2000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
@@ -29,7 +29,8 @@
 #include "beecrypt.h"
 
 #if WIN32
-# include <Winbase.h>
+# include <windows.h>
+# include <winbase.h>
 #else
 # if HAVE_SYNCH_H
 #  include <synch.h>
@@ -73,13 +74,17 @@ extern "C" {
 extern BEEDLLAPI const randomGenerator mtprng;
 
 BEEDLLAPI
-int mtprngSetup  (mtprngParam*);
+int mtprngSetup  (mtprngParam* mp)
+       /*@modifies mp @*/;
 BEEDLLAPI
-int mtprngSeed   (mtprngParam*, const uint32*, int);
+int mtprngSeed   (mtprngParam* mp, const uint32* data, int size)
+       /*@modifies mp @*/;
 BEEDLLAPI
-int mtprngNext   (mtprngParam*, uint32*, int);
+int mtprngNext   (mtprngParam* mp, uint32* data, int size)
+       /*@modifies mp, data @*/;
 BEEDLLAPI
-int mtprngCleanup(mtprngParam*);
+int mtprngCleanup(mtprngParam* mp)
+       /*@modifies mp @*/;
 
 #ifdef __cplusplus
 }
diff --git a/beecrypt/mwerks/.cvsignore b/beecrypt/mwerks/.cvsignore
new file mode 100644 (file)
index 0000000..540cfea
--- /dev/null
@@ -0,0 +1,19 @@
+.deps
+.depend
+.depend-done
+.libs
+Makefile
+Makefile.in
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+libtool
+ltconfig
+ltmain.sh
+*.o
+*.lo
+stamp-h
+stamp-h.in
index 023fa79..3f654aa 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -89,14 +89,18 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+EXEEXT = @EXEEXT@
 LD = @LD@
 LIBTOOL = @LIBTOOL@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 LN_S = @LN_S@
 MAKEINFO = @MAKEINFO@
 OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 RANLIB = @RANLIB@
+STRIP = @STRIP@
 VERSION = @VERSION@
 ac_cv_have_java = @ac_cv_have_java@
 ac_cv_have_javac = @ac_cv_have_javac@
@@ -112,7 +116,7 @@ DIST_COMMON =  Makefile.am Makefile.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 all: all-redirect
 .SUFFIXES:
@@ -135,7 +139,7 @@ distdir: $(DISTFILES)
        @for file in $(DISTFILES); do \
          d=$(srcdir); \
          if test -d $$d/$$file; then \
-           cp -pr $$/$$file $(distdir)/$$file; \
+           cp -pr $$d/$$file $(distdir)/$$file; \
          else \
            test -f $(distdir)/$$file \
            || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
index 79320c7..5795bc7 100644 (file)
 #include "mp32.h"
 
 #if HAVE_STDLIB_H
-# include "stdlib.h"
+# include <stdlib.h>
 #endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
+#endif
+
 int rsapri(const rsakp* kp, const mp32number* m, mp32number* c)
 {
        register uint32  size = kp->n.size;
@@ -48,6 +52,7 @@ int rsapri(const rsakp* kp, const mp32number* m, mp32number* c)
        return -1;
 }
 
+/*@-nullpass@*/
 /* this routine doesn't work yet: needs debugging! */
 int rsapricrt(const rsakp* kp, const mp32number* m, mp32number* c)
 {
@@ -80,7 +85,7 @@ int rsapricrt(const rsakp* kp, const mp32number* m, mp32number* c)
        mp32bpowmod_w(&kp->q, qsize, temp+psize, kp->d2.size, kp->d2.data, temp+psize, wksp);
 
        /* compute j1-j2 */
-       mp32subx(psize, temp, qsize, temp+psize);
+       (void) mp32subx(psize, temp, qsize, temp+psize);
 
        /* compute h = c*(j1-j2) mod p */
        mp32bmulmod_w(&kp->p, psize, temp, psize, kp->c.data, temp, wksp);
@@ -90,16 +95,17 @@ int rsapricrt(const rsakp* kp, const mp32number* m, mp32number* c)
 
        /* compute s = h*q + j2 */
        mp32mul(c->data, psize, temp, qsize, kp->q.modl);
-       mp32addx(nsize, c->data, qsize, temp+psize);
+       (void) mp32addx(nsize, c->data, qsize, temp+psize);
 
        free(temp);
 
        return -1;
 }
+/*@=nullpass@*/
 
 /**
- * returns: 0 if signature verifies
- *          -1 otherwise, can also indicate errors
+ * returns: 1 if signature verifies
+ *          0 otherwise, can also indicate errors
  */
 int rsavrfy(const rsapk* pk, const mp32number* m, const mp32number* c)
 {
index 2722620..4b4c8c5 100644 (file)
@@ -33,12 +33,15 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int rsapri   (const rsakp* kp, const mp32number* m, mp32number* c);
+int rsapri   (const rsakp* kp, const mp32number* m, mp32number* c)
+       /*@modifies c */;
 BEEDLLAPI
-int rsapricrt(const rsakp* kp, const mp32number* m, mp32number* c);
+int rsapricrt(const rsakp* kp, const mp32number* m, mp32number* c)
+       /*@modifies c */;
 
 BEEDLLAPI
-int rsavrfy  (const rsapk* pk, const mp32number* m, const mp32number* c);
+int rsavrfy  (const rsapk* pk, const mp32number* m, const mp32number* c)
+       /*@*/;
 
 #ifdef __cplusplus
 }
index 7874fb2..33bc303 100644 (file)
 #if HAVE_STDLIB_H
 # include <stdlib.h>
 #endif
+#if HAVE_MALLOC_H
+# include <malloc.h>
+#endif
+#if HAVE_STRING_H
+# include <string.h>
+#endif
 
 int rsakpMake(rsakp* kp, randomGeneratorContext* rgc, int nsize)
 {
@@ -120,7 +126,7 @@ int rsakpMake(rsakp* kp, randomGeneratorContext* rgc, int nsize)
 
                /* compute d = inv(e) mod phi */
                mp32nsize(&kp->d, nsize);
-               mp32binv_w(&phi, kp->e.size, kp->e.data, kp->d.data, temp);
+               (void) mp32binv_w(&phi, kp->e.size, kp->e.data, kp->d.data, temp);
 
                /* compute d1 = d mod (p-1) */
                mp32nsize(&kp->d1, pqsize);
@@ -132,7 +138,7 @@ int rsakpMake(rsakp* kp, randomGeneratorContext* rgc, int nsize)
 
                /* compute c = inv(q) mod p */
                mp32nsize(&kp->c, pqsize);
-               mp32binv_w(&kp->p, pqsize, kp->q.modl, kp->c.data, temp);
+               (void) mp32binv_w(&kp->p, pqsize, kp->q.modl, kp->c.data, temp);
 
                free(temp);
 
index cac05cc..911f2f6 100644 (file)
@@ -47,13 +47,17 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int rsakpMake(rsakp*, randomGeneratorContext*, int);
+int rsakpMake(rsakp* kp, randomGeneratorContext* rgc, int nsize)
+       /*@modifies kp, rgc @*/;
 BEEDLLAPI
-int rsakpInit(rsakp*);
+int rsakpInit(rsakp* kp)
+       /*@modifies kp @*/;
 BEEDLLAPI
-int rsakpFree(rsakp*);
+int rsakpFree(rsakp* kp)
+       /*@modifies kp @*/;
 BEEDLLAPI
-int rsakpCopy(rsakp*, const rsakp*);
+int rsakpCopy(rsakp* dst, const rsakp* src)
+       /*@modifies dst @*/;
 
 #ifdef __cplusplus
 }
index f1f784a..7a165e9 100644 (file)
@@ -39,11 +39,14 @@ extern "C" {
 #endif
 
 BEEDLLAPI
-int rsapkInit(rsapk*);
+int rsapkInit(rsapk* pk)
+       /*@modifies pk @*/;
 BEEDLLAPI
-int rsapkFree(rsapk*);
+int rsapkFree(rsapk* pk)
+       /*@modifies pk @*/;
 BEEDLLAPI
-int rsapkCopy(rsapk*, const rsapk*);
+int rsapkCopy(rsapk* dst, const rsapk* src)
+       /*@modifies dst @*/;
 
 #ifdef __cplusplus
 }
index 0fd4635..0d0c9ae 100644 (file)
@@ -84,16 +84,16 @@ void sha256Process(register sha256Param *p)
        t = 16;
        while (t--)
        {
-               register uint32 temp = swapu32(*w);
-               *(w++) = temp;
+               register uint32 ttemp = swapu32(*w);
+               *(w++) = ttemp;
        }
        #endif
 
        t = 48;
        while (t--)
        {
-               register uint32 temp = sig1(w[-2]) + w[-7] + sig0(w[-15]) + w[-16];
-               *(w++) = temp;
+               register uint32 ttemp = sig1(w[-2]) + w[-7] + sig0(w[-15]) + w[-16];
+               *(w++) = ttemp;
        }
 
        w = p->data;
@@ -185,7 +185,7 @@ int sha256Update(register sha256Param *p, const byte *data, int size)
        while (size > 0)
        {
                proclength = ((p->offset + size) > 64) ? (64 - p->offset) : size;
-               memcpy(((byte *) p->data) + p->offset, data, proclength);
+               memmove(((byte *) p->data) + p->offset, data, proclength);
                size -= proclength;
                data += proclength;
                p->offset += proclength;
@@ -234,6 +234,6 @@ int sha256Digest(register sha256Param *p, uint32 *data)
 {
        sha256Finish(p);
        mp32copy(8, data, p->h);
-       sha256Reset(p);
+       (void) sha256Reset(p);
        return 0;
 }
index 5b1672d..9e47519 100644 (file)
@@ -43,13 +43,17 @@ extern "C" {
 extern BEEDLLAPI const hashFunction sha256;
 
 BEEDLLAPI
-void sha256Process(sha256Param*);
+void sha256Process(sha256Param* p)
+       /*@modifies p @*/;
 BEEDLLAPI
-int  sha256Reset  (sha256Param*);
+int  sha256Reset  (sha256Param* p)
+       /*@modifies p @*/;
 BEEDLLAPI
-int  sha256Update (sha256Param*, const byte*, int);
+int  sha256Update (sha256Param* p, const byte* data, int size)
+       /*@modifies p @*/;
 BEEDLLAPI
-int  sha256Digest (sha256Param*, uint32*);
+int  sha256Digest (sha256Param* p, uint32* data)
+       /*@modifies p, data @*/;
 
 #ifdef __cplusplus
 }
diff --git a/beecrypt/tests/.cvsignore b/beecrypt/tests/.cvsignore
new file mode 100644 (file)
index 0000000..540cfea
--- /dev/null
@@ -0,0 +1,19 @@
+.deps
+.depend
+.depend-done
+.libs
+Makefile
+Makefile.in
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+libtool
+ltconfig
+ltmain.sh
+*.o
+*.lo
+stamp-h
+stamp-h.in
index 61bff83..420ad6b 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -89,14 +89,18 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+EXEEXT = @EXEEXT@
 LD = @LD@
 LIBTOOL = @LIBTOOL@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 LN_S = @LN_S@
 MAKEINFO = @MAKEINFO@
 OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 RANLIB = @RANLIB@
+STRIP = @STRIP@
 VERSION = @VERSION@
 ac_cv_have_java = @ac_cv_have_java@
 ac_cv_have_javac = @ac_cv_have_javac@
@@ -117,7 +121,7 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-beetest_OBJECTS =  beetest.o
+beetest_OBJECTS =  beetest.$(OBJEXT)
 beetest_LDADD = $(LDADD)
 beetest_DEPENDENCIES =  $(top_builddir)/libbeecrypt.la
 beetest_LDFLAGS = 
@@ -131,14 +135,14 @@ DIST_COMMON =  Makefile.am Makefile.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 SOURCES = $(beetest_SOURCES)
 OBJECTS = $(beetest_OBJECTS)
 
 all: all-redirect
 .SUFFIXES:
-.SUFFIXES: .S .c .lo .o .s
+.SUFFIXES: .S .c .lo .o .obj .s
 $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
        cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile
 
@@ -150,6 +154,11 @@ Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
 .c.o:
        $(COMPILE) -c $<
 
+# FIXME: We should only use cygpath when building on Windows,
+# and only if it is available.
+.c.obj:
+       $(COMPILE) -c `cygpath -w $<`
+
 .s.o:
        $(COMPILE) -c $<
 
@@ -158,6 +167,7 @@ Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
 
 mostlyclean-compile:
        -rm -f *.o core *.core
+       -rm -f *.$(OBJEXT)
 
 clean-compile:
 
@@ -185,8 +195,8 @@ distclean-libtool:
 
 maintainer-clean-libtool:
 
-beetest: $(beetest_OBJECTS) $(beetest_DEPENDENCIES)
-       @rm -f beetest
+beetest$(EXEEXT): $(beetest_OBJECTS) $(beetest_DEPENDENCIES)
+       @rm -f beetest$(EXEEXT)
        $(LINK) $(beetest_LDFLAGS) $(beetest_OBJECTS) $(beetest_LDADD) $(LIBS)
 
 tags: TAGS
@@ -226,7 +236,7 @@ distdir: $(DISTFILES)
        @for file in $(DISTFILES); do \
          d=$(srcdir); \
          if test -d $$d/$$file; then \
-           cp -pr $$/$$file $(distdir)/$$file; \
+           cp -pr $$d/$$file $(distdir)/$$file; \
          else \
            test -f $(distdir)/$$file \
            || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
index 86462f2..d4eead2 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Java compatible 64-bit timestamp, code
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 19992000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 
 javalong timestamp()
 {
+       javalong tmp;
        #if HAVE_SYS_TIME_H
        # if HAVE_GETTIMEOFDAY
        struct timeval now;
-       gettimeofday(&now, 0);
-       return (now.tv_sec * 1000LL) + (now.tv_usec / 1000);
+
+       (void) gettimeofday(&now, 0);
+
+       tmp = ((javalong) now.tv_sec) * 1000 + (now.tv_usec / 1000);
+       # else
+       #  error
        # endif
        #elif HAVE_TIME_H
-       return time(0) * 1000LL;
+       tmp = ((javalong) time(0)) * 1000;
        #else
        # error implement other time function
        #endif
+
+       return tmp;
 }
index efb1d1e..364273d 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Java-compatible 64 bit timestamp, header
  *
- * Copyright (c) 1999-2000 Virtual Unlimited B.V.
+ * Copyright (c) 19992000 Virtual Unlimited B.V.
  *
  * Author: Bob Deblier <bob@virtualunlimited.com>
  *
 
 #include "beecrypt.h"
 
-#define ONE_SECOND     1000LL
-#define ONE_MINUTE     60000LL
-#define ONE_HOUR       3600000LL
-#define ONE_DAY                86400000LL
+#if HAVE_LONG_LONG
+# define ONE_SECOND    1000LL
+# define ONE_MINUTE    60000LL
+# define ONE_HOUR      3600000LL
+# define ONE_DAY       86400000LL
+# define ONE_WEEK      604800000LL
+#else
+# define ONE_SECOND    1000L
+# define ONE_MINUTE    60000L
+# define ONE_HOUR      3600000L
+# define ONE_DAY       86400000L
+# define ONE_WEEK      604800000L
+#endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 BEEDLLAPI
-javalong timestamp();
+javalong timestamp(void);
 
 #ifdef __cplusplus
 }