diff options
Diffstat (limited to 'beecrypt')
72 files changed, 15299 insertions, 3701 deletions
diff --git a/beecrypt/.cvsignore b/beecrypt/.cvsignore new file mode 100644 index 000000000..10ba48458 --- /dev/null +++ b/beecrypt/.cvsignore @@ -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 index 000000000..7f7f786b7 --- /dev/null +++ b/beecrypt/.lclintrc @@ -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 diff --git a/beecrypt/Makefile.am b/beecrypt/Makefile.am index c2285d348..89a62a018 100644 --- a/beecrypt/Makefile.am +++ b/beecrypt/Makefile.am @@ -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} diff --git a/beecrypt/Makefile.in b/beecrypt/Makefile.in index 8d5bd7832..501b4e12b 100644 --- a/beecrypt/Makefile.in +++ b/beecrypt/Makefile.in @@ -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> # @@ -14,214 +26,537 @@ # 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: diff --git a/beecrypt/aclocal.m4 b/beecrypt/aclocal.m4 index f2a44c427..21bcffb35 100644 --- a/beecrypt/aclocal.m4 +++ b/beecrypt/aclocal.m4 @@ -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,81 +125,69 @@ 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 - -# 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]) - -# Reload cache, that may have been modified by ltconfig -AC_CACHE_LOAD - # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl -# Redirect the config.log output again, so that the ltconfig log is not -# clobbered by the next message. -exec 5>>./config.log +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) ]) -AC_DEFUN(AC_LIBTOOL_SETUP, +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_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 -case "$target" in -NONE) lt_target="$host" ;; -*) lt_target="$target" ;; +_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 -# 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"]) +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], -[libtool_flags="$libtool_flags --enable-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 && libtool_flags="$libtool_flags --disable-lock" -test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" +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 "$lt_target" in +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.o`" in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -219,7 +207,10 @@ case "$lt_target" in 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])]) + [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" @@ -227,33 +218,2674 @@ case "$lt_target" in ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw*) +[*-*-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. + +# 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 +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 index 000000000..78c54efcb --- /dev/null +++ b/beecrypt/autogen.sh @@ -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 diff --git a/beecrypt/base64.c b/beecrypt/base64.c index c5a9b2a34..5fbc2993b 100644 --- a/beecrypt/base64.c +++ b/beecrypt/base64.c @@ -28,13 +28,13 @@ #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; } } } diff --git a/beecrypt/base64.h b/beecrypt/base64.h index 0566768a9..5bb6cc6ad 100644 --- a/beecrypt/base64.h +++ b/beecrypt/base64.h @@ -32,10 +32,12 @@ 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 } diff --git a/beecrypt/beecrypt.h b/beecrypt/beecrypt.h index a139ca667..c01da1823 100644 --- a/beecrypt/beecrypt.h +++ b/beecrypt/beecrypt.h @@ -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 @@ -29,11 +30,8 @@ # 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 } diff --git a/beecrypt/blockmode.h b/beecrypt/blockmode.h index acbf972db..88b4a12a2 100644 --- a/beecrypt/blockmode.h +++ b/beecrypt/blockmode.h @@ -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 } diff --git a/beecrypt/blockpad.c b/beecrypt/blockpad.c index 0efccf2c1..61d8c0847 100644 --- a/beecrypt/blockpad.c +++ b/beecrypt/blockpad.c @@ -30,117 +30,98 @@ #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; } diff --git a/beecrypt/blockpad.h b/beecrypt/blockpad.h index c845646bc..683f763d2 100644 --- a/beecrypt/blockpad.h +++ b/beecrypt/blockpad.h @@ -32,15 +32,19 @@ 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 } diff --git a/beecrypt/blowfish.c b/beecrypt/blowfish.c index b35181bcf..7bf413248 100644 --- a/beecrypt/blowfish.c +++ b/beecrypt/blowfish.c @@ -10,7 +10,7 @@ * * Also see: http://www.counterpane.com/blowfish.html * - * Copyright (c) 1999-2000 Virtual Unlimited B.V. + * Copyright (c) 1999, 2000 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; diff --git a/beecrypt/blowfish.h b/beecrypt/blowfish.h index 2bfc497df..2955bb8da 100644 --- a/beecrypt/blowfish.h +++ b/beecrypt/blowfish.h @@ -3,7 +3,7 @@ * * Blowfish block cipher, header * - * Copyright (c) 1999-2000 Virtual Unlimited B.V. + * Copyright (c) 1999, 2000 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 } diff --git a/beecrypt/config.gnu.h.in b/beecrypt/config.gnu.h.in index 7a745eb9a..d33dbd846 100644 --- a/beecrypt/config.gnu.h.in +++ b/beecrypt/config.gnu.h.in @@ -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 @@ -78,13 +48,6 @@ #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 @@ -118,142 +81,120 @@ #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 diff --git a/beecrypt/config.guess b/beecrypt/config.guess index 72f934d40..ba6616516 100755 --- a/beecrypt/config.guess +++ b/beecrypt/config.guess @@ -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 @@ -22,18 +25,92 @@ # 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: diff --git a/beecrypt/config.h b/beecrypt/config.h index 810061917..25ef1efbd 100644 --- a/beecrypt/config.h +++ b/beecrypt/config.h @@ -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> * @@ -26,16 +26,52 @@ #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 diff --git a/beecrypt/config.sub b/beecrypt/config.sub index 3d2a1bf7b..a06a480ad 100755 --- a/beecrypt/config.sub +++ b/beecrypt/config.sub @@ -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. @@ -45,30 +51,73 @@ # 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: diff --git a/beecrypt/configure b/beecrypt/configure index 2da9910a7..c6537dbf9 100755 --- a/beecrypt/configure +++ b/beecrypt/configure @@ -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,87 +1379,4123 @@ 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=":" + # 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 - # 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. + 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 +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 - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi + 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 - done - IFS="$ac_save_IFS" + # 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 - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" + +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 - # 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" + 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 -echo "$ac_t""$INSTALL" 1>&6 +rm -fr conftest* -# 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}' + +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 +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 + + + + + +# 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 -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' 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 @@ -1011,29 +5523,292 @@ 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 +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 - 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 +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 - ac_cv_prog_SUNPRO_CC=no + echo "configure: warning: java not found, disabling javaglue" 1>&2 + ac_cv_java_headers=no + ac_with_javaglue=no fi - echo "$ac_t""$ac_cv_prog_SUNPRO_CC" 1>&6 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 + + + + + + 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,21 @@ 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 - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1367 "configure" -#include "confdefs.h" -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> -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; } -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 -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -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 1392 "configure" -#include "confdefs.h" -#include <string.h> -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -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 1410 "configure" -#include "confdefs.h" -#include <stdlib.h> -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -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 - : -else - cat > conftest.$ac_ext <<EOF -#line 1431 "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); } - -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 - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -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 -EOF - -fi - - 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:1470: checking for $ac_hdr" >&5 +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 1475 "configure" +#line 6065 "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: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* @@ -1502,21 +6092,21 @@ else fi done -for ac_hdr in unistd.h fcntl.h limits.h +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:1510: checking for $ac_hdr" >&5 +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 1515 "configure" +#line 6105 "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: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* @@ -1542,21 +6132,21 @@ else fi done -for ac_hdr in time.h +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:1550: checking for $ac_hdr" >&5 +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 1555 "configure" +#line 6145 "configure" #include "confdefs.h" #include <$ac_hdr> 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; } +{ (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* @@ -1582,21 +6172,21 @@ else fi done -for ac_hdr in sys/types.h sys/stat.h sys/time.h +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:1590: checking for $ac_hdr" >&5 +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 1595 "configure" +#line 6185 "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: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* @@ -1622,21 +6212,21 @@ else fi done -for ac_hdr in thread.h pthread.h synch.h semaphore.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:1630: 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 1635 "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:1640: \"$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* @@ -1662,61 +6252,22 @@ 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 - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1675 "configure" -#include "confdefs.h" -#include <$ac_hdr> -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 - 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 -for ac_hdr in sys/audioio.h sys/ioctl.h sys/soundcard.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:1710: 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 1715 "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:1720: \"$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* @@ -1742,15 +6293,14 @@ 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 +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 1754 "configure" +#line 6304 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gettimeofday(); below. */ @@ -1773,7 +6323,7 @@ gettimeofday(); ; 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:6327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettimeofday=yes" else @@ -1798,12 +6348,12 @@ else fi echo $ac_n "checking for gethrtime""... $ac_c" 1>&6 -echo "configure:1802: checking for gethrtime" >&5 +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 1807 "configure" +#line 6357 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethrtime(); below. */ @@ -1826,7 +6376,7 @@ gethrtime(); ; return 0; } EOF -if { (eval echo configure:1830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +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 @@ -1852,23 +6402,72 @@ fi 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 +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: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 6424 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (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* + 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 + + 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 1865 "configure" +#line 6464 "configure" #include "confdefs.h" int main() { main() ; 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: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 @@ -1891,23 +6490,23 @@ EOF 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 + 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 1904 "configure" +#line 6503 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:1911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +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 @@ -1930,10 +6529,589 @@ EOF 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: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 6552 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (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* + 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 + + 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 + ac_func_search_save_LIBS="$LIBS" +ac_cv_search_aio_read="no" +cat > conftest.$ac_ext <<EOF +#line 6593 "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:6604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + 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 "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_have_working_aio=no +fi +rm -fr conftest* +fi + + +fi + +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: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 6770 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (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* + 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 + + 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 + ac_save_LIBS="$LIBS" +LIBS="-lmtmalloc $LIBS" +cat > conftest.$ac_ext <<EOF +#line 6809 "configure" +#include "confdefs.h" + +int main() { +main() +; return 0; } +EOF +if { (eval echo configure:6816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_lib_mtmalloc=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_lib_mtmalloc=no +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +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 + + LIBS="-lmtmalloc $LIBS" + +fi + + fi + ;; +esac + +CFLAGS="" +CPPFLAGS="" +LDFLAGS="" + +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 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 + 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 + +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_cv_c_bigendian=unknown +# See if sys/param.h defines the BYTE_ORDER macro. +cat > conftest.$ac_ext <<EOF +#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() { + +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif +; return 0; } +EOF +if { (eval echo configure:7057: \"$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 +fi +rm -f conftest* +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +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 7077 "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); +} +EOF +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 -fr conftest* + ac_cv_c_bigendian=yes +fi +rm -fr conftest* +fi + +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 +EOF + 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 diff --git a/beecrypt/dhaes.c b/beecrypt/dhaes.c index a34144cdd..9442cb077 100644 --- a/beecrypt/dhaes.c +++ b/beecrypt/dhaes.c @@ -39,92 +39,154 @@ #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; diff --git a/beecrypt/dhaes.h b/beecrypt/dhaes.h index 21bb8f308..96439a943 100644 --- a/beecrypt/dhaes.h +++ b/beecrypt/dhaes.h @@ -31,24 +31,48 @@ 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 diff --git a/beecrypt/dldp.c b/beecrypt/dldp.c index 2eb47bea1..5576c8769 100644 --- a/beecrypt/dldp.c +++ b/beecrypt/dldp.c @@ -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> * @@ -31,9 +31,17 @@ #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); } diff --git a/beecrypt/dldp.h b/beecrypt/dldp.h index 62a5504d8..8775d1f5d 100644 --- a/beecrypt/dldp.h +++ b/beecrypt/dldp.h @@ -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> * @@ -34,11 +34,11 @@ /* * 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 } diff --git a/beecrypt/dlkp.h b/beecrypt/dlkp.h index c484f4376..0361630d2 100644 --- a/beecrypt/dlkp.h +++ b/beecrypt/dlkp.h @@ -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 } diff --git a/beecrypt/dlpk.h b/beecrypt/dlpk.h index 029d62edc..0db06e610 100644 --- a/beecrypt/dlpk.h +++ b/beecrypt/dlpk.h @@ -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 } diff --git a/beecrypt/dlsvdp-dh.h b/beecrypt/dlsvdp-dh.h index a580ab674..c0f091ad9 100644 --- a/beecrypt/dlsvdp-dh.h +++ b/beecrypt/dlsvdp-dh.h @@ -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 index 000000000..540cfea1a --- /dev/null +++ b/beecrypt/docs/.cvsignore @@ -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 diff --git a/beecrypt/docs/Makefile.in b/beecrypt/docs/Makefile.in index 6c5c81826..f6d2d995f 100644 --- a/beecrypt/docs/Makefile.in +++ b/beecrypt/docs/Makefile.in @@ -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 \ diff --git a/beecrypt/elgamal.c b/beecrypt/elgamal.c index 0edb6b889..de73584a6 100644 --- a/beecrypt/elgamal.c +++ b/beecrypt/elgamal.c @@ -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) @@ -57,43 +57,134 @@ #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; } diff --git a/beecrypt/elgamal.h b/beecrypt/elgamal.h index 973fa4559..d2ca7c873 100644 --- a/beecrypt/elgamal.h +++ b/beecrypt/elgamal.h @@ -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 } diff --git a/beecrypt/endianness.h b/beecrypt/endianness.h index e09e7b8db..be43260fb 100644 --- a/beecrypt/endianness.h +++ b/beecrypt/endianness.h @@ -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 } diff --git a/beecrypt/entropy.h b/beecrypt/entropy.h index 0952d3f80..71712c3de 100644 --- a/beecrypt/entropy.h +++ b/beecrypt/entropy.h @@ -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> * @@ -28,31 +28,46 @@ #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 diff --git a/beecrypt/fips180.c b/beecrypt/fips180.c index 4388ad144..cb9992f74 100644 --- a/beecrypt/fips180.c +++ b/beecrypt/fips180.c @@ -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> * @@ -32,36 +32,33 @@ #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; } diff --git a/beecrypt/fips180.h b/beecrypt/fips180.h index 64666e228..5d7d4d557 100644 --- a/beecrypt/fips180.h +++ b/beecrypt/fips180.h @@ -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 } diff --git a/beecrypt/fips186.c b/beecrypt/fips186.c index 2911b3510..90937f277 100644 --- a/beecrypt/fips186.c +++ b/beecrypt/fips186.c @@ -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> * @@ -30,7 +30,10 @@ #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 diff --git a/beecrypt/fips186.h b/beecrypt/fips186.h index 3d737c23f..a2ef44972 100644 --- a/beecrypt/fips186.h +++ b/beecrypt/fips186.h @@ -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 index 000000000..540cfea1a --- /dev/null +++ b/beecrypt/gas/.cvsignore @@ -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 diff --git a/beecrypt/gas/Makefile.in b/beecrypt/gas/Makefile.in index d16618b19..862033a30 100644 --- a/beecrypt/gas/Makefile.in +++ b/beecrypt/gas/Makefile.in @@ -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 \ diff --git a/beecrypt/hmac.c b/beecrypt/hmac.c index 80b68584f..4186998c7 100644 --- a/beecrypt/hmac.c +++ b/beecrypt/hmac.c @@ -3,7 +3,7 @@ * * HMAC message authentication code, code * - * Copyright (c) 1999-2000 Virtual Unlimited B.V. + * Copyright (c) 1999, 2000 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; diff --git a/beecrypt/hmac.h b/beecrypt/hmac.h index 540e28581..b973d31bf 100644 --- a/beecrypt/hmac.h +++ b/beecrypt/hmac.h @@ -3,7 +3,7 @@ * * HMAC message authentication code, header * - * Copyright (c) 1999-2000 Virtual Unlimited B.V. + * Copyright (c) 1999, 2000 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 } diff --git a/beecrypt/hmacmd5.h b/beecrypt/hmacmd5.h index 541847ac3..24d8e0a42 100644 --- a/beecrypt/hmacmd5.h +++ b/beecrypt/hmacmd5.h @@ -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 } diff --git a/beecrypt/hmacsha1.h b/beecrypt/hmacsha1.h index dab8000ac..acc30c72b 100644 --- a/beecrypt/hmacsha1.h +++ b/beecrypt/hmacsha1.h @@ -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 } diff --git a/beecrypt/hmacsha256.h b/beecrypt/hmacsha256.h index e59a332bf..7b42f82e7 100644 --- a/beecrypt/hmacsha256.h +++ b/beecrypt/hmacsha256.h @@ -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 } diff --git a/beecrypt/ltmain.sh b/beecrypt/ltmain.sh index 766732da8..2393e14db 100644 --- a/beecrypt/ltmain.sh +++ b/beecrypt/ltmain.sh @@ -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*)
+ *-*-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 index 000000000..540cfea1a --- /dev/null +++ b/beecrypt/masm/.cvsignore @@ -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 diff --git a/beecrypt/masm/Makefile.in b/beecrypt/masm/Makefile.in index 5eff34d58..12c006804 100644 --- a/beecrypt/masm/Makefile.in +++ b/beecrypt/masm/Makefile.in @@ -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 \ diff --git a/beecrypt/md5.c b/beecrypt/md5.c index e87db2cf4..6561197c1 100644 --- a/beecrypt/md5.c +++ b/beecrypt/md5.c @@ -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; } diff --git a/beecrypt/md5.h b/beecrypt/md5.h index 361c5c1d6..c0fc7c769 100644 --- a/beecrypt/md5.h +++ b/beecrypt/md5.h @@ -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 } diff --git a/beecrypt/memchunk.c b/beecrypt/memchunk.c index 6edf7c700..22a8662a0 100644 --- a/beecrypt/memchunk.c +++ b/beecrypt/memchunk.c @@ -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@*/ } diff --git a/beecrypt/memchunk.h b/beecrypt/memchunk.h index f8495b9e1..a37fbbd3f 100644 --- a/beecrypt/memchunk.h +++ b/beecrypt/memchunk.h @@ -32,19 +32,22 @@ 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 } diff --git a/beecrypt/mp32.c b/beecrypt/mp32.c index cd29c8731..e794770bf 100644 --- a/beecrypt/mp32.c +++ b/beecrypt/mp32.c @@ -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 diff --git a/beecrypt/mp32.h b/beecrypt/mp32.h index 972fe27a7..78e37d1fd 100644 --- a/beecrypt/mp32.h +++ b/beecrypt/mp32.h @@ -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 } diff --git a/beecrypt/mp32barrett.c b/beecrypt/mp32barrett.c index 67e324b6a..bd7ac2772 100644 --- a/beecrypt/mp32barrett.c +++ b/beecrypt/mp32barrett.c @@ -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> * @@ -35,16 +35,203 @@ #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@*/ } diff --git a/beecrypt/mp32barrett.h b/beecrypt/mp32barrett.h index ad272783c..57e421895 100644 --- a/beecrypt/mp32barrett.h +++ b/beecrypt/mp32barrett.h @@ -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> * @@ -32,10 +32,8 @@ 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 } diff --git a/beecrypt/mp32number.c b/beecrypt/mp32number.c index ede59b042..6b67af52f 100644 --- a/beecrypt/mp32number.c +++ b/beecrypt/mp32number.c @@ -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> * @@ -29,32 +29,60 @@ #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@*/ diff --git a/beecrypt/mp32number.h b/beecrypt/mp32number.h index 3ada02d34..494b3b4ca 100644 --- a/beecrypt/mp32number.h +++ b/beecrypt/mp32number.h @@ -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> * @@ -26,12 +26,14 @@ #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 } diff --git a/beecrypt/mp32prime.c b/beecrypt/mp32prime.c index c81eca1c2..8826075ab 100644 --- a/beecrypt/mp32prime.c +++ b/beecrypt/mp32prime.c @@ -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> * @@ -30,7 +30,10 @@ #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); diff --git a/beecrypt/mp32prime.h b/beecrypt/mp32prime.h index c2ff58899..10c5a6632 100644 --- a/beecrypt/mp32prime.h +++ b/beecrypt/mp32prime.h @@ -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 } diff --git a/beecrypt/mtprng.h b/beecrypt/mtprng.h index 1efeca1d8..bc73cbb9f 100644 --- a/beecrypt/mtprng.h +++ b/beecrypt/mtprng.h @@ -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 index 000000000..540cfea1a --- /dev/null +++ b/beecrypt/mwerks/.cvsignore @@ -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 diff --git a/beecrypt/mwerks/Makefile.in b/beecrypt/mwerks/Makefile.in index 023fa7997..3f654aaf5 100644 --- a/beecrypt/mwerks/Makefile.in +++ b/beecrypt/mwerks/Makefile.in @@ -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 \ diff --git a/beecrypt/rsa.c b/beecrypt/rsa.c index 79320c7a3..5795bc73c 100644 --- a/beecrypt/rsa.c +++ b/beecrypt/rsa.c @@ -29,8 +29,12 @@ #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) { diff --git a/beecrypt/rsa.h b/beecrypt/rsa.h index 2722620f4..4b4c8c574 100644 --- a/beecrypt/rsa.h +++ b/beecrypt/rsa.h @@ -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 } diff --git a/beecrypt/rsakp.c b/beecrypt/rsakp.c index 7874fb2a0..33bc30397 100644 --- a/beecrypt/rsakp.c +++ b/beecrypt/rsakp.c @@ -34,6 +34,12 @@ #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); diff --git a/beecrypt/rsakp.h b/beecrypt/rsakp.h index cac05cc1c..911f2f604 100644 --- a/beecrypt/rsakp.h +++ b/beecrypt/rsakp.h @@ -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 } diff --git a/beecrypt/rsapk.h b/beecrypt/rsapk.h index f1f784acb..7a165e9e4 100644 --- a/beecrypt/rsapk.h +++ b/beecrypt/rsapk.h @@ -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 } diff --git a/beecrypt/sha256.c b/beecrypt/sha256.c index 0fd463523..0d0c9ae51 100644 --- a/beecrypt/sha256.c +++ b/beecrypt/sha256.c @@ -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; } diff --git a/beecrypt/sha256.h b/beecrypt/sha256.h index 5b1672d57..9e4751957 100644 --- a/beecrypt/sha256.h +++ b/beecrypt/sha256.h @@ -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 index 000000000..540cfea1a --- /dev/null +++ b/beecrypt/tests/.cvsignore @@ -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 diff --git a/beecrypt/tests/Makefile.in b/beecrypt/tests/Makefile.in index 61bff83b3..420ad6bed 100644 --- a/beecrypt/tests/Makefile.in +++ b/beecrypt/tests/Makefile.in @@ -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 \ diff --git a/beecrypt/timestamp.c b/beecrypt/timestamp.c index 86462f2a7..d4eead2a3 100644 --- a/beecrypt/timestamp.c +++ b/beecrypt/timestamp.c @@ -3,7 +3,7 @@ * * Java compatible 64-bit timestamp, code * - * Copyright (c) 1999-2000 Virtual Unlimited B.V. + * Copyright (c) 1999, 2000 Virtual Unlimited B.V. * * Author: Bob Deblier <bob@virtualunlimited.com> * @@ -36,15 +36,22 @@ 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; } diff --git a/beecrypt/timestamp.h b/beecrypt/timestamp.h index efb1d1e99..364273d91 100644 --- a/beecrypt/timestamp.h +++ b/beecrypt/timestamp.h @@ -3,7 +3,7 @@ * * Java-compatible 64 bit timestamp, header * - * Copyright (c) 1999-2000 Virtual Unlimited B.V. + * Copyright (c) 1999, 2000 Virtual Unlimited B.V. * * Author: Bob Deblier <bob@virtualunlimited.com> * @@ -28,17 +28,26 @@ #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 } |